2016-04-24 12 views
3

私はiOSアプリケーションを作成しています(Xamarinを使用しています)、それはトレーニングアプリケーションです。本当にシンプル。あなたはiTunesを起動し、バックグラウンドでいくつかの音楽を再生し、このアプリケーションは、トレーニングのさまざまな部分で定期的な音声プロンプトを持っています。基本的なHIIT/Tabataタイマーです。AVAudioSessionアプリケーションのボリュームシステムのボリュームとは無関係

私はAVAudioSessionを使用して、音声が聞こえてきて、期待どおりに機能するときにバックグラウンドオーディオをダックします。しかし、私は、ユーザーが設定を介して音声プロンプトの音量レベルを設定できるようにしたい。私はそれがAVAudioSessionの音量レベルを設定するのと同じくらい簡単かもしれないと思っていましたが、すぐにそれが読み取り専用であることがわかりました。

私はシステムボリュームを変更したくありません。 システムの音量レベルに関係なく、自分のアプリケーションの音量を設定したいだけです。これは可能です。私はこれを知っているので、私はこの事をしてくれるアプリを私の目の前に持っているからです。私の唯一の問題は、私のAVAudioSessionの中に私のアプリのオーディオの音量を設定する方法がわからないということです。

システムの音量レベルとは独立して、アプリケーションが放音する音量レベルを設定する方法を知っている人はいますか?

以下

私はAVAudioSessionをアクティブにし、無効にする私の呼び出しをラップするために使用するコードです:

AudioPlayerあなたが設定することができます:あなたは、読み取り専用ボリュームのプロパティを持っていますが、と言ったように

private void ActivateAudioSession() 
{ 
    var session = AVAudioSession.SharedInstance(); 
    session.SetCategory(AVAudioSessionCategory.Playback, AVAudioSessionCategoryOptions.DuckOthers); 
    session.SetActive(true); 
} 

private void DeactivateAudioSession() 
{ 
    new System.Threading.Thread(new System.Threading.ThreadStart(() => 
    { 
     var session = AVAudioSession.SharedInstance(); 
     session.SetActive(false); 
    })).Start(); 
} 

答えて

2

AVAudioSessionそのような1.0最大https://developer.xamarin.com/api/property/AVFoundation.AVAudioPlayer.Volume/へサイレント0.0からボリューム:

 string path = NSBundle.PathForResourceAbsolute ("audiofile", "mp3", NSBundle.MainBundle.ResourcePath); 
     var url = NSUrl.FromFilename (path); 
     var audioPlayer = AVAudioPlayer.FromUrl (url); 
     audioPlayer.Volume = 0.5f; 
     audioPlayer.Play(); 

またはMPMusicPlayerControllerを使用することができますが、私はそれが音楽のみを再生することができると思いますhttps://developer.xamarin.com/api/property/MonoTouch.MediaPlayer.MPMusicPlayerController.Volume/

+0

ハ。私はオーディオプレーヤーが実際のアプリ内再生を制御していることを完全に忘れていて、自分のボリュームを持っています。それを指摘してくれてありがとう。 –

関連する問題