我在播放有声读物中的音频(旁白)。音频文件格式为.ogg,每个格式为10到15秒。控制MediaPlayer中的音量
编辑补充:我使用的是Android 2.2系统,API 8,我有这在我的清单:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
我已经在我的onCreate()方法得到setVolumeControlStream(AudioManager.STREAM_MUSIC);。
我的声音正在通过类似的代码打出这样:(!33和计数)
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();
但是,尽管有更多的保证,人们只需在setVolumeControlStream(AudioManager.STREAM_MUSIC);的onCreate(),我的声音不改变当我按下我的设备上的音量键(摩托罗拉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
,我应该是calculating stream volume而不是在我上面的第一个代码示例中使用mp.setVolume(1, 1);
?
O M G 我不敢相信我就是这么做的。这令我烦恼了这么久!!!!!!!!!!! –