8000 Fix: [Android] Expose helper to clearCommunicationDevice on AudioMana… · liliBestCoder/flutter-webrtc@5e6e3da · GitHub
[go: up one dir, main page]

Skip to content

Commit 5e6e3da

Browse files
Fix: [Android] Expose helper to clearCommunicationDevice on AudioManager.AUDIOFOCUS_LOSS (flutter-webrtc#1410)
* clearCommunicationDevice on AudioManager.AUDIOFOCUS_LOSS Expose helper method to clearCommunicationDevice * Fix file formatting
1 parent 6d502d3 commit 5e6e3da

File tree

4 files changed

+16
-0
lines changed

4 files changed

+16
-0
lines changed

android/src/main/java/com/cloudwebrtc/webrtc/MethodCallHandlerImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,10 @@ public void onMethodCall(MethodCall call, @NonNull Result notSafeResult) {
538538
result.success(null);
539539
break;
540540
}
541+
case "clearAndroidCommunicationDevice": {
542+
AudioSwitchManager.instance.clearCommunicationDevice();
543+
break;
544+
}
541545
case "setMicrophoneMute":
542546
boolean mute = call.argument("mute");
543547
AudioSwitchManager.instance.setMicrophoneMute(mute);

android/src/main/java/com/cloudwebrtc/webrtc/audio/AudioSwitchManager.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,9 @@ public void setFocusMode(@Nullable String focusModeString) {
255255
case "gainTransientMayDuck":
256256
focusMode = AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK;
257257
break;
258+
case "loss":
259+
focusMode = AudioManager.AUDIOFOCUS_LOSS;
260+
break;
258261
default:
259262
Log.w(TAG, "Unknown audio focus mode: " + focusModeString);
260263
break;
@@ -268,4 +271,8 @@ public void setFocusMode(@Nullable String focusModeString) {
268271
}
269272
}
270273
}
274+
275+
public void clearCommunicationDevice() {
276+
audioManager.clearCommunicationDevice();
277+
}
271278
}

lib/src/helper.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,10 @@ class Helper {
129129
AndroidNativeAudioManagement.setAndroidAudioConfiguration(
130130
androidAudioConfiguration);
131131

132+
/// After Android app finishes a session, on audio focus loss, clear the active communication device.
133+
static Future<void> clearAndroidCommunicationDevice() =>
134+
WebRTC.invokeMethod('clearAndroidCommunicationDevice');
135+
132136
/// Set the audio configuration for iOS
133137
static Future<void> setAppleAudioConfiguration(
134138
AppleAudioConfiguration appleAudioConfiguration) =>

lib/src/native/android/audio_configuration.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ enum AndroidAudioFocusMode {
2424
gainTransient,
2525
gainTransientExclusive,
2626
gainTransientMayDuck,
27+
loss
2728
}
2829

2930
extension AndroidAudioFocusModeExt on AndroidAudioFocusMode {

0 commit comments

Comments
 (0)
0