Проверка наушников, подключенных к устройству программно? - PullRequest
4 голосов
/ 11 ноября 2009

Я использую класс AVAudioPlayer для воспроизведения файлов .mp3 в моем приложении. Можно ли проверить, подключены ли наушники к устройству программно?

В устройствах iPod первого поколения панель управления громкостью скрыта (для музыки и видео), когда наушники не подключены.

Ответы [ 3 ]

5 голосов
/ 11 ноября 2009

Вы можете получить текущий аудио маршрут, вызвав AudioSessionGetProperty со свойством kAudioSessionProperty_AudioRoute. Это дает вам строку, такую ​​как «Наушники» или «Динамик».

Вы также можете использовать AudioSessionAddPropertyListener для прослушивания при изменении маршрута (например, отсоединение наушников)

См. Документы Apple здесь

2 голосов
/ 11 декабря 2014

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;
    }
}
0 голосов
/ 17 июня 2011

Есть два подхода:

1) проверка мгновенного состояния звукового маршрута

Определить, подключены ли наушники (не микрофон) к устройству iOS

Этот ответ предоставляет вам готовый метод определения, подключены ли наушники.

2) отслеживать события изменения маршрута и устанавливать флаг при каждом изменении маршрута между гарнитурой и не гарнитурой

Как программно обнаружить наушник в iphone?

(вероятно, хотелось бы добавить в него код из первой ссылки, чтобы фактически определить, было ли изменено состояние гарнитуры / не гарнитуры в обратном вызове изменения маршрута)

...