SoundPool クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。
[Android.Runtime.Register("android/media/SoundPool", DoNotGenerateAcw=true)]
public class SoundPool : Java.Lang.Object
[<Android.Runtime.Register("android/media/SoundPool", DoNotGenerateAcw=true)>]
type SoundPool = class
inherit Object
- 継承
- 属性
注釈
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。
SoundPool は、APK 内のリソースまたはファイル システム内のファイルからメモリに読み込むことができるサウンド サンプルのコレクションです。 SoundPool ライブラリは MediaCodec サービスを使用して、オーディオを生の 16 ビット PCM にデコードします。 これにより、アプリケーションは、CPU の負荷と再生中の展開の待機時間を被ることなく、圧縮されたストリームで出荷できます。
サウンドプールのサウンドはメモリに事前にコーディングされているため、短くすることが予想されます。 デコードされた各サウンドは、内部的に 1 メガバイトのストレージに制限されます。これは、44.1kHz ステレオで約 5.6 秒を表します (より低いサンプル レートまたはモノラルのチャネル マスクでは、継続時間が比例して長くなります)。 デコードされたオーディオ サウンドは、サウンドごとの 1 メガバイトの記憶域領域を超えると切り捨てられます。
SoundPool では、低待機時間の再生に加えて、一度にレンダリングされるオーディオ ストリームの数を管理することもできます。 SoundPool オブジェクトが構築されると、maxStreams パラメーターは、この単一の SoundPool から一度に再生できるストリームの最大数を設定します。 SoundPool は、アクティブなストリームの数を追跡します。 ストリームの最大数を超えた場合、SoundPool は、優先度に基づいて以前に再生したストリームを自動的に停止し、次にその優先度内の年齢別に停止します。 ストリームの最大数を制限すると、CPU の読み込みを制限し、オーディオミキシングがビジュアルや UI のパフォーマンスに影響を与える可能性を減らすことができます。
0 以外のループ値を設定することで、サウンドをループできます。 値が -1 の場合、サウンドは永久にループします。 この場合、アプリケーションは stop() 関数を明示的に呼び出してサウンドを停止する必要があります。 その他の 0 以外の値を指定すると、指定した回数だけサウンドが繰り返されます。たとえば、値が 3 の場合、サウンドは合計 4 回再生されます。
再生速度を変更することもできます。 再生速度が 1.0 の場合、サウンドは元の周波数で再生されます (必要に応じて、ハードウェア出力周波数に再サンプリングされます)。 再生レートが 2.0 の場合、サウンドは元の周波数の 2 倍で再生され、再生レートが 0.5 の場合は元の周波数の半分で再生されます。 再生レートの範囲は 0.5 ~ 2.0 です。
優先度が低いから高く実行されます。つまり、数値が高いほど優先順位が高くなります。 優先順位は、play() の呼び出しによって、SoundPool の作成時に maxStreams パラメーターによって確立された値を超えるアクティブなストリームの数が発生する場合に使用されます。 この場合、ストリーム アロケーターは優先順位の最も低いストリームを停止します。 同じ優先順位のストリームが複数ある場合は、停止する最も古いストリームが選択されます。 新しいストリームの優先度がすべてのアクティブストリームよりも低い場合、新しいサウンドは再生されず、play() 関数はゼロの streamID を返します。
一般的なユース ケースを見てみましょう。ゲームは複数のレベルのプレイで構成されています。 レベルごとに、そのレベルでのみ使用される一連の固有のサウンドがあります。 この場合、ゲーム ロジックは、最初のレベルが読み込まれるときに新しい SoundPool オブジェクトを作成する必要があります。 レベル データ自体には、このレベルで使用されるサウンドの一覧が含まれている場合があります。 読み込みロジックは、適切な SoundPool.load() 関数を呼び出すサウンドの一覧を反復処理します。 これは通常、再生に必要になる前にオーディオを未加工の PCM 形式に展開する時間を許容するために、プロセスの早い段階で行う必要があります。
サウンドが読み込まれて再生が開始されると、アプリケーションは SoundPool.play() を呼び出してサウンドをトリガーできます。 再生ストリームは一時停止または再開できます。また、アプリケーションは、ドップラーまたは合成効果の再生速度をリアルタイムで調整することで、ピッチを変更することもできます。
リソースの制約によりストリームを停止できるため、streamID はストリームの特定のインスタンスへの参照であることに注意してください。 より高い優先度のストリームの再生を許可するためにストリームが停止された場合、ストリームは無効になります。 ただし、アプリケーションはエラーなしで streamID のメソッドを呼び出すことができるようになります。 これは、アプリケーションがストリームライフサイクルに関心を持つ必要がないため、プログラムロジックを簡素化するのに役立ちます。
この例では、プレイヤーがレベルを完了したら、ゲーム ロジックで SoundPool.release() を呼び出して使用中のすべてのネイティブ リソースを解放し、SoundPool 参照を null に設定する必要があります。 プレイヤーが別のレベルを開始すると、新しい SoundPool が作成され、サウンドが読み込まれ、再生が再開されます。
の Java ドキュメントandroid.media.SoundPool
このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
SoundPool(Int32, Stream, Int32) |
古い.
コンストラクターです。 |
SoundPool(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
プロパティ
Class |
この |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
JniIdentityHashCode |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
JniPeerMembers |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 |
PeerReference |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
メソッド
AutoPause() |
すべてのアクティブなストリームを一時停止します。 |
AutoResume() |
以前にアクティブだったすべてのストリームを再開します。 |
Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
Dispose() |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
Dispose(Boolean) |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
JavaFinalize() |
オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
Load(AssetFileDescriptor, Int32) |
資産ファイル記述子からサウンドを読み込みます。 |
Load(Context, Int32, Int32) |
指定した APK リソースからサウンドを読み込みます。 |
Load(FileDescriptor, Int64, Int64, Int32) |
FileDescriptor からサウンドを読み込みます。 |
Load(String, Int32) |
指定したパスからサウンドを読み込みます。 |
LoadAsync(AssetFileDescriptor, Int32) |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 |
LoadAsync(Context, Int32, Int32) |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 |
LoadAsync(FileDescriptor, Int64, Int64, Int32) |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 |
LoadAsync(String, Int32) |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 |
Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
Pause(Int32) |
再生ストリームを一時停止します。 |
Play(Int32, Single, Single, Int32, Int32, Single) |
サウンド ID からサウンドを再生します。 |
Release() |
SoundPool リソースを解放します。 |
Resume(Int32) |
再生ストリームを再開します。 |
SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
SetLoop(Int32, Int32) |
ループ モードを設定します。 |
SetOnLoadCompleteListener(SoundPool+IOnLoadCompleteListener) |
OnLoadCompleteListener のコールバック フックを設定します。 |
SetPriority(Int32, Int32) |
ストリームの優先順位を変更します。 |
SetRate(Int32, Single) |
再生速度を変更します。 |
SetVolume(Int32, Single, Single) |
ストリーム ボリュームを設定します。 |
Stop(Int32) |
再生ストリームを停止します。 |
ToArray<T>() |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
ToString() |
オブジェクトの文字列表現を返します。 (継承元 Object) |
Unload(Int32) |
サウンド ID からサウンドをアンロードします。 |
UnregisterFromRuntime() |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
Wait() |
現在のスレッドが目覚めるまで待機させます。通常<は、通知<>/em> または <em>割り込み/em> を受け<取ります。 (継承元 Object) |
Wait(Int64, Int32) |
現在のスレッドが目覚めるまで待機します。通常<><は、通知/em> または <em>中断</em> によって、または一定のリアルタイムが経過するまで待機します。 (継承元 Object) |
Wait(Int64) |
現在のスレッドが目覚めるまで待機します。通常<><は、通知/em> または <em>中断</em> によって、または一定のリアルタイムが経過するまで待機します。 (継承元 Object) |
イベント
LoadComplete |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 |
明示的なインターフェイスの実装
IJavaPeerable.Disposed() |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
IJavaPeerable.Finalized() |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
IJavaPeerable.JniManagedPeerState |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
拡張メソッド
JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
JavaCast<TResult>(IJavaObject) |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 |
GetJniTypeName(IJavaPeerable) |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 |