【问题标题】:How to use single instance of Media Player on ListView item click如何在 ListView 项目单击上使用媒体播放器的单个实例
【发布时间】:2012-09-08 01:49:47
【问题描述】:

我想在用户触摸 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。

【问题讨论】:

    标签: android listview singleton android-mediaplayer


    【解决方案1】:

    首先,您需要在每次点击项目时检查 MediaPlayer 是否为空。

        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();
    

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

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

    谢谢!

    【讨论】:

    • 在课堂上我这样写 MediaPlayer mp = null。第一次代码可以工作,但是当用户点击第二次时 if 语句将不起作用,因为 mp 现在不为空,它不会停止声音
    • 根据您的需要更改条件。如果您想在媒体播放器已经在播放的情况下停止声音,那么您必须在 if 条件下输入mp.isPlaying()
    猜你喜欢
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 2015-11-20
    • 1970-01-01
    相关资源
    最近更新 更多