0

我在 BroadcastReciver 中有以下代码,由于某种原因不会将音量设置为 0。如果我将相同的代码设置为在单击事件上附加到按钮的音量,它就可以正常工作。有人可以解释为什么会发生这种情况吗?我知道广播接收器正在被调用,因为我在 if 语句中放置了一条日志消息并显示了它。

public void onReceive(Context context, Intent intent) {
    int volume = CommonUtilities.getSharedPreferenceInt(context, CommonUtilities.PREF_FILE, CommonUtilities.PERCENT, -1);
    boolean savedSettings = CommonUtilities.getSharedPreferenceBoolean(context, CommonUtilities.PREF_FILE, CommonUtilities.SAVED_SETTINGS, false);

    if(volume >= 0 && savedSettings){
        Log.v(CommonUtilities.TAG, "Setting the audio");
        CommonUtilities.setSharedPreferenceBoolean(context, CommonUtilities.PREF_FILE, "SetAudio", true);
        AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_SHOW_UI);
    }
}

如果我将相同的代码放在 onClick 事件中,它就可以正常工作。音量设置为 0 并显示设置为 0 的音量 UI。

AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_SHOW_UI);

感谢您的帮助!

4

0 回答 0