SeekBar无法在Android中使用在线流媒体
SeekBar不工作了。在应用程序中,我尝试从源代码播放音频,也尝试从SeekBar播放音频。但SeekBar并没有带着音频文件四处移动 在应用程序中,我尝试播放源音频,也尝试播放SeekBar。但SeekBar并没有带着音频文件四处移动 这是我的密码:SeekBar无法在Android中使用在线流媒体,android,android-mediaplayer,media,seekbar,Android,Android Mediaplayer,Media,Seekbar,SeekBar不工作了。在应用程序中,我尝试从源代码播放音频,也尝试从SeekBar播放音频。但SeekBar并没有带着音频文件四处移动 在应用程序中,我尝试播放源音频,也尝试播放SeekBar。但SeekBar并没有带着音频文件四处移动 这是我的密码: public class TrackDetailActivity extends AppCompatActivity { private static final String TAG = "TrackDetailActivity";
public class TrackDetailActivity extends AppCompatActivity {
private static final String TAG = "TrackDetailActivity";
private TextView mArtistName, mTrackName;
private ImageView mAlbumArt;
private MediaPlayer mMediaPlayer;
private ImageView mPlayerPlay, mStopPlayer;
private SeekBar mSeekBar;
public static final String KEY_TRACK = "trackObj";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.track_detail_new);
mArtistName = (TextView) findViewById(R.id.tv_artist_name);
mTrackName = (TextView) findViewById(R.id.tv_track_name);
mAlbumArt = (ImageView) findViewById(R.id.iv_album_art);
mPlayerPlay = (ImageView) findViewById(R.id.playerControl);
mStopPlayer = (ImageView) findViewById(R.id.stopControl);
mSeekBar = (SeekBar) findViewById(R.id.seek);
Intent intent = getIntent();
final Track track = (Track) intent.getSerializableExtra(TrackDetailActivity.KEY_TRACK);
String trackName = track.getTrackName();
mTrackName.setText(trackName);
mArtistName.setText(track.getArtistName());
Log.d(TAG, "onCreate: " + track.getDuration());
GlideApp.with(this)
.asBitmap()
.load(track.getAlbumArtUrl())
.centerCrop()
.listener(requestListener)
.into(mAlbumArt);
//Toast.makeText(this, "Track: " + track.getTrackName(), Toast.LENGTH_SHORT).show();
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mMediaPlayer.start();
mSeekBar.setProgress(0);
mSeekBar.setMax(mediaPlayer.getDuration());
Log.d(TAG, "onPrepared: Max Seek: " + mediaPlayer.getDuration());
togglePlayPause();
}
});
mPlayerPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mMediaPlayer.isPlaying()) {
togglePlayPause();
mMediaPlayer.stop();
mMediaPlayer.reset();
} else {
togglePlayPause();
try {
mMediaPlayer.setDataSource(track.getPreviewUrl());
mMediaPlayer.prepareAsync();
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
Thread durationThread = new SeekThread();
durationThread.start();
}
public class SeekThread extends Thread {
@Override
public void run() {
try {
Thread.sleep(1000);
Log.d("SeekThread", "run: " + 1);
mSeekBar.setProgress(mMediaPlayer.getDuration());
Log.d("SeekThread", "run: " + mMediaPlayer.getCurrentPosition());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private void togglePlayPause() {
if (mMediaPlayer.isPlaying()) {
mMediaPlayer.pause();
mPlayerPlay.setImageResource(R.drawable.ic_action_play);
} else {
mMediaPlayer.start();
mPlayerPlay.setImageResource(R.drawable.ic_pause);
}
}
private RequestListener<Bitmap> requestListener = new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
setBlurredImage(resource);
return false;
}
};
private void setBlurredImage(Bitmap source) {
Bitmap blurredBitmap = NativeStackBlur.process(source, 50);
ImageView screenBg = (ImageView) findViewById(R.id.screen_bg);
screenBg.setImageBitmap(blurredBitmap);
}
}
公共类TrackDetailActivity扩展了AppCompatActivity{
私有静态最终字符串标记=“TrackDetailActivity”;
私有TextView mArtistName、mTrackName;
private ImageView mAlbumArt;
私有媒体层;
private ImageView mPlayerPlay,MSTopLayer;
私人SeekBar mSeekBar;
公共静态最终字符串键\u TRACK=“trackObj”;
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.track\u detail\u new);
mArtistName=(TextView)findViewById(R.id.tv\u艺术家\u姓名);
mTrackName=(TextView)findViewById(R.id.tv\u track\u name);
mAlbumArt=(ImageView)findViewById(R.id.iv\u album\u art);
mPlayerPlay=(ImageView)findViewById(R.id.playerControl);
mStopPlayer=(ImageView)findViewById(R.id.stopControl);
mSeekBar=(SeekBar)findViewById(R.id.seek);
Intent=getIntent();
最终曲目Track=(Track)intent.getSerializableExtra(TrackDetailActivity.KEY_Track);
String trackName=track.getTrackName();
mTrackName.setText(trackName);
setText(track.getArtistName());
d(标记“onCreate:+track.getDuration());
GlideApp.with(这个)
.asBitmap()
.load(track.getAlbumArtUrl())
.centerCrop()
.listener(请求侦听器)
.进入(马尔布马特);
//Toast.makeText(这个,“Track:+Track.getTrackName(),Toast.LENGTH_SHORT).show();
mMediaPlayer=新媒体播放器();
mmediplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mmediplayer.setOnPreparedListener(新的MediaPlayer.OnPreparedListener(){
@凌驾
已准备好公开作废(MediaPlayer MediaPlayer){
mmediplayer.start();
mSeekBar.setProgress(0);
mSeekBar.setMax(mediaPlayer.getDuration());
d(标记“onPrepared:Max Seek:”+mediaPlayer.getDuration());
切换播放暂停();
}
});
mPlayerPlay.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
if(mmediplayer.isPlaying()){
切换播放暂停();
mmediplayer.stop();
mmediplayer.reset();
}否则{
切换播放暂停();
试一试{
mmediplayer.setDataSource(track.getPreviewUrl());
mMediaPlayer.prepareAsync();
}捕获(例外e){
e、 printStackTrace();
}
}
}
});
Thread durationThread=new SeekThread();
durationThread.start();
}
公共类SeekThread扩展线程{
@凌驾
公开募捐{
试一试{
睡眠(1000);
Log.d(“SeekThread”,“run:+1”);
mSeekBar.setProgress(mmediplayer.getDuration());
d(“SeekThread”,“run:+mmediplayer.getCurrentPosition());
}捕捉(中断异常e){
e、 printStackTrace();
}
}
}
私有无效切换PlayPause(){
if(mmediplayer.isPlaying()){
暂停();
mPlayerPlay.setImageResource(R.drawable.ic\u action\u play);
}否则{
mmediplayer.start();
mPlayerPlay.setImageResource(R.drawable.ic_pause);
}
}
private RequestListener RequestListener=new RequestListener(){
@凌驾
public boolean onload失败(@Nullable glide,对象模型,目标,boolean isFirstResource){
返回false;
}
@凌驾
public boolean onResourceReady(位图资源、对象模型、目标、数据源数据源、boolean isFirstResource){
setbluredimage(资源);
返回false;
}
};
私有void setbluredimage(位图源){
位图模糊位图=NativeStackBlur.process(源代码,50);
ImageView屏幕bg=(ImageView)findViewById(R.id.screen\u bg);
screenBg.setImageBitmap(模糊位图);
}
}
请将以下代码与您的seekBar关联起来,这样就可以了
mSeekBar.setMax(mMediaPlayer.getDuration());
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
mSeekBar.setProgress(mMediaPlayer.getCurrentPosition());
}
}, 0, 10);
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mMediaPlayer.seekTo(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
你在seekbar线程中得到了多少?mSeekBar.setProgress(mmediplayer.getDuration());什么号码返回?你能用put logI检查一下吗?我面临SeekBar的问题。你能帮我吗。。。这是我的问题