オーディオプレーヤーアプリケーションを開発していますが、いずれかのモード(再生モード)でヘッドセットのステータスを検出したいのですが、ジャックが接続されている場合は再生され、そうでない場合は再生されません。
編集以下は私のコードの抜粋です。私がやろうとしていることについての説明もあります。SOで他のスレッドのコードのほとんどを見つけましたが、それでも希望どおりに実行できません。
- (void)isHeadsetPluggedIn {
UInt32 routeSize = sizeof (CFStringRef);
CFStringRef route;
AudioSessionGetProperty (kAudioSessionProperty_AudioRoute,
&routeSize,
&route);
NSString* routeStr = (NSString*)route;
NSRange headsetRange = [routeStr rangeOfString : @"Headset"];
NSRange receiverRange = [routeStr rangeOfString : @"Receiver"];
if(headsetRange.location != NSNotFound) {
// Don't change the route if the headset is plugged in.
NSLog(@"headphone is plugged in ");
//here is the place i want to play music
/* AVAudioPlayer *mySound;
mySound =[[AVAudioPlayer alloc]initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"apple_SIMToolkitPositiveACK" withExtension:@"mp3" ]error:nil];
[mySound play];
//here is the place where i must receive the info about plug-in(headset)
*/
}
else if (receiverRange.location != NSNotFound) {
// Change to play on the speaker
NSLog(@"play on the speaker");
}
else {
NSLog(@"Unknown audio route.");
}
}