[英]Unable to play two MediaPlayer at same time in Nexus 5
我正在尝试在服务中使用两个MediaPlayers
在后台播放一些音频。 如果我只想播放一个mp3,则一切正常,但是,如果我尝试使用MediaPlayer
两个实例同时播放两个mp3,则只有最后一个可以正常工作。 这很奇怪,因为它可以在模拟器和某些设备中使用,但是我无法使其在Nexus 5中运行。这是我用来创建两个MediaPlayer
实例的代码:
private void playWithPiano() {
mp1 = initializePlayer(filenameVoz); // filenameVoz is the mp3 file name in raw folder
mp2 = initializePlayer("base_piano");
mp1.start();
mp2.start();
}
private MediaPlayer initializePlayer(String filename) {
int identifier = getResources().getIdentifier(filename,
"raw", getPackageName());
MediaPlayer mp = MediaPlayer.create(this, identifier);
mp.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.d(TAG_LOG, "OnErrorListener");
stop();
return false;
}
});
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
stop();
}
});
return mp;
}
如果我评论mp2.start行,则可以收听mp1音频。 就像启动MediaPlayer一样,其他任何实例也都停止了,对此我将不胜感激。
我发现其他文章描述了Nexus 5设备中的相同问题,但还没有解决方案。 https://code.google.com/p/android/issues/detail?id=63099 https://code.google.com/p/android/issues/detail?id=62304我尝试使用seekTo(0)这些建议是在其中一个论坛中提出的,但是没有用,所以我尝试了另一种似乎是针对我的情况的解决方法。
我在Service
内使用它,而我的第二个MediaPlayer
只是播放一些背景音乐,因此我在第一个MediaPlayer
之后半秒启动了它,并且可以正常工作。
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
if (mp2 != null) mp2.start();
}
},
500
);
我仍然不知道为什么只有Nexus 5会出现这个问题,但我希望这可以对某人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.