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 が作成され、サウンドが読み込まれ、再生が再開されます。
の android.media.SoundPool
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
コンストラクター
SoundPool(Int32, Stream, Int32) |
古い.
コンストラクターです。 |
SoundPool(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
プロパティ
Class |
この |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
JniIdentityHashCode |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
JniPeerMembers |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 |
PeerReference |
SoundPool クラスは、アプリケーションのオーディオ リソースを管理および再生します。 (継承元 Object) |
ThresholdClass |
この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
ThresholdType |
この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
メソッド
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) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。 (継承元 Object) |
Wait(Int64, Int32) |
現在のスレッドが起動するまで待機します。通常<は、通知></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 クラスは、アプリケーションのオーディオ リソースを管理および再生します。 |