当另一首歌开始在Android中播放时,如何停止播放歌曲

时间:2017-06-21 07:34:52

标签: android listview android-mediaplayer

大家好,我是一个带有项目的listview。当您点击某个项目时,您听到了一首歌,但如果您点击另一个项目,则第一首歌曲不会停止同时播放两首歌曲如果我点击第二首歌曲或停止,如何停止第一首歌曲第二个,如果我点击第一首歌

我的代码

private MediaPlayer mp;

  final ListView listView = (ListView) findViewById(R.id.listView);
        listView.setAdapter(new CustomListAdapter(this, image_details));


        // When the user clicks on the ListItem
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) {

                Object o = listView.getItemAtPosition(position);
                final Songs titel = (titel) o;



                // get the club song from the arraylist
                mp = MediaPlayer.create(a.getContext(), titel.getClubLied());
                mp.start();

               mp.stop();
        });






 listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                mp.stop();
                return  true;
            }
        });

我如何解决这个问题,我使用了开始和停止所以当其他歌曲开始时它停止但是这不起作用

4 个答案:

答案 0 :(得分:1)

您可以将MediaPlayer声明为静态,这样一次只能运行1个项目。

答案 1 :(得分:0)

您必须release您的媒体播放器停止播放器,如下所示:

@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {

            Object o = listView.getItemAtPosition(position);
            final Songs titel = (titel) o;

            if (mp != null) {
                mp.stop();
                mp.reset();
                mp.release();
            }

            mp = MediaPlayer.create(a.getContext(), titel.getClubLied());
            mp.start();
    });

答案 2 :(得分:0)

您可以检查MediaPlayer是否正在播放然后先停止或释放它然后再播放新歌

           if (mp.isPlaying()) {
                 mp.stop();
                 mp.reset();
                 mp.release();
            }
            mp = MediaPlayer.create(a.getContext(), titel.getClubLied());
            mp.start();

希望它的工作;

答案 3 :(得分:0)

您正在setOnItemClickListener中创建媒体播放器,因此每当您单击项目时它会创建新的媒体播放器,因此前一个播放器继续播放,因此在setOnItemClickListener之外创建媒体播放器而不是仅传递歌曲数据..

private MediaPlayer mp;

  final ListView listView = (ListView) findViewById(R.id.listView);
        listView.setAdapter(new CustomListAdapter(this, image_details));

mp = new MediaPlayer();
        // When the user clicks on the ListItem
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) {

                Object o = listView.getItemAtPosition(position);
                final Songs titel = (titel) o;



                // get the club song from the arraylist
        mp.reset()
        mp.setDataSource(a.getContext(), uri);
        mp.prepare();
        mp.start();


        });






 listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                mp.stop();
                return  true;
            }
        });