【发布时间】:2013-04-26 07:19:47
【问题描述】:
我遵循了关注我的扬声器状态的方法:
AudioSession.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
还是不行。
【问题讨论】:
-
AudioSessionSetProperty有返回值,你检查了吗? -
是的,只返回
OSStatus=0 -
setCategory 调用的返回值是多少?并且,如果为 NO,则相对误差
-
setCategory返回YES,没有错误 -
"什么都没有发生" ...您的意思是 - 扬声器始终处于启用状态?还是...?
标签: ios ipad avaudiosession