我正在播放有声读物中的音频(旁白)。音频文件为.ogg格式,每个文件长度在10至15秒之间。
编辑添加:我正在使用Android 2.2,API 8,并且在我的清单文件中有这个内容:
尽管下面的链接与
编辑添加:我正在使用Android 2.2,API 8,并且在我的清单文件中有这个内容:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
我在 onCreate() 方法中使用了 setVolumeControlStream(AudioManager.STREAM_MUSIC); 来设置音量控制流。
我的声音是通过类似以下代码播放的:
mp = MediaPlayer.create(mContext, resource);
mp.setOnCompletionListener(this);
mp.seekTo(0);
mp.setLooping(looping);
if(isSoundEnabled())
{
mp.setVolume(1, 1);
}
else
{
// I still need sounds to call their onComplete listeners to drive action
mp.setVolume(0,0);
}
nowPlaying = true;
mp.start();
但是,尽管有更多的保证(已经有33个了!)只需要在onCreate()中加入setVolumeControlStream(AudioManager.STREAM_MUSIC);,但当我按下设备(Motorola Xoom)上的音量键时,我的声音并没有改变。
为了验证我的音量键确实在起作用,我重写了onKeyDown
:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean result = true;
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP)
{
DebugLog.d(TAG, "volume up");
}
else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
{
DebugLog.d(TAG, "volume down");
}
}
并通过LogCat确认我按下了正确的音量键:
07-19 12:16:31.440: DEBUG/BookReader(17830): volume down; thread 1
07-19 12:16:31.710: DEBUG/BookReader(17830): volume down; thread 1
07-19 12:16:31.980: DEBUG/BookReader(17830): volume down; thread 1
07-19 12:16:32.440: DEBUG/BookReader(17830): volume up; thread 1
07-19 12:16:32.820: DEBUG/BookReader(17830): volume up; thread 1
尽管下面的链接与
SoundPool
有关,但在我上面的第一个代码示例中,我应该使用计算流音量而不是使用mp.setVolume(1, 1);
吗?