Android:为什么 SoundPool 的构造函数被弃用了?
2022-09-01 22:38:32
这是否意味着我们不能再使用它了?如果 min API 设置为低于 21,我们应该使用什么?另外,是否可以忽略该警告,因为使用它构建的旧应用程序在新的操作系统上工作?
这是否意味着我们不能再使用它了?如果 min API 设置为低于 21,我们应该使用什么?另外,是否可以忽略该警告,因为使用它构建的旧应用程序在新的操作系统上工作?
旧的 SoundPool
构造函数已被弃用,取而代之的是使用 SoundPool.Builder
来构建对象。旧构造函数有三个参数:、 和 。SoundPool
maxStreams
streamType
srcQuality
maxStreams
AudioAttributes
,后者比 更具描述性。(请参阅从这里开始的不同流类型常量。您可以指定用法(播放声音的原因),内容类型(正在播放的内容)和标志(如何播放)。streamType
streamType
AudioAttributes
srcQuality
因此,比旧的构造函数更好,因为不需要显式设置,包含的信息比,并且无用的参数被消除。这就是旧构造函数被弃用的原因。SoundPool.Builder
maxStreams
AudioAttributes
streamType
srcQuality
如果您愿意,您仍然可以使用旧的构造函数并忽略警告。“已弃用”意味着它仍然有效,但不再是推荐的做事方式。
如果您希望在仍然支持旧版本的同时使用新构造函数,则可以使用语句来选择 API 版本。if
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);
观看此视频了解更多详情。