2011-09-13 9 views
2

まず、私はこれが類似した目的のCベースの質問のコピーであると理解しますが、回答はありませんでした。MonoTouchのAVPlayerでバックグラウンドオーディオを再生しますか?

私のアプリのオーディオにAVPlayerを使用しています。オーディオセッションを正しく設定しています(アプリケーション内でオーディオトラックを再生するとステータスバーに再生アイコンが表示され、マルチタスクドックのプレーヤートランスポートコントロールの横にアプリアイコンが表示されます)。しかし、ホームボタンを押すと、バックグラウンドで再生を続けることができません。音楽はただ消えて止まります。

私は私のするinfo.plistで次のキーがあります。

AVAudioSession audioSession = AVAudioSession.SharedInstance(); 
NSError error; 
audioSession.SetCategory(AVAudioSession.CategoryPlayback.ToString(),out error); 
audioSession.SetActive(true,out error); 

UIApplication.SharedApplication.BeginReceivingRemoteControlEvents(); 

int taskID = 0; 
taskID = UIApplication.SharedApplication.BeginBackgroundTask(delegate 
{ 
    if(taskID !=0) 
    { 
     UIApplication.SharedApplication.EndBackgroundTask(taskID); 
     taskID = 0; 
    } 
}); 


PlaylistManager = new ApolloPlaylistManager(); 
AudioPlayer = new AVPlayer(); 

ない私はそのBeginBackgroundTask部品が必要な場合は必ず、それ:再生を扱う私のクラスで

<key>UIBackgroundModes</key> 
<array> 
<string>audio</string> 
</array> 

を、私は持っていますそのinまたはout、実際に私はそれを必要としないことをかなり確信している場合は動作しません。私は

+0

あなたのプログラムでは、上記のコードはどこに置かれていますか? –

+0

AudioPlaybackManagerというオーディオ再生を管理するクラス内にあります(奇妙なことに、)AppContextと呼ばれるSingletonクラスのプロパティで、AppDelegateに存在します。 FinishedLaunching()メソッド内から初期化されます。 – Dermot

答えて

2

。これらのヒントが正しい方向にあなたをご案内を願って、私は少し愚かな感じ。それは私のキーUIApplicationModesは、その前にスペースを持っていたが判明した。いやはや!

まあ、同様の問題を持つ人には、 info.plistが次のようになっていることを確認してください

<key>UIBackgroundModes</key> 
<array> 
<string>audio</string> 
</array> 

とセットアップこのようなあなたの再生コード(これはMonoTouchである、覚えておいてください):

AVAudioSession audioSession = AVAudioSession.SharedInstance(); 
NSError error; 
audioSession.SetCategory(AVAudioSession.CategoryPlayback.ToString(),out error); 
     audioSession.SetActive(true,out error); 

     UIApplication.SharedApplication.BeginReceivingRemoteControlEvents(); 

     AudioPlayer = new AVPlayer(); 
1

はあなたが適切AVAudioSessionを設定していなかったようだ:-(数日間、この上で立ち往生してきたように、すべての任意のヒントを大幅に、感謝しています。thisthisを見てみましょう。

Iを[OK]を

0

私は1つのビューを記録した同様の問題を抱えていたし、別のビューには、その記録を再生しました。空であったときだけ録音が動作する(5kbのファイルが生成される)場合があります。エラーメッセージは表示されません。欲求不満の時間の後、私はダーモットすることにより、上記のポストに出くわし、それがAVAudioRecorderAVAudioSessionを追加することで動作するようになった:

AVAudioSession audioSession = AVAudioSession.SharedInstance(); 

      audioSession.SetCategory (AVAudioSession.CategoryRecord,out error); 
      audioSession.SetActive(true, out error); 


     recorder = AVAudioRecorder.ToUrl (url, settings, out error); 

と同じコードが、CategoryPlaybackCategoryRecordを変更しました。

audioSession.SetCategory (AVAudioSession.CategoryPlayback,out error); 
0

私はこれが古い質問です知っているが、ちょうど私が経験したものを追加する:

  1. AVAudioSession.SharedInstance();私のデバイスでは動作しませんでしたが、新しいインスタンスを作成するAVAudioSession audiosession = new AVAudioSession(); Info.plistのRequiredBackgroundModes値で

  2. は、今まで "オーディオ"

  3. なく

として "音コンテンツ" 役に立てば幸いです。

関連する問題