Har*_*sha 16 java audio android constructor deprecated
这是否意味着我们不能再使用它了?如果min API设置低于21,我们应该使用什么?此外,是否可以忽略该警告,因为使用它构建的旧应用程序可以在新操作系统上运行?
Sur*_*gch 29
旧的SoundPool构造函数已弃用,转而使用SoundPool.Builder构建SoundPool对象.在老的构造函数有三个参数:maxStreams,streamType和srcQuality.
maxStreams参数仍可使用Builder进行设置.(如果你没有设置它,它默认为1.)streamType参数被替换AudioAttributes,这是比更具描述streamType.(请参阅此处开始的不同流类型常量.)AudioAttributes您可以指定用法(播放声音的原因),内容类型(正在播放的内容)和标记(如何播放).srcQuality推测,该参数可用于设置采样率转换器的质量.但是,它从未实现过,设置它没有任何效果.因此,SoundPool.Builder比旧的构造函数更好,因为maxStreams不需要显式设置,AudioAttributes包含更多信息streamType,并且srcQuality消除了无用的参数.这就是旧构造函数被弃用的原因.
如果您愿意,您仍然可以使用旧的构造函数并忽略警告."弃用"意味着它仍然有效但不再是推荐的做事方式.
如果您希望在仍支持旧版本的同时使用新构造函数,则可以使用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);
Run Code Online (Sandbox Code Playgroud)
观看此视频了解更多详情.