我有问题。 我正在使用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();
};
});
}
答案 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