0

私のアプリで現在起こっていることは次のとおりです。

ロック: iPhone ロック ボタンを押す -> 音声一時停止
ロック解除: iPhoneUnlocked ボタンを押す -> 音声再開 -> スライドしてロック解除 -> アプリが表示される

ロック解除シーケンスを次のようにしたい:

ロック解除: iPhoneUnlock ボタンを押す -> スライドしてロックを解除 -> オーディオを再開 -> アプリが表示される

私はOS 2.2.1とAVFoundation Frameworkを使用しています.これは私がすでに試したことです:

  • AppDelegate の applicationWillResignActive および applicationDidBecomeActive コールバックを使用しようとしましたが、機能しません。applicationDidBecomeActive は正しい時間 (つまり、ユーザーがスライドしてデバイスのロックを解除したとき) に呼び出されますが、ロック解除ボタンが押されるとすぐにオーディオが再開されます (オーディオ セッションのためだと思います)。

  • AVAudioPlayerDelegate の audioPlayerBeginInterruption および audioPlayerEndInterruption セレクターを実装しました。これらのメソッドは呼び出されないようです (ログ呼び出しを配置し​​ました)。オーディオ ファイルの再生が終了すると audioPlayerDidFinishPlaying が正しく呼び出されるため、デリゲートを適切に設定していると確信しています。

PS: 明らかでない場合は、デバイスでテストしています

4

2 に答える 2

0

どうやら、オーディオセッションが中断されたときにのみ呼び出されるようです。つまり、オーディオを再生していて、アクティブなセッションを要求する他のオーディオによって中断されている場合です。つまり、電話が非アクティブになったときに電話がかかってくることはありませんが、たとえば電話を受けたときに電話がかかってきます。しかし、それでも、AVAudioplayerがその時点でアクティブだったときにのみ呼び出されます。私はまだそのくだらないシステムと格闘しています...

于 2009-11-03T10:03:48.237 に答える