有一个问题,经常发生。
我正在使用soundpool来播放soundfx。一个soundfx“silence.mp3”一直在循环播放,所以我可以随时改变音量。如果我更改音量,则显示“媒体音量”。它似乎是应用程序的音量。
离开应用程序(后退或主页按钮)后,我无法更改“铃声音量”。
如果启动活动
,将播放声音@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
if (StbApp.mSoundPool != null){
Log.d(TAG, "playSounds");
Log.d(TAG, "menu: " + StbApp.menu);
StbApp.mSoundPool.play(
StbApp.menu,
StbApp.mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC),
StbApp.mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC),
0,
0,
1
);
Log.d(TAG, "menu: " + StbApp.silence);
StbApp.mSoundPool.play(
StbApp.silence,
StbApp.mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC),
StbApp.mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC),
0,
-1,
1
);
}
我尝试暂停我在应用中使用的所有声音,以确保由于某种原因没有播放声音。 (即使它是发射器活动)
@Override
protected void onPause() {
Log.d(TAG, "onPause");
StbApp.mSoundPool.pause(StbApp.gameover);
StbApp.mSoundPool.pause(StbApp.execution);
StbApp.mSoundPool.pause(StbApp.menu);
StbApp.mSoundPool.pause(StbApp.number);
StbApp.mSoundPool.pause(StbApp.penalty);
StbApp.mSoundPool.pause(StbApp.players);
StbApp.mSoundPool.pause(StbApp.quest);
StbApp.mSoundPool.pause(StbApp.round);
StbApp.mSoundPool.pause(StbApp.spinning);
StbApp.mSoundPool.pause(StbApp.silence);
super.onPause();
}
我无法使用autoPause(),因为只有API级别8及更高级别才支持该方法。我尝试在设置中强制停止。但这也行不通。我必须重新启动手机才能更改铃声音量。 (索尼爱立信X10)
在Android 2.1中离开应用程序后,有没有办法可以更改铃声音量?
编辑: 我在更多设备上测试了它。摩托罗拉FlipOut和SE X10 mini也出现了这个问题。它适用于Galaxy S,HTC Legends,SE X8和Galaxy S II。
答案 0 :(得分:0)
尝试将“mSoundPool.pause”放在onStop()方法而不是onPause()上。
如果不起作用,您可以尝试:
setVolumeControlStream(AudioManager.STREAM_RING);
在onStop()的末尾。
答案 1 :(得分:0)
您无需使用静音mp3即可更改音量。您可以将此行放在oncreate中。
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);