Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在广播接收器中设置Android音量_Android_Android Broadcast - Fatal编程技术网

在广播接收器中设置Android音量

在广播接收器中设置Android音量,android,android-broadcast,Android,Android Broadcast,我在BroadcastReceiver中有以下代码,出于某种原因,我不会将卷设置为0。 如果我将设置卷的代码放在click事件上的按钮上,它就可以正常工作。有人能解释一下为什么会发生这种情况吗?我知道正在调用广播接收器,因为我在if语句中放入了一条日志消息,并显示了它 public void onReceive(Context context, Intent intent) { int volume = CommonUtilities.getSharedPreferenceInt(con

我在BroadcastReceiver中有以下代码,出于某种原因,我不会将卷设置为0。 如果我将设置卷的代码放在click事件上的按钮上,它就可以正常工作。有人能解释一下为什么会发生这种情况吗?我知道正在调用广播接收器,因为我在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);

谢谢你的帮助

您是否检查了返回的卷和存储设置?有时由于一些编码错误,我们只得到默认值。请检查是,就像我提到的,我在if语句中放了一个log语句,以确保代码正在运行,并且日志确实存在。我在应用程序中检查了它,它在
服务
广播接收器
中都工作正常。我不知道为什么它对你不起作用。你试过在任何真实的设备上测试它吗?问题是无论何时调用广播接收器,它都应该工作。我的意思是它是一段代码,应用程序应该在它到达时执行它。我已经在我的应用程序中多次使用了您的相同代码行,我没有遇到任何问题。这就是为什么我不明白它为什么不起作用的原因。您是否在代码执行前后检查了
Stream\u music
的值?如果没有,请尝试并告诉我您的应用程序是否能够更改值?