Я использую приведенный ниже код, чтобы определить, подключен ли какой-либо «наушник» к устройству iOS.iPod touch не обнаруживает наушники
//find out, if any earphones are connected to the device
- (BOOL)isHeadsetPluggedIn {
UInt32 routeSize = sizeof (CFStringRef);
CFStringRef route;
NSLog(@"Inside 'isHeadsetPluggedIn'");
// Registers the audio route change listener callback function
AudioSessionAddPropertyListener (kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, (__bridge void *)(self));
OSStatus error = AudioSessionGetProperty (kAudioSessionProperty_AudioRoute,
&routeSize,
&route);
/* Known values of route:
* "Headset"
* "Headphone"
* "Speaker"
* "SpeakerAndMicrophone"
* "HeadphonesAndMicrophone"
* "HeadsetInOut"
* "ReceiverAndMicrophone"
* "Lineout"
*/
if (!error && (route != NULL)) {
NSString* routeStr = (NSString*)CFBridgingRelease(route);
NSRange headphoneRange = [routeStr rangeOfString : @"Head"];
NSLog(@"route %@", routeStr);
if (headphoneRange.location != NSNotFound) {
return YES;
}
} else {
NSLog(@"Error %d while retrieving audio property", error);
}
return NO;
}
Приведенный выше код отлично подходит для iPad, iPad и iPhone. Но в устройстве «iPod touch» функция «AudioSessionGetProperty» возвращает ошибку «Ошибка» 560557673 «при восстановлении свойства звука». Следовательно, он не обнаруживает, подключен ли какой-либо «наушник» к устройству «iPod touch».
Как узнать «наушник» на устройстве «iPod touch»?