@@ -67,19 +67,28 @@ + (void)setSpeakerphoneOn:(BOOL)enable {
67
67
[session lockForConfiguration ];
68
68
NSError *error = nil ;
69
69
if (!enable) {
70
- [session setCategory: config.category
71
- withOptions: config.categoryOptions
72
- error: &error];
73
70
[session setMode: config.mode error: &error];
74
- BOOL success = [session setActive: YES error: &error];
71
+ BOOL success = [session setCategory: config.category
72
+ withOptions: AVAudioSessionCategoryOptionAllowAirPlay|AVAudioSessionCategoryOptionAllowBluetoothA2DP|AVAudioSessionCategoryOptionAllowBluetooth
73
+ error: &error];
74
+
75
+ success = [session.session overrideOutputAudioPort: kAudioSessionOverrideAudioRoute_None error: &error];
76
+ if (!success) NSLog (@" Port override failed due to: %@ " , error);
77
+
78
+ success = [session setActive: YES error: &error];
75
79
if (!success) NSLog (@" Audio session override failed: %@ " , error);
76
80
else NSLog (@" AudioSession override via Earpiece/Headset is successful " );
81
+
82
+
77
83
} else {
84
+ [session setMode: config.mode error: &error];
78
85
BOOL success = [session setCategory: config.category
79
- withOptions: AVAudioSessionCategoryOptionDefaultToSpeaker
86
+ withOptions: AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionAllowAirPlay|AVAudioSessionCategoryOptionAllowBluetoothA2DP|AVAudioSessionCategoryOptionAllowBluetooth
80
87
error: &error];
81
- [session setMode: config.mode error: &error];
88
+
89
+ success = [session overrideOutputAudioPort: kAudioSessionOverrideAudioRoute_Speaker error: &error];
82
90
if (!success) NSLog (@" Port override failed due to: %@ " , error);
91
+
83
92
success = [session setActive: YES error: &error];
84
93
if (!success) NSLog (@" Audio session override failed: %@ " , error);
85
94
else NSLog (@" AudioSession override via Loudspeaker is successful " );
0 commit comments