66import android .content .IntentFilter ;
77import android .app .Activity ;
88import android .content .Context ;
9- import android . support .annotation .Nullable ;
9+ import androidx .annotation .Nullable ;
1010import android .content .BroadcastReceiver ;
1111
1212import com .facebook .react .bridge .NativeModule ;
2222import com .facebook .react .modules .core .DeviceEventManagerModule ;
2323
2424import io .rumors .reactnativesettings .handlers .*;
25+ import io .rumors .reactnativesettings .listeners .*;
2526
2627import java .util .Map ;
2728import java .util .HashMap ;
@@ -30,6 +31,7 @@ public class RNSettingsModule extends ReactContextBaseJavaModule {
3031 //javascript event names
3132 private static final String GPS_PROVIDER_EVENT = "GPS_PROVIDER_EVENT" ;
3233 private static final String AIRPLANE_MODE_EVENT = "AIRPLANE_MODE_EVENT" ;
34+ private static final String CAPTIONING_EVENT = "CAPTIONING_EVENT" ;
3335
3436 //error values
3537 private static final String E_FAILED_TO_GET_SETTINGS = "E_FAILED_TO_GET_SETTINGS" ;
@@ -38,6 +40,7 @@ public class RNSettingsModule extends ReactContextBaseJavaModule {
3840 //open settings names
3941 private static final String ACTION_LOCATION_SOURCE_SETTINGS = "ACTION_LOCATION_SOURCE_SETTINGS" ;
4042 private static final String ACTION_AIRPLANE_MODE_SETTINGS = "ACTION_AIRPLANE_MODE_SETTINGS" ;
43+ private static final String ACTION_CAPTIONING_SETTINGS = "ACTION_CAPTIONING_SETTINGS" ;
4144
4245 private Map <String , Integer > mOpenSettingToRequestCode = new HashMap <String , Integer >();
4346 private Map <Integer , String > mRequestCodeToOpenSetting = new HashMap <Integer , String >();
@@ -61,23 +64,21 @@ public void onActivityResult(Activity activity, int requestCode, int resultCode,
6164 }
6265 };
6366
64- private class LocationReceiver extends BroadcastReceiver {
65- @ Override
66- public void onReceive ( Context context , Intent intent ) {
67- String providerSetting = intent . getStringExtra ( Constants . LOCATION_SETTING );
68- WritableMap params = Arguments . createMap ();
69- params . putString ( Constants . LOCATION_SETTING , providerSetting ) ;
70- sendEvent ( GPS_PROVIDER_EVENT , params ) ;
67+ private class SettingReceiver extends BroadcastReceiver {
68+ private String mSettingName ;
69+ private String mEventName ;
70+
71+ SettingReceiver ( String settingName , String eventName ) {
72+ this . mSettingName = settingName ;
73+ this . mEventName = eventName ;
7174 }
72- }
7375
74- private class AirplaneModeReceiver extends BroadcastReceiver {
7576 @ Override
7677 public void onReceive (Context context , Intent intent ) {
77- String providerSetting = intent .getStringExtra (Constants . AIRPLANE_MODE_SETTING );
78+ String providerSetting = intent .getStringExtra (mSettingName );
7879 WritableMap params = Arguments .createMap ();
79- params .putString (Constants . AIRPLANE_MODE_SETTING , providerSetting );
80- sendEvent (AIRPLANE_MODE_EVENT , params );
80+ params .putString (mSettingName , providerSetting );
81+ sendEvent (mEventName , params );
8182 }
8283 }
8384
@@ -91,25 +92,48 @@ private void registerReceiver(Context reactContext, String filter, BroadcastRece
9192 reactContext .registerReceiver (receiver , intentFilter );
9293 }
9394
94- public RNSettingsModule (ReactApplicationContext reactContext ) {
95- super (reactContext );
96- this .mReactContext = reactContext ;
95+ private void initReceivers () {
96+ registerReceiver (mReactContext , Constants .PROVIDERS_CHANGED , new SettingReceiver (Constants .LOCATION_SETTING , GPS_PROVIDER_EVENT ));
97+ registerReceiver (mReactContext , Constants .AIRPLANE_MODE_CHANGED , new SettingReceiver (Constants .AIRPLANE_MODE_SETTING , AIRPLANE_MODE_EVENT ));
98+ registerReceiver (mReactContext , Constants .CAPTIONING_CHANGED , new SettingReceiver (Constants .CAPTIONING_SETTINGS , CAPTIONING_EVENT ));
99+ }
97100
98- this .registerReceiver (reactContext , Constants .PROVIDERS_CHANGED , new LocationReceiver ());
99- this .registerReceiver (reactContext , Constants .AIRPLANE_MODE_CHANGED , new AirplaneModeReceiver ());
101+ private void initListeners () {
102+ new CaptioningChangeListener (mReactContext );
103+ }
100104
101- mSettingsHandlers .put (Constants .LOCATION_SETTING , new LocationSettingsHandler (reactContext ));
102- mSettingsHandlers .put (Constants .AIRPLANE_MODE_SETTING , new AirplaneModeSettingsHandler (reactContext ));
105+ private void initHandlers () {
106+ mSettingsHandlers .put (Constants .LOCATION_SETTING , new LocationSettingsHandler (mReactContext ));
107+ mSettingsHandlers .put (Constants .AIRPLANE_MODE_SETTING , new AirplaneModeSettingsHandler (mReactContext ));
108+ mSettingsHandlers .put (Constants .CAPTIONING_SETTINGS , new CaptioningSettingsHandler (mReactContext ));
109+ }
103110
111+ private void initRequestCodes () {
104112 mOpenSettingToRequestCode .put (Settings .ACTION_LOCATION_SOURCE_SETTINGS , 0 );
105113 mOpenSettingToRequestCode .put (Settings .ACTION_AIRPLANE_MODE_SETTINGS , 1 );
114+ mOpenSettingToRequestCode .put (Settings .ACTION_CAPTIONING_SETTINGS , 2 );
106115
107116 mRequestCodeToOpenSetting .put (0 , Settings .ACTION_LOCATION_SOURCE_SETTINGS );
108117 mRequestCodeToOpenSetting .put (1 , Settings .ACTION_AIRPLANE_MODE_SETTINGS );
118+ mRequestCodeToOpenSetting .put (2 , Settings .ACTION_CAPTIONING_SETTINGS );
119+ }
109120
121+ private void initSettingsActions () {
110122 mOpenSettingToSettingsName .put (Settings .ACTION_LOCATION_SOURCE_SETTINGS , Constants .LOCATION_SETTING );
111123 mOpenSettingToSettingsName .put (Settings .ACTION_AIRPLANE_MODE_SETTINGS , Constants .AIRPLANE_MODE_SETTING );
124+ mOpenSettingToSettingsName .put (Settings .ACTION_CAPTIONING_SETTINGS , Constants .CAPTIONING_SETTINGS );
125+ }
126+
127+ public RNSettingsModule (ReactApplicationContext reactContext ) {
128+ super (reactContext );
129+ this .mReactContext = reactContext ;
112130
131+ initReceivers ();
132+ initListeners ();
133+ initHandlers ();
134+ initRequestCodes ();
135+ initSettingsActions ();
136+
113137 reactContext .addActivityEventListener (mActivityEventListener );
114138 }
115139
@@ -125,16 +149,19 @@ public Map<String, Object> getConstants() {
125149 //event listeners
126150 constants .put (GPS_PROVIDER_EVENT , GPS_PROVIDER_EVENT );
127151 constants .put (AIRPLANE_MODE_EVENT , AIRPLANE_MODE_EVENT );
152+ constants .put (CAPTIONING_EVENT , CAPTIONING_EVENT );
128153
129154 //get settings
130155 constants .put (Constants .LOCATION_SETTING , Constants .LOCATION_SETTING );
131156 constants .put (Constants .AIRPLANE_MODE_SETTING , Constants .AIRPLANE_MODE_SETTING );
157+ constants .put (Constants .CAPTIONING_SETTINGS , Constants .CAPTIONING_SETTINGS );
132158 constants .put (Constants .ENABLED , Constants .ENABLED );
133159 constants .put (Constants .DISABLED , Constants .DISABLED );
134160
135161 //open settings
136162 constants .put (ACTION_LOCATION_SOURCE_SETTINGS , Settings .ACTION_LOCATION_SOURCE_SETTINGS );
137163 constants .put (ACTION_AIRPLANE_MODE_SETTINGS , Settings .ACTION_AIRPLANE_MODE_SETTINGS );
164+ constants .put (ACTION_CAPTIONING_SETTINGS , Settings .ACTION_CAPTIONING_SETTINGS );
138165 return constants ;
139166 }
140167
0 commit comments