0
我正在使用表面視圖播放視頻和mediaplayer seekto以更新聲音和視頻。但是對於棒棒糖,當我試圖只使用seekto音頻改變,但視頻保持在相同的位置。任何人都可以幫助爲什麼棒棒糖造成這個問題?Seekbar無法更新Mediaplayer Android Lollipop API級別21
P.S.在棒棒糖之前的版本中,相同的代碼完美地工作。 。 編輯:在Facebook尋找視頻時以及在MX播放器中觀察到相同的行爲。但在MX播放器上從硬件更改爲軟件編碼器尋求正常工作。如何解決它在我的代碼?
@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();
}
}
http://stackoverflow.com/questions/27122394/android-mediaextractor-mediacodec-seek聽起來很相似,雖然這是使用較低級別的API。 – fadden 2014-12-03 18:55:18
它沒有幫助:( – RisingUp 2014-12-04 12:21:42
如果有人可以提出一些解決方案? – RisingUp 2014-12-05 11:35:19