android中媒体播放器问题的多个实例

android中媒体播放器问题的多个实例,android,media-player,multiple-instances,Android,Media Player,Multiple Instances,我正在Android中与MediaPlayer合作。我有来自服务器的所有歌曲名称和歌曲URL列表。当我点击任何项目时,MediaPlayer会播放来自服务器的歌曲。这是我的代码,用于单击“Listview”项播放歌曲 现在这个代码的问题是当我连续点击歌曲时,同一首歌曲会多次播放。如何避免这种多实例问题。我认为如果(mediaPlayer!=null&&mediaPlayer.isplay())在您单击太快而无法播放同一首歌曲,然后mediaPlayer=new mediaPlayer()时不正确

我正在Android中与MediaPlayer合作。我有来自服务器的所有歌曲名称和歌曲URL列表。当我点击任何项目时,MediaPlayer会播放来自服务器的歌曲。这是我的代码,用于单击“Listview”项播放歌曲

现在这个代码的问题是当我连续点击歌曲时,同一首歌曲会多次播放。如何避免这种多实例问题。

我认为如果(mediaPlayer!=null&&mediaPlayer.isplay())在您单击太快而无法播放同一首歌曲,然后
mediaPlayer=new mediaPlayer()时不正确
正在创建新实例并播放歌曲,这将导致多次听到同一首歌曲。调试并检查代码是否输入该
if(条件)

    txtEndTimingForMediaPlayer.setText("");
    txtStarTimingForMediaPlayer.setText("");
    seekBarPlayer.setProgress(0);
 // this code is for stop current playing song and release media player
    if(mediaPlayer!=null && mediaPlayer.isPlaying()){
        mediaPlayer.stop();
        mediaPlayer.reset();
        mediaPlayer.release();
        mediaPlayer=null;
    }

    // start new song for play
    mediaPlayer=new MediaPlayer();
    Uri myUri1 = Uri.parse(url);

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
        mediaPlayer.reset();
        mediaPlayer.setDataSource(getActivity(), myUri1);
        mediaPlayer.prepareAsync();

        mediaPlayer.setOnPreparedListener(new OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer player) {
                playPause=true;
                player.start();
                mediaFileLengthInMilliseconds = player.getDuration(); 
            }
        });

        mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                playPause=false;
                btnPlayPause.setBackgroundResource(R.drawable.icon_play);                   
            }
        });
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }