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

How can i stop playing a song when another song start playing in Android

大家好,我是一个包含项目的列表视图。当你点击一个项目时,你会听到一首歌,但如果你点击另一个项目,第一首歌不会停止它同时播放两首歌曲如果我点击第二首歌曲或停止第二首歌曲,我怎么能停止第一首歌曲如果我点击第一首歌曲

我的代码

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

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

您必须 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();
    });

你可以检查MediaPlayer是否正在播放然后停止或释放它然后播放新歌这样

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

希望它的工作;

您正在 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;
            }
        });

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