有关设置的延迟通知已更改



我有设置流卷和服务的方法,其中有 Hadler 来检查此更改

设置流的方法:

private setStreams(Context context)
{
   AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
   am.setStreamVolume(AudioManager.STREAM_RING, ringerVol, 0);
   am.setStreamVolume(AudioManager.STREAM_NOTIFICATION, notifVol, 0);
   am.setStreamVolume(AudioManager.STREAM_MUSIC, mediaVol, 0);
   am.setStreamVolume(AudioManager.STREAM_ALARM, alarmVol, 0);
   am.setStreamVolume(AudioManager.STREAM_SYSTEM, systemVol, 0);
   am.setStreamVolume(AudioManager.STREAM_VOICE_CALL, incallVol, 0);
   am.setStreamVolume(6, btVol, 0);  
  //some other code
}

服务:

public class SystemSettingsChangeObserverService extends Service {
    private ContentObserver observer;
    private static Context context;


    @Override
    public void onCreate(){
        super.onCreate();
        context = this;   
        observer = new ContentObserver (new Handler()) {
            @Override
            public boolean deliverSelfNotifications() {
                 return super.deliverSelfNotifications(); 
            }

            @Override
            public void onChange(boolean selfChange) {
                super.onChange(selfChange);
                //here I check new values of streams
            }
    }
  ...

问题是,onChange 是在 setStreams 方法中的"一些其他代码"之后调用的,而不是在每个流的 setStreamVolume 之后调用的。我需要这个,因为我需要知道卷是否在我的应用程序中或通过其他方式更改。谢谢。

通过将布尔键"fromApp"放在SharedPreferences中并在SystemSettingsChangeObserverService中检查它来解决,然后将键设置为false

相关内容

  • 没有找到相关文章

最新更新