【问题标题】:Two instances of Android mediaplayer cause odd issuesAndroid 媒体播放器的两个实例导致奇怪的问题
【发布时间】:2017-07-01 06:52:26
【问题描述】:

我希望有人可以帮助我理解我在 Mediaplayer 类中看到的问题。

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

我发现 Android 媒体播放器类提供了此功能,并创建了一个测试应用程序来执行此操作,只需创建两个媒体播放器实例。

例如...

MediaPlayer mMediaPlayer1,mMediaPlayer2;

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

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

发生的情况是,第二个或第一个音轨的音量突然减小到零。我可以看到媒体播放器仍在“播放”,因为我设置了几个进度条来跟踪其进度,但您什么也听不到。

我在 OnePlus One 和 OnePlus X 手机上都看到了这一点。在我的华硕平板电脑和 Smasung A3 手机上,它运行良好。它也与操作系统版本无关,因为我在 4.4.2、5、6 和 7 上尝试过,结果好坏参半。它肯定似乎与硬件有关。

我也看到了描述这个问题的相关帖子,但到目前为止还没有一个关于导致它的答案的帖子。

谁能解释这一点或阐明这个问题?即使只是为了了解我所做的事情的局限性?

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

提前谢谢...

【问题讨论】:

    标签: java android android-mediaplayer


    【解决方案1】:

    为了您混合音乐的目标,您可以开发自己的“混音器”来处理原始音频数据。

    步骤是:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-18
        相关资源
        最近更新 更多