2013-09-27 49 views
0

我有方法,它集流體積,並且具有哈德勒內部檢查這改變有關設置的延遲nottification改變

用於設置流法服務:

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 

} 

Serivce:

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之後調用。我需要這個,因爲我需要知道卷在應用程序內部還是以其他方式更改。謝謝。

回答

0

通過將SharedPreferences中的布爾鍵「fromApp」解決並在SystemSettingsChangeObserverService中檢查它,然後將該鍵設置爲false