MediaPlayer.isPlaying()不会返回True

时间:2017-05-05 12:14:18

标签: java android media-player android-mediaplayer

我有问题。 我正在使用mediaPlayer.isPlaying()命令,但从不返回true。 当音频播放时,它仍然允许另一个音频与第一个音频一起播放。 我已经使用了以下命令:

1 -

If (mediaPlayer.isPlaying () == true)
                {
                    MediaPlayer.stop ();
                    MediaPlayer.release ();

                } Else if (mediaPlayer.isPlaying () == false)
                {
                    PlaySom ();
                }

2 -

If (! (MediaPlayer.isPlaying ()))
                {
                    PlaySom ();
                }

但没有结果,同时播放了几个音频,我希望你只播放一个。

是否有人知道该问题的任何解决方案或mediaPlayer.isPlaying()命令的替代方法?

非常感谢!!!

我的代码:

private static MediaPlayer mediaPlayer;

// EVENTO DE CLIQUE

    lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        mediaPlayer = MediaPlayer.create(MainActivity.this, caminhoAudio[position]);

            if (!(mediaPlayer.isPlaying()))
            {
                tocarSom();
                Toast.makeText(getApplicationContext(),"Aguarde o término do áudio para executar o outro.",Toast.LENGTH_LONG).show();
            }
        }
        });

// INICIAR O SOM

public void tocarSom() {

        if (mediaPlayer != null)
        {
        mediaPlayer.start();
        }

        // LIBERAR MEMÓRIA
        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mediaPlayer) {
                mediaPlayer.release();

            };
        });

    }

1 个答案:

答案 0 :(得分:0)

回答这个问题是因为如果有人可以从我的回答中得到帮助...

您需要像这样创建顶级(就在类声明下方)媒体播放器

    private val player =
       MediaPlayer().apply {
       setOnPreparedListener { start() }
       setOnCompletionListener { reset() }
   }

在此之后创建播放器声音方法以播放存储中的音频

    private fun playBeats(context: Context, id: Uri)  {
         player.run {
             reset()
             setDataSource(context,id)
             prepareAsync()
         }
     }

如果您喜欢我的回答,请找到我的 YouTube 频道并订阅以帮助我..

YouTube 频道名称:codebage