我希望有人可以帮我理解我在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。
提前致谢...
答案 0 :(得分:0)
为了您的目标混合音乐,您可以开发自己的“混音器”,它将与原始音频数据一起使用。
步骤是:
这里有很多工作,但它可以在任何地方使用!
答案 1 :(得分:0)
感谢您的建议。最终找到了解决方法。如果您使用较新的AudioAttributes选项(API 21及更高版本)并设置FLAG_AUDIBILITY_ENFORCED标志,那么它似乎会强制我遇到问题的设备来播放流....感谢您寻找帮助!