题
我现在用的是AVAudioPlayer
类在我的应用程序播放.mp3文件。是否有可能来检查耳机是否被连接到该设备编程?
在第一代iPod设备,所述音量控制条是隐藏的(对于音乐和视频)时,没有耳机连接。
解决方案
您可以通过调用AudioSessionGetProperty
与kAudioSessionProperty_AudioRoute
属性来获取当前的音频“路线”。
这给你一个字符串,如“耳机”或“扬声器”。
您还可以使用AudioSessionAddPropertyListener
侦听时的路由变化(例如,断开耳机)
请参阅苹果文档这里
其他提示
AudioSessionGetProperty 和 AudioSessionAddPropertyListener 在IOS 7已被弃用
相反,使用:AVAudioSessionRouteChangeNotification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRouteChange:) name:AVAudioSessionRouteChangeNotification object:nil];
监听器,
-(void)handleRouteChange:(NSNotification*)notification
{
NSInteger reason = [[[notification userInfo] objectForKey:AVAudioSessionRouteChangeReasonKey] integerValue];
switch (reason) {
case AVAudioSessionRouteChangeReasonOldDeviceUnavailable :
break;
case AVAudioSessionRouteChangeReasonNewDeviceAvailable :
break;
case AVAudioSessionRouteChangeReasonOverride :
break;
case AVAudioSessionRouteChangeReasonCategoryChange :
break;
case AVAudioSessionRouteChangeReasonWakeFromSleep :
break;
case AVAudioSessionRouteChangeReasonNoSuitableRouteForCategory :
break;
case AVAudioSessionRouteChangeReasonRouteConfigurationChange :
break;
case AVAudioSessionRouteChangeReasonUnknown:
default:
break;
}
}
有两种方法:
<强> 1)检查音频路由的瞬时状态 强>
此答案配料你有现成的方法,用于检测是否耳机插入。
<强> 2)监视路由改变事件,并设置一个标志每当耳机和非耳机之间的路由变化 强>
(可能会想从第一个链接到该代码添加到实际确定是否耳机/非耳机地位路线改变回调中被改变)
不隶属于 StackOverflow