SeekBar无法在Android中使用在线流媒体

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";

SeekBar不工作了。在应用程序中,我尝试从源代码播放音频,也尝试从SeekBar播放音频。但SeekBar并没有带着音频文件四处移动

在应用程序中,我尝试播放源音频,也尝试播放SeekBar。但SeekBar并没有带着音频文件四处移动

这是我的密码:

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的问题。你能帮我吗。。。这是我的问题