|
|
|
@ -3,6 +3,7 @@
|
|
|
|
|
#import "AudioRouter.h"
|
|
|
|
|
#import "SoundBoard.h"
|
|
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
|
|
|
|
|
|
#define DEFAULT_CATEGORY AVAudioSessionCategorySoloAmbient
|
|
|
|
|
#define RECORDING_CATEGORY AVAudioSessionCategoryPlayAndRecord
|
|
|
|
@ -34,8 +35,8 @@ AppAudioManager *sharedAppAudioManager;
|
|
|
|
|
#pragma mark AudioState Management
|
|
|
|
|
|
|
|
|
|
- (void)setAudioProfile:(enum AudioProfile)profile {
|
|
|
|
|
[self updateAudioRouter];
|
|
|
|
|
_audioProfile = profile;
|
|
|
|
|
[self updateAudioRouter];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)updateAudioRouter {
|
|
|
|
@ -55,17 +56,6 @@ AppAudioManager *sharedAppAudioManager;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- (void)overrideAudioProfile {
|
|
|
|
|
isSpeakerphoneActive = YES;
|
|
|
|
|
[self updateAudioRouter];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)resetOverride {
|
|
|
|
|
isSpeakerphoneActive = NO;
|
|
|
|
|
[self updateAudioRouter];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (enum AudioProfile)getCurrentAudioProfile {
|
|
|
|
|
return (isSpeakerphoneActive) ? AudioProfile_ExternalSpeaker : _audioProfile;
|
|
|
|
|
}
|
|
|
|
@ -110,26 +100,35 @@ AppAudioManager *sharedAppAudioManager;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)handleInboundRing {
|
|
|
|
|
[self setAudioProfile:AudioProfile_ExternalSpeaker];
|
|
|
|
|
[_soundPlayer playSound:[SoundBoard instanceOfInboundRingtone]];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)handleOutboundRing {
|
|
|
|
|
[self setAudioProfile:AudioProfile_Default];
|
|
|
|
|
[self setDefaultAudioProfile];
|
|
|
|
|
[_soundPlayer playSound:[SoundBoard instanceOfOutboundRingtone]];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)handleSecuring {
|
|
|
|
|
[_soundPlayer stopAllAudio];
|
|
|
|
|
[self setAudioProfile:AudioProfile_Default];
|
|
|
|
|
[self setDefaultAudioProfile];
|
|
|
|
|
[_soundPlayer playSound:[SoundBoard instanceOfHandshakeSound]];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)handleCallEstablished {
|
|
|
|
|
[_soundPlayer stopAllAudio];
|
|
|
|
|
[self setAudioProfile:AudioProfile_Default];
|
|
|
|
|
[self setDefaultAudioProfile];
|
|
|
|
|
[_soundPlayer playSound:[SoundBoard instanceOfCompletedSound]];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Route traffic through internal speaker, unless speakerphone is enabled.
|
|
|
|
|
*/
|
|
|
|
|
- (void)setDefaultAudioProfile
|
|
|
|
|
{
|
|
|
|
|
[self setAudioProfile:AudioProfile_Default];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (BOOL)toggleSpeakerPhone {
|
|
|
|
|
isSpeakerphoneActive = !isSpeakerphoneActive;
|
|
|
|
|
[self updateAudioRouter];
|
|
|
|
@ -137,9 +136,17 @@ AppAudioManager *sharedAppAudioManager;
|
|
|
|
|
return isSpeakerphoneActive;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)toggleSpeakerPhoneIsEnabled:(BOOL)enabled
|
|
|
|
|
{
|
|
|
|
|
DDLogInfo(@"%@ Toggled speaker phone: %@", self.tag, enabled ? @"ON" : @"OFF");
|
|
|
|
|
isSpeakerphoneActive = enabled;
|
|
|
|
|
[self updateAudioRouter];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#pragma mark Audio Control
|
|
|
|
|
|
|
|
|
|
- (void)cancellAllAudio {
|
|
|
|
|
- (void)cancelAllAudio
|
|
|
|
|
{
|
|
|
|
|
[_soundPlayer stopAllAudio];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -196,7 +203,8 @@ AppAudioManager *sharedAppAudioManager;
|
|
|
|
|
return (nil != e);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (void)awake {
|
|
|
|
|
- (void)awake
|
|
|
|
|
{
|
|
|
|
|
[_soundPlayer awake];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -209,5 +217,18 @@ AppAudioManager *sharedAppAudioManager;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#pragma mark - Logging
|
|
|
|
|
|
|
|
|
|
+ (NSString *)tag
|
|
|
|
|
{
|
|
|
|
|
return [NSString stringWithFormat:@"[%@]", self.class];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
- (NSString *)tag
|
|
|
|
|
{
|
|
|
|
|
return self.class.tag;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
NS_ASSUME_NONNULL_END
|
|
|
|
|