【问题标题】:Seekbar not updating for Mediaplayer Android Lollipop API Level 21未针对 Mediaplayer Android Lollipop API 级别 21 更新 Seekbar
【发布时间】:2015-02-01 10:26:25
【问题描述】:

我正在使用 Surfaceview 播放视频,而 mediaplayer 也在寻求更新声音和视频。但是对于棒棒糖,当我尝试使用 seekto 时,只有音频会发生变化,但视频会保持在相同的位置。谁能帮忙解释一下为什么 Lollipop 会导致这个问题?

附:在棒棒糖之前的版本中,相同的代码可以完美运行。 . 编辑:在 Facebook 和 MX 播放器中搜索视频时观察到相同的行为。但在 MX 播放器中,从 HW 更改为 SW 编码器寻找工作正常。如何在我的代码中修复它?

@Override
public void onProgressChanged(SeekBar bar, int progress, boolean fromuser) {
    long duration = mPlayer.getDuration();
    long newposition = (duration * progress) / 1000L;
    mPlayer.seekTo((int) newposition);
    Log.d(TAG, "progress changed");
    // mPlayer.setDisplay();
    // mPlayer.start(); 
}

片段:

    vidSurface = (SurfaceView) getActivity().findViewById(R.id.surfView);
    frame = (FrameLayout) getActivity().findViewById(
            R.id.videoSurfaceContainer);
    vidHolder = vidSurface.getHolder();
    vidHolder.addCallback(this);
    mediaPlayer = new MediaPlayer();
    mediaPlayer.setOnErrorListener(this);
    mediaPlayer.setOnPreparedListener(this);
    mediaPlayer.setOnCompletionListener(this);
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

@Override
public void surfaceCreated(SurfaceHolder holder) {
    if (mediaPlayer == null)
        mediaPlayer = new MediaPlayer();

    playVideo();

}


public void playVideo() {

    mediaPlayer.reset();
    mediaPlayer.setDisplay(vidHolder);
    VideosModel model = null;

        model = videosList.get(videoPosition);


    videoTitle = model.getVideoTitle();
    tvTitle.setText(videoTitle);

    try {
        // mediaPlayer.setDisplay(vidHolder);
        mediaPlayer
                .setDataSource(getActivity(), Uri.parse(model.getPath()));
        tryToGetAudioFocus();
        mediaPlayer.prepareAsync();

    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

【问题讨论】:

标签: android android-mediaplayer surfaceview android-5.0-lollipop


【解决方案1】:

通过在开发者选项中禁用 Nu 播放器解决了这个问题。现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    相关资源
    最近更新 更多