使用soundpool后无法更改铃声音量(< 2.1)

时间:2011-06-16 14:16:07

标签: android audio soundpool

有一个问题,经常发生。

我正在使用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。

2 个答案:

答案 0 :(得分:0)

尝试将“mSoundPool.pause”放在onStop()方法而不是onPause()上。

如果不起作用,您可以尝试:

setVolumeControlStream(AudioManager.STREAM_RING);

在onStop()的末尾。

答案 1 :(得分:0)

您无需使用静音mp3即可更改音量。您可以将此行放在oncreate中。

this.setVolumeControlStream(AudioManager.STREAM_MUSIC);  

信息来自这里。 http://www.stealthcopter.com/blog/2010/02/how-to-tell-android-which-volume-mediaringtone-etc-should-be-controlled-by-your-app/