我现在用的是AVAudioPlayer类在我的应用程序播放.mp3文件。是否有可能来检查耳机是否被连接到该设备编程?

在第一代iPod设备,所述音量控制条是隐藏的(对于音乐和视频)时,没有耳机连接。

有帮助吗?

解决方案

您可以通过调用AudioSessionGetPropertykAudioSessionProperty_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)检查音频路由的瞬时状态

检测是否耳机(未麦克风)被插入到iOS设备

此答案配料你有现成的方法,用于检测是否耳机插入。

<强> 2)监视路由改变事件,并设置一个标志每当耳机和非耳机之间的路由变化

如何以编程检测iphone听筒?

(可能会想从第一个链接到该代码添加到实际确定是否耳机/非耳机地位路线改变回调中被改变)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top