0

私の iPhone アプリケーションでは、ユーザーがいつヘッドフォンを接続したか、または接続していないかを知る必要があります。簡単だ。kAudioSessionProperty_AudioRouteChange をリッスンするコールバックを持つ AudioSessionAddPropertyListener。

何かが起こると、NSLog でログを書きます。ユーザーはヘッドフォンを接続しますか? 通知を受け取り、gdb コンソールに行を表示します。ユーザーはヘッドフォンを取り外しましたか? 同上。

同時に、録音オーディオ キューを開始して、環境のノイズ レベルを感知しています。これもうまく機能します。マイクのノイズ レベルを取得し、オーディオ ルートの変更を問題なく聞くことができます。

私が見つけたのは、中断した後、オーディオ セッションを再アクティブ化し、オーディオ カテゴリを kAudioSessionCategory_RecordAudio に復元したところ、オーディオ ルート通知が少しおかしくなったということです。

ヘッドフォンを接続しても、通知が表示されません。ヘッドフォンのプラグを抜くと、「プラグイン」通知と「プラグ抜き」通知の両方が立て続けに表示されます。

これは、「接続された」通知が遅れ、「接続されていない」通知が到着すると、保留中の通知のキューがフラッシュされるようなものです。

私は何を間違っていますか?時間のかかる通知を受け取るためにオーディオ セッションを正しく復元するにはどうすればよいですか?

編集: iPhone 3G で動作する iPhone OS 3.1.2。3.0 SDK (XCode 3.1.2 内から) でコンパイルされたプログラムを実行しています。

4

1 に答える 1

0

私は同じ問題を抱えていますが、より多くの情報があるため、質問があります。私のような音のためにOpenALを使用していますか?私のように iPod の音楽もサポートしていますか。Quartz メニュー画面ではヘッドフォンの接続が切断されますが、glView ゲーム画面ではほとんどの場合、あなたのように失敗します。場合によっては、最初の切断が機能し、その後失敗することがあります。再接続も失敗することがあるので、クオーツ画面に切り替えると、クリックしなければならない切断ダイアログが半ダース表示されます。これはOpenALサウンド付きです。iPodの音楽では、NSNotificationCenter MPMusicPlayerControllerPlaybackStateDidChangeNotification通知に切り替えますが、これは機能しますが、iPodの音楽が再生されている間のみです。iPhone および iTouch で OS 3.1.0 にビルドされた OS 3.1.3。AudioSessionInitialize() からの戻りエラー コードを見てください。これは私の問題で、最初に呼び出されず、失敗しました。編集:

于 2010-02-17T23:32:56.100 に答える