1

AudioSessionGetProperty / kAudioSessionProperty_AudioInputAvailableを介して iPod touch G2 にマイクが接続されているかどうかを検出する方法に関する記事は多数ありますが、iPod touch G1 に接続されているヘッドフォンの検出に関する記事は見たことがありません。

復習するには: iPod touch G2 ハードウェアは、次の点で iPod touch G1 ハードウェアと異なります。

  • iPod touch G2にはスピーカーが内蔵されています
  • iPod touch G2 は、ヘッドフォン ポートからマイクを使用できます。

役立つようにサウンドを再生する必要があるアプリがあり、ヘッドフォンを接続するとアプリが役立つことを示す検出器が必要です。

私の最初の試行では、ヘッドホンが iPod touch G1 に接続されていない場合でも、AudioSession API (具体的にはkAudioSessionProperty_AudioRoute定数を使用したAudioSessionGetProperty ) が常に「ヘッドホン」を報告することが示されました。

何か不足していますか?AudioSession 呼び出しと相互接続されているものはありますか? 誰かが iPod touch G1 でこれを試して、別の結果を得た場合は? AudioSession API を織り交ぜて、私が求めているものを得る別の方法はありますか?

これはすべて、iPhone OS 3.0 および実際の iPod touch G1 ハードウェア上の iPhone OS 3.0 SDK に反するものです。

前もって感謝します、 --Batgar

4

5 に答える 5

2

この方法で簡単に取得できます。

- (BOOL)isHeadsetPluggedIn {
UInt32 routeSize = sizeof (CFStringRef);
CFStringRef route;

OSStatus error = AudioSessionGetProperty (kAudioSessionProperty_AudioRoute,
&routeSize,
&route);

if (!error && (route != NULL) && ([route isEqual:@"HeadsetInOut"])) {
return YES;
}

return NO;
}
于 2012-03-28T15:35:02.987 に答える
0

SpeakHere から

エラー = AudioSessionGetProperty(kAudioSessionProperty_AudioInputAvailable, &size, &inputAvailable); if (error) printf("エラー GETTING INPUT AVAILABILITY! %d\n", error); btn_record.enabled = (inputAvailable) ? はい・いいえ;

于 2010-01-01T10:29:40.283 に答える