8000 fix: remember speakerphone mode for ensureAudioSession (#1568) · baihua666/flutter-webrtc@5466ab1 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5466ab1

Browse files
authored
fix: remember speakerphone mode for ensureAudioSession (flutter-webrtc#1568)
otherwise event like "onTrackAdd" will call setSpeakerphoneOn even though I called setSpeakerphoneOnButPeferBluetooth before
1 parent dcb823a commit 5466ab1

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

common/darwin/Classes/FlutterWebRTCPlugin.m

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,6 +90, 8000 7 @@ @implementation FlutterWebRTCPlugin {
9090
id _messenger;
9191
id _textures;
9292
BOOL _speakerOn;
93+
BOOL _speakerOnButPreferBluetooth;
9394
AVAudioSessionPort _preferredInput;
9495
}
9596

@@ -135,6 +136,7 @@ - (instancetype)initWithChannel:(FlutterMethodChannel*)channel
135136
_textures = textures;
136137
_messenger = messenger;
137138
_speakerOn = NO;
139+
_speakerOnButPreferBluetooth = NO;
138140
_eventChannel = eventChannel;
139141
#if TARGET_OS_IPHONE
140142
_preferredInput = AVAudioSessionPortHeadphones;
@@ -851,6 +853,7 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
851853
NSDictionary* argsMap = call.arguments;
852854
NSNumber* enable = argsMap[@"enable"];
853855
_speakerOn = enable.boolValue;
856+
_speakerOnButPreferBluetooth = NO;
854857
[AudioUtils setSpeakerphoneOn:_speakerOn];
855858
result(nil);
856859
}
@@ -859,6 +862,8 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
859862
result(nil);
860863
}
861864
else if ([@"enableSpeakerphoneButPreferBluetooth" isEqualToString:call.method]) {
865+
_speakerOn = YES;
866+
_speakerOnButPreferBluetooth = YES;
862867
[AudioUtils setSpeakerphoneOnButPreferBluetooth];
863868
result(nil);
864869
}
@@ -1364,7 +1369,11 @@ - (BOOL)hasLocalAudioTrack {
13641369
- (void)ensureAudioSession {
13651370
#if TARGET_OS_IPHONE
13661371
[AudioUtils ensureAudioSessionWithRecording:[self hasLocalAudioTrack]];
1367-
[AudioUtils setSpeakerphoneOn:_speakerOn];
1372+
if (_speakerOnButPreferBluetooth) {
1373+
[AudioUtils setSpeakerphoneOnButPreferBluetooth];
1374+
} else {
1375+
[AudioUtils setSpeakerphoneOn:_speakerOn];
1376+
}
13681377
#endif
13691378
}
13701379

0 commit comments

Comments
 (0)
0