2012-04-27 19 views
2

に私はそうのように私のiPad上でいくつかの短いサウンドを再生していない:Play a short sound in iOSサウンドは唯一のデバイス上で動作しますが、シミュレータ

私は私が正常にFinderから再生することができcafファイルを使用しています。今私は、音の再生を実現しようとして手間のかなりのビットを経て、私は理解していないような問題が何であるか興味津々:

  • はオプション1:私が作成しますSystemSoundIDしてすぐにそれを再生する私はデバイスとシミュレータ上で何も聞こえません。

  • オプション2:SystemSoundIDのインスタンス変数を作成し、それをviewDidLoadに初期化すると、私はサウンドを再生できますが、Simulatorではなく、iPadでのみ再生できます。

  • オプション3:代わりにSystemSoundIDを使用しての私も、私はそう、私は任意のサウンドを得ることはありませんviewDidLoadにAVAudioPlayerを作成する必要があり、ここで両方のiPadとシミュレータ上で動作しますが、.wavファイルを再生するAVAudioPlayerを使用することができます私が一人ですべてをやるならば。

最良のオプションは、現在、それはシミュレータとiPadの両方で動作するため、Option 3をのようですが、私はプレイヤーを事前に初期化する必要があるので、私は、私がしたいすべての異なる音のためAVAudioPlayerインスタンスが必要になります非常にメモリワイズではないようです...

は、私が行方不明です何かがあり、それはAudioToolboxフレームワーク(オプション1 &オプション2)を使用して、両方のプラットフォームでサウンドを再生することが可能である遊び、

答えて

3

私はすべてを簡素化するために図書館を書いた。それはAVAudioPlayerをラップし、デバイスとシミュレータの両方でうまく動作します。私は、オーディオプレーヤーを初期化するために、いくつかの半巧妙なものを行うものの

https://github.com/nicklockwood/SoundManager

コードは、非常に簡単です。ライブラリを使用したくない場合は、コードをコピーするだけです。

警告の言葉 - AVAudioPlayerを使用するたびにシミュレータが内部的にいくつかの奇妙な例外をスローします。彼らはアプリケーションにまったく影響を与えませんが、Xcodeでブレーク・オン・例外を有効にした場合、起動時にデバッガに数回ドロップされ、手動で再開する必要があります。あなたはそれを期待していません。

関連する問題