gpt4 book ai didi

android - 在 BaseAdapter android 中停止媒体播放器

转载 作者:行者123 更新时间:2023-11-29 00:15:45 25 4
gpt4 key购买 nike

我有一个带有 ListViewFragment,它是一个声音列表,以这种方式填充:

MediaPlayer mMediaPlayer;

listview.setAdapter(new ListAdapter(getActivity(), tit, desc, songs, filenames, mMediaPlayer));

MediaPlayer 作为参数给出,因为我希望当按下后退按钮或应用程序进入后台时,播放器将停止播放。所以我在我的 fragment 中覆盖了 onPause 和 onDestroy 方法,但这不起作用。即使应用程序关闭,声音也会继续播放。这是我的代码:

         @Override
public void onDestroy() {
// TODO Auto-generated method stub
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
super.onDestroy();
}

@Override
public void onPause() {
// TODO Auto-generated method stub
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
super.onPause();
}

我在 BaseAdapter 类中以这种方式播放声音:

public void playSound2(int pos){

if(isPlaying){
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
isPlaying = false;

}
mMediaPlayer = MediaPlayer.create(context, songs[pos]);
mMediaPlayer.start();
isPlaying = true;

}

你有什么建议吗?谢谢。

最佳答案

我的第一个建议是:不要使用适配器与媒体播放器交互。相反,将项目点击监听器附加到您的 ListView ,如下所示

listView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
...
}});

然后在 onItemClick 回调中用媒体播放器做任何你想做的事情。

也就是说,你应该在你的 onclicklistener 中重置你的媒体播放器,就像这样

try {
mPlayer.reset();
mPlayer.setDataSource(trackToBePlayed); //trackToBePlayed is dependent on the select position
mPlayer.setOnPreparedListener(mPreparedListener);
mPlayer.prepareAsync();

} catch (IOException e) {

} catch(IllegalArgumentException e) {

}

在 mPreparedListener 中,准备就绪后,您就可以

mPreparedListener = new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
};

这应该足以为您指明正确的方向:)

关于android - 在 BaseAdapter android 中停止媒体播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27005488/

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