【发布时间】:2014-10-04 05:46:22
【问题描述】:
您可以在 Android 上使用 MediaPlayer 或 SoundPool 播放声音。 使用 MediaPlayer 时,我们的两台 Android 设备播放相同的声音时声音更大。 在第三台设备上,音量听起来是一样的。
你知道为什么吗? 我可以让 SoundPool 播放像 MediaPlayer 一样响亮的声音吗?
有问题的设备:
平板电脑LG-V400(Android 4.4 Kit Kat)
电话Sony Xperia L (Android 4.2.2)
代码:使用 SoundPool 播放 mp3 声音
private void playSoundPool() {
int MAX_STREAMS = 2;
SoundPool soundPool = new SoundPool(MAX_STREAMS, AudioManager.STREAM_MUSIC, 0);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int soundId, int status) {
int loop = 0;
int priority = 0;
float rate = 1.f;
soundPool.play(soundId, 1, 1, priority, loop, rate);
}
});
soundPool.load(this, R.raw.test, 1);
}
代码:使用 MediaPlayer 播放 mp3 声音
private void playMediaPlayer() {
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.test);
mediaPlayer.setVolume(1, 1);
mediaPlayer.start();
}
【问题讨论】:
-
当您使用
1.0f作为soundPool.play的卷时会发生什么?如果你想要相同的音量,我认为你会想要使用相同的音量级别。 -
是一样的。我放 0.99f 是因为有人在 2010 年建议将 SoundPool 音量保持在 [0, 0.99f] 范围内。我已经用“1”更新了代码以保持简单。
-
可能和MediaPlayer.setAudioStreamType有关?
-
我刚刚尝试设置 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);在 mediaPlayer.start() 之前。没有任何区别:(
-
嗨,你现在解决这个问题了吗?