Android 某些设备上的 SoundPool 问题

Android SoundPool problem on some devices

大家好,我正在尝试制作一个简单的钢琴应用程序,对于每个音符,我都有一个 .wav 文件,并且我正在使用 soundpool class 来播放它。

但是

在几个小米设备和华硕 zenfone 上,我只能听到一种白噪音,这非常烦人,尽管我努力了,但我在网上找不到任何解决方案,请帮助我!! ))

在这里我声明了 class 范围内的 aAttributes 和 soundPool 对象:

private SoundPool soundPool;
private AudioAttributes aAttributes;
volumeNote = 1.0f;
volumeFeedBack = 0.6f;

这里是 onCreate 方法的代码:

aAttributes = new AudioAttributes.Builder()
                .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                .setUsage(AudioAttributes.USAGE_GAME)
                .build();
soundPool = new SoundPool.Builder()
                .setMaxStreams(10)
                .setAudioAttributes(aAttributes)
                .build();

这里是 onClick 方法的代码示例:

case R.id.btFaLow:
                    soundPool.play(faL,volumeNote,volumeNote,0,0,1);
                    break;

我希望这些信息可以帮助找到问题所在。提前谢谢大家!

下面link有一些实用的建议。

Android can't play some wav file with soundpool?

就个人而言,我将 Soundpool 与 .mp3 文件一起使用,没有出现白噪声问题。

经过一些搜索,我发现这个 其中使用 CONTENT_TYPE_SONIFICATION 而不是 CONTENT_TYPE_MUSIC,我相信它可能更适合您要查找的内容。

CONTENT_TYPE_SONIFICATION

Content type value to use when the content type is a sound used to accompany a user action, such as a beep or sound effect expressing a key click, or event, such as the type of a sound for a bonus being received in a game.

您还可以在 coding in flow 中查看代码示例: https://codinginflow.com/tutorials/android/soundpool (我与该网站无关。)

FWIW,在小米 Redmi 6 上遇到了同样的问题,@Peppinhood 使用 .mp3 的建议成功了

出于某种原因,.m4a.wav 在该设备上都产生了严重失真的声音。