mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-30 01:39:20 +00:00
Pause SIP call when audio is interrupted by OS (on incoming GSM call for instance)
The SIP call is automatically resumed when audio is available.
This commit is contained in:
parent
44d5e1db8c
commit
fc530ed057
10 changed files with 596 additions and 526 deletions
|
|
@ -51,6 +51,8 @@
|
|||
|
||||
}
|
||||
-(void) displayIncallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
|
||||
[self presentModalViewController:mIncallViewController animated:true];
|
||||
|
||||
[super displayIncallFromUI:viewCtrl
|
||||
forUser:username
|
||||
withDisplayName:displayName];
|
||||
|
|
@ -65,6 +67,12 @@
|
|||
[mIncallViewController displayStatus:message];
|
||||
}
|
||||
|
||||
-(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl {
|
||||
[super updateUIFromLinphoneState:viewCtrl];
|
||||
|
||||
[mIncallViewController updateUIFromLinphoneState:viewCtrl];
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[mIncallViewController release];
|
||||
[super dealloc];
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
UIHangUpButton* endCtrl;
|
||||
UIButton* dialer;
|
||||
UIMuteButton* mute;
|
||||
UIPauseResumeButton* pause;
|
||||
UISpeakerButton* speaker;
|
||||
UIButton* contacts;
|
||||
|
||||
|
|
@ -74,6 +75,7 @@
|
|||
@property (nonatomic, retain) IBOutlet UIButton* endCtrl;
|
||||
@property (nonatomic, retain) IBOutlet UIButton* dialer;
|
||||
@property (nonatomic, retain) IBOutlet UIButton* mute;
|
||||
@property (nonatomic, retain) IBOutlet UIButton* pause;
|
||||
@property (nonatomic, retain) IBOutlet UIButton* speaker;
|
||||
@property (nonatomic, retain) IBOutlet UIButton* contacts;
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
@synthesize endCtrl;
|
||||
@synthesize close;
|
||||
@synthesize mute;
|
||||
@synthesize pause;
|
||||
@synthesize dialer;
|
||||
@synthesize speaker;
|
||||
@synthesize contacts;
|
||||
|
|
@ -70,6 +71,7 @@
|
|||
[super viewDidLoad];
|
||||
//Controls
|
||||
[mute initWithOnImage:[UIImage imageNamed:@"mic_muted.png"] offImage:[UIImage imageNamed:@"mic_active.png"] ];
|
||||
[pause initWithOnImage:[UIImage imageNamed:@"resumecall.png"] offImage:[UIImage imageNamed:@"pausecall.png"] ];
|
||||
[speaker initWithOnImage:[UIImage imageNamed:@"Speaker-32-on.png"] offImage:[UIImage imageNamed:@"Speaker-32-off.png"] ];
|
||||
|
||||
|
||||
|
|
@ -127,6 +129,11 @@
|
|||
[callDuration stop];
|
||||
[self dismissModalViewControllerAnimated:true];
|
||||
}
|
||||
-(void) updateUIFromLinphoneState:(UIViewController *)viewCtrl {
|
||||
[mute reset];
|
||||
[pause reset];
|
||||
}
|
||||
|
||||
- (IBAction)doAction:(id)sender {
|
||||
|
||||
if (sender == dialer) {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -790,11 +790,15 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
|
|||
}
|
||||
|
||||
-(void) endInterruption {
|
||||
const MSList* c = linphone_core_get_calls(theLinphoneCore);
|
||||
ms_message("Sound interruption ended!");
|
||||
const MSList* c = linphone_core_get_calls(theLinphoneCore);
|
||||
|
||||
if (c) {
|
||||
ms_message("Auto resuming call");
|
||||
linphone_core_resume_call(theLinphoneCore, (LinphoneCall*) c->data);
|
||||
}
|
||||
}
|
||||
|
||||
[callDelegate updateUIFromLinphoneState:mCurrentViewController];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
-(void) displayCallInProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
|
||||
-(void) displayIncomingCallNotigicationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
|
||||
-(void) displayIncallFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName;
|
||||
-(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl;
|
||||
//status reporting
|
||||
-(void) displayStatus:(NSString*) message;
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -26,3 +26,4 @@
|
|||
#import "UIDuration.h"
|
||||
#import "UIEraseButton.h"
|
||||
#import "LinphoneUIDelegates.h"
|
||||
#import "UIPauseResumeButton.h"
|
||||
|
|
|
|||
28
Classes/LinphoneUI/UIPauseResumeButton.h
Normal file
28
Classes/LinphoneUI/UIPauseResumeButton.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/* UIMuteButton.h
|
||||
*
|
||||
* Copyright (C) 2011 Belledonne Comunications, Grenoble, France
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "UIToggleButton.h"
|
||||
|
||||
|
||||
@interface UIPauseResumeButton : UIToggleButton<UIToggleButtonDelegate> {
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
69
Classes/LinphoneUI/UIPauseResumeButton.m
Normal file
69
Classes/LinphoneUI/UIPauseResumeButton.m
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
/* UIMuteButton.m
|
||||
*
|
||||
* Copyright (C) 2011 Belledonne Comunications, Grenoble, France
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
#import "UIPauseResumeButton.h"
|
||||
#include "LinphoneManager.h"
|
||||
|
||||
|
||||
@implementation UIPauseResumeButton
|
||||
|
||||
|
||||
|
||||
-(void) onOn {
|
||||
LinphoneCall* c = linphone_core_get_current_call([LinphoneManager getLc]);
|
||||
if (c) {
|
||||
linphone_core_pause_call([LinphoneManager getLc], c);
|
||||
}
|
||||
}
|
||||
-(void) onOff {
|
||||
const MSList* c = linphone_core_get_calls([LinphoneManager getLc]);
|
||||
if (c) {
|
||||
linphone_core_resume_call([LinphoneManager getLc], (LinphoneCall*) c->data);
|
||||
}
|
||||
}
|
||||
-(bool) isInitialStateOn {
|
||||
@try {
|
||||
const MSList* c = linphone_core_get_calls([LinphoneManager getLc]);
|
||||
|
||||
if (c) {
|
||||
return linphone_call_get_state((LinphoneCall*)c->data) == LinphoneCallPaused;
|
||||
} else {
|
||||
|
||||
return false;
|
||||
}
|
||||
} @catch(NSException* e) {
|
||||
//not ready yet
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
// Only override drawRect: if you perform custom drawing.
|
||||
// An empty implementation adversely affects performance during animation.
|
||||
- (void)drawRect:(CGRect)rect {
|
||||
// Drawing code.
|
||||
}
|
||||
*/
|
||||
|
||||
- (void)dealloc {
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
|
@ -234,6 +234,10 @@
|
|||
[status setText:message];
|
||||
}
|
||||
|
||||
-(void) updateUIFromLinphoneState:(UIViewController*) viewCtrl {
|
||||
[mute reset];
|
||||
}
|
||||
|
||||
|
||||
-(void) displayIncomingCallNotigicationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName {
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue