1

有一个问题,经常发生。

我正在使用 soundpool 播放 soundfx。一个 soundfx "silence.mp3" 一直循环播放,所以我可以随时改变音量。如果我更改音量,则会显示“媒体音量”。它似乎是应用程序的音量。

离开应用程序(返回或主页按钮)后,我无法更改“铃声音量”。

启动 Activity 会播放声音

@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。

4

2 回答 2

0

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

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

setVolumeControlStream(AudioManager.STREAM_RING);

在 onStop() 结束时。

于 2011-06-16T14:50:17.703 回答
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-control-by-your-app/

于 2012-01-15T18:17:29.477 回答