4

我正在使用该AVAudioPlayer课程在我的应用程序中播放 .mp3 文件。是否可以检查耳机是否以编程方式连接到设备?

在第一代 iPod 设备中,当没有连接耳机时,音量控制栏是隐藏的(用于音乐和视频)。

4

3 回答 3

5

AudioSessionGetProperty您可以通过调用该kAudioSessionProperty_AudioRoute属性来获取当前的音频“路线” 。这会为您提供一个字符串,例如“耳机”或“扬声器”。

您还可以AudioSessionAddPropertyListener用来监听路线何时发生变化(例如,断开耳机)

在此处查看苹果文档

于 2009-11-11T10:03:33.587 回答
2

AudioSessionGetPropertyAudioSessionAddPropertyListener在 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;
    }
}
于 2014-12-11T16:49:59.400 回答
0

有两种方法:

1) 检查音频路由的瞬时状态

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

这个答案为您提供了一种现成的方法来检测是否插入了耳机。

2) 监听路由改变事件,并在耳机和非耳机之间的路由改变时设置一个标志

如何以编程方式检测iphone中的听筒?

(可能希望将第一个链接中的代码添加到此链接中,以实际确定耳机/非耳机状态是否已在路由更改回调中更改)

于 2011-06-17T05:54:47.693 回答