使用声音池<2.1后无法更改铃声音量

问题描述

| 有一个问题,经常发生。 我正在使用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/