このクラスを使用AVAudioPlayer
して、アプリで.mp3ファイルを再生しています。イヤホンがプログラムでデバイスに接続されているかどうかを確認することはできますか?
第1世代のiPodデバイスでは、イヤホンが接続されていない場合、音量コントロールバーは非表示になります(音楽とビデオの場合)。
このクラスを使用AVAudioPlayer
して、アプリで.mp3ファイルを再生しています。イヤホンがプログラムでデバイスに接続されているかどうかを確認することはできますか?
第1世代のiPodデバイスでは、イヤホンが接続されていない場合、音量コントロールバーは非表示になります(音楽とビデオの場合)。
AudioSessionGetProperty
プロパティを使用して呼び出すことにより、現在のオーディオの「ルート」を取得できkAudioSessionProperty_AudioRoute
ます。これにより、「Headphone」や「Speaker」などの文字列が得られます。
ルートが変更されたときにリッスンするために使用することもできAudioSessionAddPropertyListener
ます(例:ヘッドホンの切断)
こちらのアップルのドキュメントをご覧ください
AudioSessionGetPropertyおよびAudioSessionAddPropertyListenerは、iOS7で非推奨になりました。
代わりに、以下を使用してください。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;
}
}
2つのアプローチがあります:
1)オーディオルートの瞬間的な状態を確認します
ヘッドフォン(マイクではない)がiOSデバイスに接続されているかどうかを検出します
この回答は、ヘッドホンが接続されているかどうかを検出するための既成の方法を提供します。
2)ルート変更イベントを監視し、ヘッドセットと非ヘッドセットの間でルートが変更されるたびにフラグを設定します
iPhoneでイヤピースをプログラムで検出するにはどうすればよいですか?
(おそらく、最初のリンクからこれにコードを追加して、ヘッドセット/非ヘッドセットのステータスがルート変更コールバック内で変更されたかどうかを実際に判断する必要があります)