Thu*_*bit 4 android volume media-player
我正在有声读物中播放音频(旁白).音频文件采用.ogg格式,每个长度介于10到15秒之间.
编辑添加:我使用的是Android 2.2,API 8,我在我的Manifest中有这个:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)
我有setVolumeControlStream(AudioManager.STREAM_MUSIC); 在我的onCreate()方法中.
我的声音通过类似于此的代码播放:
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();
Run Code Online (Sandbox Code Playgroud)
但是,尽管有更多的保证(33并且计数!),但是只需要setVolumeControlStream(AudioManager.STREAM_MUSIC); 在onCreate()中,当我按下设备上的音量键(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");
}
}
Run Code Online (Sandbox Code Playgroud)
并通过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
Run Code Online (Sandbox Code Playgroud)
虽然以下链接是关于SoundPool,我应该计算流量而不是mp.setVolume(1, 1);在我上面的第一个代码示例中使用?
检查以确保每次调用onKeyDown时都不会返回true.如果是这种情况,那么你告诉android你将处理所有onKeyDown事件,因此android可能会忽略音量键.
| 归档时间: |
|
| 查看次数: |
17349 次 |
| 最近记录: |