问题描述
|
有一个问题,经常发生。
我正在使用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),1
);
Log.d(TAG,\"menu: \" + StbApp.silence);
StbApp.mSoundPool.play(
StbApp.silence,-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中后,是否可以更改铃声音量?
编辑:
我在更多设备上进行了测试。该问题在Motorola FlipOut和SE X10 mini上也发生。它适用于galaxy S,HTC Legends,SE X8和galaxy S II。
解决方法
尝试将\“ mSoundPool.pause \”放在onStop()方法而不是onPause()上。
如果不起作用,可以尝试:
setVolumeControlStream(AudioManager.STREAM_RING);
在onStop()的末尾。
, 您不必使用无声mp3即可更改音量。您可以将此行放在oncreate中。
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
信息来自这里。
http://www.stealthcopter.com/blog/2010/02/how-to-tell-android-which-volume-mediaringtone-etc-should-be-control-by-your-app/