fix speaker of call

This commit is contained in:
Danmei Chen 2020-03-19 14:54:08 +01:00
parent 65746e68a1
commit 7fdfe63632
6 changed files with 16 additions and 15 deletions

View file

@ -142,7 +142,7 @@ import AVFoundation
return allow
}
@objc func setSpeakerEnabled(enable: Bool) {
@objc func enableSpeaker(enable: Bool) {
speakerEnabled = enable
do {
if (enable && allowSpeaker()) {
@ -150,6 +150,7 @@ import AVFoundation
UIDevice.current.isProximityMonitoringEnabled = false
bluetoothEnabled = false
} else {
try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none)
let buildinPort = AudioHelper.bluetoothAudioDevice()
try AVAudioSession.sharedInstance().setPreferredInput(buildinPort)
UIDevice.current.isProximityMonitoringEnabled = (lc!.callsNb > 0)
@ -436,7 +437,7 @@ class CoreManagerDelegate: CoreDelegate {
if (CallManager.instance().speakerBeforePause) {
CallManager.instance().speakerBeforePause = false
CallManager.instance().setSpeakerEnabled(enable: true)
CallManager.instance().enableSpeaker(enable: true)
CoreManagerDelegate.speaker_already_enabled = true
}
break
@ -460,7 +461,7 @@ class CoreManagerDelegate: CoreDelegate {
UIDevice.current.isProximityMonitoringEnabled = false
CoreManagerDelegate.speaker_already_enabled = false
if (CallManager.instance().lc!.callsNb == 0) {
CallManager.instance().setSpeakerEnabled(enable: false)
CallManager.instance().enableSpeaker(enable: false)
// disable this because I don't find anygood reason for it: _bluetoothAvailable = FALSE;
// furthermore it introduces a bug when calling multiple times since route may not be
// reconfigured between cause leading to bluetooth being disabled while it should not
@ -506,7 +507,7 @@ class CoreManagerDelegate: CoreDelegate {
if (cstate == .IncomingReceived || cstate == .OutgoingInit || cstate == .Connected || cstate == .StreamsRunning) {
if (video && !CoreManagerDelegate.speaker_already_enabled && !CallManager.instance().bluetoothEnabled) {
CallManager.instance().setSpeakerEnabled(enable: true)
CallManager.instance().enableSpeaker(enable: true)
CoreManagerDelegate.speaker_already_enabled = true
}
}

View file

@ -93,20 +93,20 @@ static UICompositeViewDescription *compositeDescription = nil;
- (IBAction)onRoutesBluetoothClick:(id)sender {
[self hideRoutes:TRUE animated:TRUE];
[CallManager.instance setSpeakerEnabled:FALSE];
[CallManager.instance enableSpeakerWithEnable:FALSE];
[LinphoneManager.instance setBluetoothEnabled:TRUE];
}
- (IBAction)onRoutesEarpieceClick:(id)sender {
[self hideRoutes:TRUE animated:TRUE];
[CallManager.instance setSpeakerEnabled:FALSE];
[CallManager.instance enableSpeakerWithEnable:FALSE];
[LinphoneManager.instance setBluetoothEnabled:FALSE];
}
- (IBAction)onRoutesSpeakerClick:(id)sender {
[self hideRoutes:TRUE animated:TRUE];
[LinphoneManager.instance setBluetoothEnabled:FALSE];
[CallManager.instance setSpeakerEnabled:TRUE];
[CallManager.instance enableSpeakerWithEnable:TRUE];
}
- (IBAction)onRoutesClick:(id)sender {

View file

@ -816,20 +816,20 @@ static void hideSpinner(LinphoneCall *call, void *user_data) {
- (IBAction)onRoutesBluetoothClick:(id)sender {
[self hideRoutes:TRUE animated:TRUE];
[CallManager.instance setSpeakerEnabled:FALSE];
[CallManager.instance enableSpeakerWithEnable:FALSE];
[LinphoneManager.instance setBluetoothEnabled:TRUE];
}
- (IBAction)onRoutesEarpieceClick:(id)sender {
[self hideRoutes:TRUE animated:TRUE];
[CallManager.instance setSpeakerEnabled:FALSE];
[CallManager.instance enableSpeakerWithEnable:FALSE];
[LinphoneManager.instance setBluetoothEnabled:FALSE];
}
- (IBAction)onRoutesSpeakerClick:(id)sender {
[self hideRoutes:TRUE animated:TRUE];
[LinphoneManager.instance setBluetoothEnabled:FALSE];
[CallManager.instance setSpeakerEnabled:TRUE];
[CallManager.instance enableSpeakerWithEnable:TRUE];
}
- (IBAction)onRoutesClick:(id)sender {

View file

@ -1929,7 +1929,7 @@ static int comp_call_state_paused(const LinphoneCall *call, const void *param) {
- (void)setBluetoothEnabled:(BOOL)enable {
if (_bluetoothAvailable) {
// The change of route will be done in setSpeakerEnabled
// The change of route will be done in enableSpeaker
CallManager.instance.bluetoothEnabled = enable;
if (CallManager.instance.bluetoothEnabled) {
NSError *err = nil;
@ -1947,7 +1947,7 @@ static int comp_call_state_paused(const LinphoneCall *call, const void *param) {
}
}
}
[CallManager.instance setSpeakerEnabled:CallManager.instance.speakerEnabled];
[CallManager.instance enableSpeakerWithEnable:CallManager.instance.speakerEnabled];
}
#pragma mark - Call Functions

View file

@ -46,11 +46,11 @@ INIT_WITH_COMMON_CF {
}
- (void)onOn {
[CallManager.instance setSpeakerEnabled:TRUE];
[CallManager.instance enableSpeakerWithEnable:TRUE];
}
- (void)onOff {
[CallManager.instance setSpeakerEnabled:FALSE];
[CallManager.instance enableSpeakerWithEnable:FALSE];
}
- (bool)onUpdate {

View file

@ -58,7 +58,7 @@ INIT_WITH_COMMON_CF {
if (!linphone_core_video_display_enabled(LC))
return;
[CallManager.instance setSpeakerEnabled:FALSE];
[CallManager.instance enableSpeakerWithEnable:FALSE];
[self setEnabled:FALSE];
[waitView startAnimating];