9

ストリーミング音楽プレーヤーを作成しましたが、フォアグラウンドで正常に動作します。しかし、iOS4 のバックグラウンドでは、次の曲を自動的に再生しません。(リモコンは動作します) 理由はAudioQueueStart return -12985

私はすでにオーディオセッションをチェックしています。大丈夫です。AudioQueueStart音楽の再生を開始するときに使用します。どのように削除できますAudioQueueStartか?

- (void)play
{
    [self setupAudioQueueBuffers];    // calcluate the size to use for each audio queue buffer, and calculate the // number of packets to read into each buffer
    OSStatus status = AudioQueueStart(self.queueObject, NULL); 
}

AudioQueueStart失敗の件名について、ウェブで回答を読みました。

確認すべきことの 1 つは、AudioSession が最初にアクティブになっていることです。私の場合、新しい曲を開始する前に、曲の変更間でセッションを非アクティブに設定していました。AudioSessionSetActive(false);

この AudioQueueStart を削除すると、バックグラウンドから問題なく動作します。

4

5 に答える 5

3

私の経験では、アプリで再生を開始しようとすると、別のアプリが既にアクティブなオーディオ セッションを持っているため、-12985 メッセージが発生します。オプションは、1) ユーザーに他のアプリを閉じるように指示するか、2) ミックス モードを設定します (kAudioSessionProperty_OverrideCategoryMixWithOthers を参照)。

ミックス モードの欠点は、ロック画面のアートやリモコンに依存している場合、ミックス モードを設定すると機能しないことです。

于 2012-12-10T16:28:38.283 に答える
2

私も一週間前にそのような問題に直面しました。解決策を見つけるために2日間費やしましたが、見つけました。このリンクが役立つかもしれません(公式の回答です):http://developer.apple.com/library/ios/#qa/qa1668/_index.html

applicationDidEnterBackground タスク ハンドラーからセッションをアクティブ化してください。これで、アプリケーションはバックグラウンドでサウンドを再生できます。

于 2011-06-03T07:17:15.743 に答える
1

これを参照してください。

おそらく、以下を含める必要があります。

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

下部に向かって、その行がいかに重要であるかが繰り返されます。3 つの主要なオーディオ オーディオ ガイド (AVFoundation、AudioSession、または AudioQueue) のいずれにも言及されていないため、簡単に見逃す可能性があります。

于 2012-09-13T23:09:57.407 に答える
0

iOS7 では、AudioQueueStart は '!int' ('tni!') を返していましたが、ドキュメントやヘッダーに記載されていないことに誰も驚かないでしょう。ただし、これは同じ問題であり、同じ修正 (バックグラウンド タスク ハンドラーでオーディオ セッションをアクティブに設定する) でうまくいきました。

于 2013-12-29T03:57:25.537 に答える
0

私も同じ問題を抱えてる。AudioSessionInterruptionListener を登録し、通話時にオーディオを一時停止し、通話終了後に再開します。ただし、AudioQueueStart を呼び出して再開すると、-12985 エラー コードが返されます。私の解決策は、0.02 秒後に AudioQueueStart を呼び出そうとすることです。理由はわかりません。

于 2013-09-28T16:03:34.297 に答える