3

我只是问这个问题,因为我在互联网上找不到任何关于它的信息,可能是因为它是一种罕见的情况。

问题是我有一个使用多个 MediaPlayers 播放 mp3 样本的钢琴应用程序。这是获得快速响应的唯一方法,而不必像在声音池中那样将它们全部加载到内存中,或者求助于本机代码合成器。

它工作得很好,我在普通的安卓设备上没有任何问题。但是,在 Amazon Kindle Fire(第一版)上,我在弹奏几个键后会发出奇怪的声音。看起来 MediaPlayer 本机实现在某种程度上存在一些错误。我没有得到真正的错误,但声音被切断或产生乱码的奇怪渲染噪音。这当然让我的用户不满意,并且给我留下了一个低评价的应用程序。

我尝试使用 .ogg 示例切换渲染引擎。这些效果很好,不再有奇怪的噪音,但它们也被切断了,使它不是一个很好的替代品。

我发现的唯一线索是一些关于无效数据的错误消息,我有时会收到。我会尝试看看我是否可以修复那个,但我担心它与它无关。

有人在 Kindle Fire(或其他平台)上遇到过类似问题吗?

更新 似乎有时会弹出有关不正确数据的奇怪错误确实导致了这种情况。我正在使用 AssetFileDescriptors 加载原始资源文件。这是完全相同的东西MediaPlayer.create(R.raw.mp3file)。我刚刚用 sdcard 上的样本进行了测试,现在我没有遇到任何奇怪的音频问题。所以,我想我真的可以解决这个问题。:)

4

1 回答 1

0

好吧,解决方案非常简单。而且我现在也明白为什么它很少遇到了。

我发现我没有完全复制MediaPlayer.create(R.raw.resid)源代码。我忘记AssetFileDescriptor在每次使用后关闭它们,并且只是重复使用它们。不知何故,这不是一个好习惯,切换到关闭它们修复了它!

于 2012-12-19T16:27:27.167 回答