android - 如何在 ListView 项目单击上使用媒体播放器的单个实例

标签 android listview singleton android-mediaplayer

我想在用户触摸 ListView 中的项目时播放声音。我制作了 ListView ,以下是项目单击监听器的单击实现。

listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapter, View view,int pos, long id) {

 //Here I am getting getting sound bytes from raw folder with name
 // like "a"+pos and using getResourse

  mp.create(context, resid);
  mp.start();

    }
 });

我对android的MediaPlayer了解不多

我的问题是我应该如何使用媒体播放器播放单个声音实例。我使用了媒体播放器(参见上面的代码),但如果用户点击多次,它会播放多个声音实例。如果我没记错的话,最好在全局级别调用 mediaplayer.create() 。但是我将如何传递媒体文件的资源 ID。

最佳答案

首先,您需要检查每个项目点击时 MediaPlayer 是否为 null。

    if(mp!=null) {
        try{
            mp.stop();
            mp.release();
        } catch(Exception e){
            Log.w("Exception", e);
        }
    }

然后您可以使用相同的媒体播放器播放另一种声音

mp = MediaPlayer.create(YOUR_ACTIVITY_NAME.this, YOUR_SOUND_FILE);
mp.prepare();
mp.start();

希望这能帮助您解决问题。

可能这不是最好的方法,如果有人知道其他方法,请更新我。

谢谢!

关于android - 如何在 ListView 项目单击上使用媒体播放器的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12322752/

相关文章:

Android 模拟器错误 "emulator: ERROR: the user data image is used by another emulator. aborting"

java - Android:使用 Apache 服务器将图像上传到 Web 服务时出现问题

android - 如何在@android :id/list 上使用 setOnItemClickListener()

java - 当我的 ListFragment 从返回堆栈返回到布局时,如何刷新我的 ListFragment?

haskell - 使 "The Singletons Paper"保持最新。如何使用单例库实现 AChar 数据类型

TDD 友好类单例类

c++ - 如何使 C++ 类生成不可克隆的对象

android - 自定义 Android WebView 以在内部打开除 YouTube 链接之外的所有链接

android - Renderscript 不工作的设备列表

android - 用于聊天应用程序的 RecyclerView 与 ListView