gpt4 book ai didi

android - 如何在 View 分页器中的 fragment 内处理MediaPlayer对象

转载 作者:行者123 更新时间:2023-12-02 23:39:19 25 4
gpt4 key购买 nike

我有保存片段的viewpager,每个片段都有MediaPlayer对象,即每个片段都有音频附加到它。我的要求是,如果我滑动Viewpager,当前的片段媒体播放器应该停止并且下一个片段媒体播放器应该播放。如果我向后滑动viewpager,则当前的片段媒体播放器应停止并且先前的片段媒体播放器应启动。不必在每个片段上都附加音频,这就是为什么每个片段都具有自己的媒体播放器对象,而我已经检查了音频以处理它。到目前为止,我已经尝试下面的代码

在每个片段中进行可见性检查并相应地播放音频,

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
if (mPlayer != null ) {
mPlayer.start();
}
} else {
if (mPlayer != null && mPlayer.isPlaying()) {
mPlayer.pause();
mPlayer.seekTo(0);
}
}
}

如果我在片段的OnStop中释放媒体播放器对象,那么如果我再次遇到相同的片段,音频将停止工作。
  @Override
public void onStop() {
if (mPlayer != null && mPlayer.isPlaying()) {
mPlayer.stop();
mPlayer.reset(); // Might not be necessary, since release() is called right after, but it doesn't seem to hurt/cause issues
mPlayer.release();
mPlayer = null;
}
super.onStop();
}

如何解决呢?我不知道如何在viewpager片段中控制媒体播放器。

最佳答案

最好在片段中重写onPause()和onResume()。并且我们需要为媒体播放器保存当前位置。因此,我使用共享首选项来保存媒体播放器的位置。
onCreateView, mediaPlayer_position = getActivity().getSharedPreferences("PLAY_PAUSE", Activity.MODE_PRIVATE).getInt("CHECK_PLAY_PAUSE", 0);

@Override
public void onResume() {
super.onResume();

int position = getActivity().getSharedPreferences("PLAY_PAUSE", Activity.MODE_PRIVATE).getInt("CHECK_PLAY_PAUSE", 0);
if(position > 0) {
try {
mediaPlayer.setDataSource(mp3_link); //mp3_link from url to mediaplayer data source
mediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}

mediaPlayer.seekTo(position);
mediaPlayer.start();
}
}

@Override
public void onPause() {
super.onPause();
if(mediaPlayer.isPlaying()) {
mediaPlayer_position = mediaPlayer.getCurrentPosition();
getActivity().getSharedPreferences("PLAY_PAUSE", Context.MODE_PRIVATE).edit().putInt("CHECK_PLAY_PAUSE", mediaPlayer_position).apply();
mediaPlayer.pause();
}
}

引用:“ https://www.hrupin.com/2011/02/example-of-streaming-mp3-mediafile-with-android-mediaplayer-class

关于android - 如何在 View 分页器中的 fragment 内处理MediaPlayer对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40810042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com