6565
6666import com .zxcpoiu .incallmanager .AppRTC .AppRTCBluetoothManager ;
6767
68- public class InCallManagerModule extends ReactContextBaseJavaModule implements LifecycleEventListener {
68+ public class InCallManagerModule extends ReactContextBaseJavaModule implements LifecycleEventListener , AudioManager . OnAudioFocusChangeListener {
6969 private static final String REACT_NATIVE_MODULE_NAME = "InCallManager" ;
7070 private static final String TAG = REACT_NATIVE_MODULE_NAME ;
7171 private String mPackageName = "com.zxcpoiu.incallmanager" ;
@@ -94,7 +94,6 @@ public class InCallManagerModule extends ReactContextBaseJavaModule implements L
9494 private BroadcastReceiver wiredHeadsetReceiver ;
9595 private BroadcastReceiver noisyAudioReceiver ;
9696 private BroadcastReceiver mediaButtonReceiver ;
97- private OnFocusChangeListener mOnFocusChangeListener ;
9897 private AudioAttributes mAudioAttributes ;
9998 private AudioFocusRequest mAudioFocusRequest ;
10099
@@ -166,9 +165,6 @@ public enum AudioManagerState {
166165 // avoid duplicate elements.
167166 private Set <AudioDevice > audioDevices = new HashSet <>();
168167
169- // Callback method for changes in audio focus.
170- private AudioManager .OnAudioFocusChangeListener audioFocusChangeListener ;
171-
172168 interface MyPlayerInterface {
173169 public boolean isPlaying ();
174170 public void startPlay (Map <String , Object > data );
@@ -194,7 +190,6 @@ public InCallManagerModule(ReactApplicationContext reactContext) {
194190 audioUriMap .put ("bundleRingtoneUri" , bundleRingtoneUri );
195191 audioUriMap .put ("bundleRingbackUri" , bundleRingbackUri );
196192 audioUriMap .put ("bundleBusytoneUri" , bundleBusytoneUri );
197- mOnFocusChangeListener = new OnFocusChangeListener ();
198193 bluetoothManager = AppRTCBluetoothManager .create (reactContext , this );
199194 proximityManager = InCallProximityManager .create (reactContext , this );
200195 wakeLockUtils = new InCallWakeLockUtils (reactContext );
@@ -452,49 +447,46 @@ public void stopProximitySensor() {
452447 isProximityRegistered = false ;
453448 }
454449
455- private class OnFocusChangeListener implements AudioManager .OnAudioFocusChangeListener {
456- // --- see: https://developer.android.com/reference/android/media/AudioManager
457-
458- @ Override
459- public void onAudioFocusChange (final int focusChange ) {
460- String focusChangeStr ;
461- switch (focusChange ) {
462- case AudioManager .AUDIOFOCUS_GAIN :
463- focusChangeStr = "AUDIOFOCUS_GAIN" ;
464- break ;
465- case AudioManager .AUDIOFOCUS_GAIN_TRANSIENT :
466- focusChangeStr = "AUDIOFOCUS_GAIN_TRANSIENT" ;
467- break ;
468- case AudioManager .AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE :
469- focusChangeStr = "AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE" ;
470- break ;
471- case AudioManager .AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK :
472- focusChangeStr = "AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK" ;
473- break ;
474- case AudioManager .AUDIOFOCUS_LOSS :
475- focusChangeStr = "AUDIOFOCUS_LOSS" ;
476- break ;
477- case AudioManager .AUDIOFOCUS_LOSS_TRANSIENT :
478- focusChangeStr = "AUDIOFOCUS_LOSS_TRANSIENT" ;
479- break ;
480- case AudioManager .AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK :
481- focusChangeStr = "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK" ;
482- break ;
483- case AudioManager .AUDIOFOCUS_NONE :
484- focusChangeStr = "AUDIOFOCUS_NONE" ;
485- break ;
486- default :
487- focusChangeStr = "AUDIOFOCUS_UNKNOW" ;
488- break ;
489- }
450+ // --- see: https://developer.android.com/reference/android/media/AudioManager
451+ @ Override
452+ public void onAudioFocusChange (int focusChange ) {
453+ String focusChangeStr ;
454+ switch (focusChange ) {
455+ case AudioManager .AUDIOFOCUS_GAIN :
456+ focusChangeStr = "AUDIOFOCUS_GAIN" ;
457+ break ;
458+ case AudioManager .AUDIOFOCUS_GAIN_TRANSIENT :
459+ focusChangeStr = "AUDIOFOCUS_GAIN_TRANSIENT" ;
460+ break ;
461+ case AudioManager .AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE :
462+ focusChangeStr = "AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE" ;
463+ break ;
464+ case AudioManager .AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK :
465+ focusChangeStr = "AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK" ;
466+ break ;
467+ case AudioManager .AUDIOFOCUS_LOSS :
468+ focusChangeStr = "AUDIOFOCUS_LOSS" ;
469+ break ;
470+ case AudioManager .AUDIOFOCUS_LOSS_TRANSIENT :
471+ focusChangeStr = "AUDIOFOCUS_LOSS_TRANSIENT" ;
472+ break ;
473+ case AudioManager .AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK :
474+ focusChangeStr = "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK" ;
475+ break ;
476+ case AudioManager .AUDIOFOCUS_NONE :
477+ focusChangeStr = "AUDIOFOCUS_NONE" ;
478+ break ;
479+ default :
480+ focusChangeStr = "AUDIOFOCUS_UNKNOW" ;
481+ break ;
482+ }
490483
491- Log .d (TAG , "onAudioFocusChange: " + focusChange + " - " + focusChangeStr );
484+ Log .d (TAG , "onAudioFocusChange() : " + focusChange + " - " + focusChangeStr );
492485
493- WritableMap data = Arguments .createMap ();
494- data .putString ("eventText" , focusChangeStr );
495- data .putInt ("eventCode" , focusChange );
496- sendEvent ("onAudioFocusChange" , data );
497- }
486+ WritableMap data = Arguments .createMap ();
487+ data .putString ("eventText" , focusChangeStr );
488+ data .putInt ("eventCode" , focusChange );
489+ sendEvent ("onAudioFocusChange" , data );
498490 }
499491
500492 /*
@@ -669,7 +661,7 @@ private String requestAudioFocusV26() {
669661 .setAudioAttributes (mAudioAttributes )
670662 .setAcceptsDelayedFocusGain (false )
671663 .setWillPauseWhenDucked (false )
672- .setOnAudioFocusChangeListener (mOnFocusChangeListener )
664+ .setOnAudioFocusChangeListener (this )
673665 .build ();
674666 }
675667
@@ -700,7 +692,7 @@ private String requestAudioFocusOld() {
700692 return "" ;
701693 }
702694
703- int requestAudioFocusRes = audioManager .requestAudioFocus (mOnFocusChangeListener , AudioManager .STREAM_VOICE_CALL , AudioManager .AUDIOFOCUS_GAIN_TRANSIENT );
695+ int requestAudioFocusRes = audioManager .requestAudioFocus (this , AudioManager .STREAM_VOICE_CALL , AudioManager .AUDIOFOCUS_GAIN_TRANSIENT );
704696
705697 String requestAudioFocusResStr ;
706698 switch (requestAudioFocusRes ) {
@@ -760,7 +752,7 @@ private String abandonAudioFocusOld() {
760752 return "" ;
761753 }
762754
763- int abandonAudioFocusRes = audioManager .abandonAudioFocus (null );
755+ int abandonAudioFocusRes = audioManager .abandonAudioFocus (this );
764756
765757 String abandonAudioFocusResStr ;
766758 switch (abandonAudioFocusRes ) {
0 commit comments