我需要我的应用程序运行多个mp3的方法。每个mp3必须在之前的mp3之后播放。 我创造了播放声音的方法
<div style="width: 300px">
<a href="#" style="max-width:100%">
<img style="width:100%;" src="https://upload.wikimedia.org/wikipedia/commons/1/17/Gustave_Caillebotte_-_Paris_Street%3B_Rainy_Day_-_Google_Art_Project.jpg" alt="main">
</a>
</div>
然后我在OnCreate中调用该函数。我使用while循环播放所有mp3文件。但声音互相混淆。如果我使用循环和isPlaying方法,应用程序没有响应。
void PlaySentence(String path){
try {
AssetFileDescriptor afd = getAssets().openFd(path);
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
player.prepare();
player.start();
}
catch (Exception ex)
{
if (BuildConfig.DEBUG)
Log.d(TAGName, ex.getMessage());
}
}
我也使用以下方法避免混音。它适用于一个mp3
while (currentMp3<totalMp3) {
if (!player.isPlaying()) {
PlaySentence();
}
}
这样做的最佳解决方案是什么?
答案 0 :(得分:1)
您应该使用setOnCompletionListener,但是将您的播放器声明为类成员,在onCreate中初始化它,并且不为每个mp3创建一个新的播放器。 PlaySentence应该是:
timetuple()