Skip to content

Commit 73dfce9

Browse files
committed
android: refine OnAudioFocusChangeListener
1 parent 82778ca commit 73dfce9

File tree

1 file changed

+42
-50
lines changed

1 file changed

+42
-50
lines changed

android/src/main/java/com/zxcpoiu/incallmanager/InCallManagerModule.java

Lines changed: 42 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565

6666
import 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

Comments
 (0)