我在 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);
感谢您的帮助!