我遵循了关心我的扬声器状态的方法:
音频会话.h
enum {
kAudioSessionOverrideAudioRoute_None = 0,
kAudioSessionOverrideAudioRoute_Speaker = 'spkr'
};
我的课
@synthesize speakerEnabled;
...
- (void)setSpeakerEnabled:(BOOL)enable {
speakerEnabled = enable;
if(enable) {
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute
, sizeof (audioRouteOverride)
, &audioRouteOverride);
} else {
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute
, sizeof (audioRouteOverride)
, &audioRouteOverride);
}
}
但是,它仅适用于 iPhone,适用于 iPad - 没有任何反应。
当我按下按钮时:
Speaker On
,我进入if(enable)
并AudioSessionSetProperty
接收kAudioSessionOverrideAudioRoute_Speaker
;当我按下按钮时:
Speaker Off
,我进入else
并AudioSessionSetProperty
接收kAudioSessionOverrideAudioRoute_None
;
我开始调试并没有发现设备之间的区别。
我有 iPad2 iOS 6.1。
我错过了什么?
请帮我
编辑
正如 LombaX 所说,我在启动应用程序AVAudioSession
类别中添加了:
NSError *err = nil;
BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&err];
if(!success){
[MyLogger logc:MyLoggerLog format:"%@",[err localizedDescription]];
}
success = YES
还是不行。