Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 媒体播放器seekTo(位置)工作不正常_Android_Android Mediaplayer_Seekbar - Fatal编程技术网

Android 媒体播放器seekTo(位置)工作不正常

Android 媒体播放器seekTo(位置)工作不正常,android,android-mediaplayer,seekbar,Android,Android Mediaplayer,Seekbar,我正在尝试使用MediaPlayer从本地存储器播放歌曲。播放歌曲工作正常,但当我尝试更改mediaPlayer.seekTo(p)时,使用seekBaronProgressChangedlistener,它总是重新启动歌曲,而不是从搜索位置开始。这不是一个重复的问题,我一直在寻找解决方案,但对我来说没有任何效果 播放歌曲的代码: public void playSong(String path) { try { mediaPlayer.reset();

我正在尝试使用
MediaPlayer
从本地存储器播放歌曲。播放歌曲工作正常,但当我尝试更改mediaPlayer.seekTo(p)时,使用seekBar
onProgressChanged
listener,它总是重新启动歌曲,而不是从搜索位置开始。这不是一个重复的问题,我一直在寻找解决方案,但对我来说没有任何效果

播放歌曲的代码:

    public void playSong(String path) {

    try {

        mediaPlayer.reset();
        mediaPlayer.setDataSource(getContext(), Uri.parse(path));

        mediaPlayer.prepareAsync();

        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                Log.d(TAG, "onPrepared: ");
                mediaPlayer.start();
            }
        });


    } catch (IOException e) {
        e.printStackTrace();
    }

}
public void circularSeekBarChangeListener(CircularSeekBar circularSeekBar) {

    circularSeekBar.setOnSeekBarChangeListener(new CircularSeekBar.OnCircularSeekBarChangeListener() {
        @Override
        public void onProgressChanged(CircularSeekBar circularSeekBar, float progress, boolean fromUser) {
            Log.d(TAG, "onProgressChanged: P2 " + progress);

            if (fromUser) {
                int p = (int) progress;
                Log.d(TAG, "onProgressChanged: "+mediaPlayer.getCurrentPosition());
                mediaPlayer.seekTo(p);
                Log.d(TAG, "onProgress1111  "+mediaPlayer.getCurrentPosition());
            }

        }

        @Override
        public void onStopTrackingTouch(CircularSeekBar seekBar) {

        }

        @Override
        public void onStartTrackingTouch(CircularSeekBar seekBar) {

        }
    });

}
更改搜索栏位置侦听器:

    public void playSong(String path) {

    try {

        mediaPlayer.reset();
        mediaPlayer.setDataSource(getContext(), Uri.parse(path));

        mediaPlayer.prepareAsync();

        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                Log.d(TAG, "onPrepared: ");
                mediaPlayer.start();
            }
        });


    } catch (IOException e) {
        e.printStackTrace();
    }

}
public void circularSeekBarChangeListener(CircularSeekBar circularSeekBar) {

    circularSeekBar.setOnSeekBarChangeListener(new CircularSeekBar.OnCircularSeekBarChangeListener() {
        @Override
        public void onProgressChanged(CircularSeekBar circularSeekBar, float progress, boolean fromUser) {
            Log.d(TAG, "onProgressChanged: P2 " + progress);

            if (fromUser) {
                int p = (int) progress;
                Log.d(TAG, "onProgressChanged: "+mediaPlayer.getCurrentPosition());
                mediaPlayer.seekTo(p);
                Log.d(TAG, "onProgress1111  "+mediaPlayer.getCurrentPosition());
            }

        }

        @Override
        public void onStopTrackingTouch(CircularSeekBar seekBar) {

        }

        @Override
        public void onStartTrackingTouch(CircularSeekBar seekBar) {

        }
    });

}

我也面临同样的问题。你有什么解决办法吗?我也有同样的问题,但通过视频-你有解决办法吗?