2011-09-12 5 views
2

私のアプリでは、 "Ringer & Alert Volume"レベルでアラーム/通知をしたいと思っています。"Ringer&Alert Volume"レベルでサウンドを再生する方法

換言すれば、電話の呼び出し音またはアラームが使用される音量レベル(環境設定/サウンド/リンガーおよびアラート)にあります。音量ボタンで変わるシステム音量とは異なります。

また、30秒以上再生する必要があります。

クロックアプリによっては可能性があるので、それは可能です。

更新: OK私は唯一の解決策を見つけました。 AudioServicesCreateSystemSoundIDを使用して、自分のサウンドファイル(aif、wavなどmp3やその他の圧縮されたオーディオはありません)をロードする場合は動作します。 唯一の問題は30秒以下でなければならないということですが、30秒にカットして1曲ずつ再生することができます。

サイレントスイッチをオンにしても問題ありません。

コード:

SystemSoundID mySound; 
    AudioServicesCreateSystemSoundID(CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("mySound"), CFSTR("aif"), NULL), &mySound); 
    AudioServicesPlaySystemSound(mySound); 

私はOpenALのはそれを行う必要があると思われます。誰もaif/wavファイルを読み込んでiPhone上で再生する簡単な例がありますか?私はいくつかの複雑な例を見つけましたが、私が必要とするのは、ただ再生して音を止めることです(たとえ音が漏れていても問題ありません)。

+0

こんにちはTibidaboのは、あなたがまだ「リンガー&アラート音量」にAVAudioPlayerを使用するために解決策を見つけましたか?私は現在同じ質問をしていますが、長引いた検索の後には、これは簡単にはできないと思います。もしあなたがこれについて肯定的な解決策を持っていれば、いくつかの光を発してください。ありがとう! – Anthony

+0

申し訳ありませんが解決策を見つけることができませんでした。私は上記のアップデートに入れたものを使用しましたが、それは理想的ではありません。 – Tibidabo

答えて

2

私はそれを自分で見つけました。私はAudioServicesCreateSystemSoundIDを使用して、独自のサウンドファイル(aif、wav、その他のmp3やその他の圧縮されたオーディオはありません)をロードする必要があります 唯一の問題は30秒以下でなければならないということです。それらを一枚ずつ。それは

コードのサイレントスイッチでは動作しません

SystemSoundID mySound; 
    AudioServicesCreateSystemSoundID(CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("mySound"), CFSTR("aif"), NULL), &mySound); 
    AudioServicesPlaySystemSound(mySound); 
0

AVAudioPlayerクラスを調べる必要があります。それは任意の持続時間のサウンドファイルを再生することができますし、あなたが再生する指定されたファイルのボリューム出力を制御することができます。私は私のマックの前にいない私はコードを提供するだろう。あなたにさらなる指示が必要な場合は教えてください。

+0

それは私が使用しているものです。これはボリュームプロパティを持っていますが、システムボリュームに相対的なゲインしか設定できません。 – Tibidabo

関連する問題