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);
助けてくれてありがとう!