2020import android .content .ContentResolver ;
2121import android .content .Intent ;
2222import android .content .pm .PackageManager ;
23+ import android .database .ContentObserver ;
2324import android .net .nsd .NsdServiceInfo ;
2425import android .net .nsd .DnsSdTxtRecord ;
2526import android .net .nsd .INsdManager ;
@@ -113,6 +114,26 @@ protected String getMessageInfo(Message msg) {
113114 return cmdToString (msg .what );
114115 }
115116
117+ /**
118+ * Observes the NSD on/off setting, and takes action when changed.
119+ */
120+ private void registerForNsdSetting () {
121+ ContentObserver contentObserver = new ContentObserver (this .getHandler ()) {
122+ @ Override
123+ public void onChange (boolean selfChange ) {
124+ if (isNsdEnabled ()) {
125+ mNsdStateMachine .sendMessage (NsdManager .ENABLE );
126+ } else {
127+ mNsdStateMachine .sendMessage (NsdManager .DISABLE );
128+ }
129+ }
130+ };
131+
132+ mContext .getContentResolver ().registerContentObserver (
133+ Settings .Secure .getUriFor (Settings .Secure .NSD_ON ),
134+ false , contentObserver );
135+ }
136+
116137 NsdStateMachine (String name ) {
117138 super (name );
118139 addState (mDefaultState );
@@ -124,6 +145,7 @@ protected String getMessageInfo(Message msg) {
124145 setInitialState (mDisabledState );
125146 }
126147 setProcessedMessagesSize (25 );
148+ registerForNsdSetting ();
127149 }
128150
129151 class DefaultState extends State {
0 commit comments