两个Android媒体播放器实例导致奇怪的问题

时间:2017-06-30 08:37:02

标签: java android android-mediaplayer

我希望有人可以帮我理解我在Mediaplayer课上遇到的问题。

我正在创建一个需要同时播放两个音乐文件的音乐应用。在其中一个用例场景中,我希望能够播放MP3曲目,然后启动另一个MP3,以便在第一个MP3的顶部以不同的音量开始播放。

我发现Android mediaplayer类提供了这项功能,并创建了一个测试应用程序,只需创建两个mediaplayer实例即可。

例如......

MediaPlayer mMediaPlayer1,mMediaPlayer2;

mMediaPlayer1 = new MediaPlayer();
mMediaPlayer2= new MediaPlayer();

我遇到的问题是,在模拟器中它工作正常,在大多数设备上我尝试它工作正常,但在一些测试设备上,当我尝试启动第二个媒体播放器/轨道时,我得到奇怪的结果。

第二音轨或第一音轨的音量突然减少到零。我可以看到媒体播放器仍在播放"因为我有几个进度条设置来跟踪它的进度,但你听不到任何声音。

我在OnePlus One和OnePlus X手机上都看到过这种情况。在我的华硕平板电脑和Smasung A3手机上它工作正常。它与操作系统版本无关,因为我在4.4.2,5,6和7上尝试过混合结果。它绝对看起来与硬件有关。

我也看过有关这个问题的相关帖子,但到目前为止还没有找到导致它的原因的答案。

任何人都可以解释这个或解决问题吗?即使只是了解我正在做的事情的局限性呢?

仅供参考 - 我确实看过Soundpool但不能使用它,因为我使用的剪辑大于1Mb。

提前致谢...

2 个答案:

答案 0 :(得分:0)

为了您的目标混合音乐,您可以开发自己的“混音器”,它将与原始音频数据一起使用。

步骤是:

这里有很多工作,但它可以在任何地方使用!

答案 1 :(得分:0)

感谢您的建议。最终找到了解决方法。如果您使用较新的AudioAttributes选项(API 21及更高版本)并设置FLAG_AUDIBILITY_ENFORCED标志,那么它似乎会强制我遇到问题的设备来播放流....感谢您寻找帮助!