web-dev-qa-db-ja.com

Android:SoundPoolのコンストラクターが推奨されないのはなぜですか?

もう使えないということですか?最小APIが21未満に設定されている場合、何を使用すればよいですか?また、それを使用して構築された古いアプリケーションは新しいOSで動作するため、警告を無視しても問題ありませんか?

17
Harsha

SoundPoolコンストラクターが廃止された理由

古い SoundPoolコンストラクタ は、_ SoundPool.Builder を使用してSoundPoolオブジェクトを構築するために廃止されました。 古いコンストラクタ には、maxStreamsstreamType、およびsrcQualityの3つのパラメータがありました。

  • maxStreamsパラメーターは ビルダーで設定 にすることができます。 (設定しない場合のデフォルトは1です。)
  • streamTypeパラメータは AudioAttributes に置き換えられ、streamTypeよりもわかりやすくなっています。 ( ここ で始まるさまざまなストリームタイプ定数を参照してください。)AudioAttributesを使用すると、usage(なぜサウンドを再生しています)、コンテンツタイプ(再生内容)、フラグ(それを再生する方法)。
  • srcQualityパラメータは、サンプルレートコンバータの品質を設定するために存在したと考えられます。ただし、これは実装されておらず、設定しても効果がありませんでした。

したがって、maxStreamsは明示的に設定する必要がなく、AudioAttributesにはstreamTypeより多くの情報が含まれているため、SoundPool.Builderは古いコンストラクタよりも優れており、役に立たないsrcQualityパラメータが削除されました。そのため、古いコンストラクターは廃止されました。

API 21より前のバージョンをサポートするための非推奨のコンストラクターの使用

古いコンストラクタを引き続き使用し、必要に応じて警告を無視することができます。 「非推奨」とは、引き続き機能することを意味しますが、推奨される方法ではなくなります。

古いバージョンをサポートしながら新しいコンストラクターを利用したい場合は、ifステートメントを使用してAPIバージョンを選択できます。

SoundPool mSoundPool;
int mSoundId;

//...

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
     mSoundPool = new SoundPool.Builder()
            .setMaxStreams(10)
            .build();
} else {
    mSoundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 1);
}

mSoundId = mSoundPool.load(this, R.raw.somesound, 1);

// ...

mSoundPool.play(mSoundId, 1, 1, 1, 0, 1);

詳しくは このビデオ をご覧ください。

31
Suragch

使用する - SoundPool.Builder 代わりに。サウンドプールの作成方法が変更されました。新しい方法を使用することをお勧めします。

3
Augusto Carmo