Java Android:为什么声音池的构造函数不推荐使用?

Java Android:为什么声音池的构造函数不推荐使用?,java,android,audio,constructor,deprecated,Java,Android,Audio,Constructor,Deprecated,这是否意味着我们不能再使用它了? 如果最小API设置在21以下,我们应该使用什么? 另外,当使用它构建的旧应用程序在新操作系统上工作时,可以忽略该警告吗?请改用它。声音池的创建方式已更改。我们鼓励您使用新方法。为什么不推荐使用声音池构造函数 旧版本被弃用,取而代之的是用于构建SoundPool对象。有三个参数:maxStreams、streamType和srcQuality maxStreams参数仍然可以是。如果不设置,则默认为1。 streamType参数替换为,这比streamType更具

这是否意味着我们不能再使用它了? 如果最小API设置在21以下,我们应该使用什么? 另外,当使用它构建的旧应用程序在新操作系统上工作时,可以忽略该警告吗?

请改用它。声音池的创建方式已更改。我们鼓励您使用新方法。

为什么不推荐使用声音池构造函数 旧版本被弃用,取而代之的是用于构建SoundPool对象。有三个参数:maxStreams、streamType和srcQuality

maxStreams参数仍然可以是。如果不设置,则默认为1。 streamType参数替换为,这比streamType更具描述性。请参见开始时的不同流类型常量。通过AudioAttributes,您可以指定播放声音的用途、播放内容类型以及播放方式。 srcQuality参数应该用于设置采样率转换器的质量。然而,它从未实施,设置它也没有任何效果。 因此,SoundPool.Builder比旧的构造函数更好,因为maxStreams不需要显式设置,AudioAttributes包含比streamType更多的信息,并且消除了无用的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);

查看更多详细信息。

我查看了它,但我还需要知道为什么它被弃用,以及如果它仍然被使用会发生什么。请检查这个问题:关于开发人员X为什么要做Y件事的问题?不适用于堆栈溢出。通常,唯一能给出明确答案的一方是开发人员X,而开发人员X不太可能看到您的问题。其他人只能提出意见。这是否意味着我们不能再使用它了欢迎您使用它,但对于Minsdk21或更高版本的项目,您应该使用SoundPool.Builder。如果最小API设置在21以下,我们应该使用什么声音池构造函数,因为您别无选择。谢谢。那么,这是否意味着如果我继续使用构造函数,就不会有问题了?难道我不能只使用MediaPlayer而不注意短音的问题吗?那么这是否意味着如果我继续使用构造函数就不会有问题了就目前而言,是的。难道我不能只使用MediaPlayer而不注意短音的问题吗SoundPool提供了与MediaPlayer不同的功能,例如优先流。我不会仅仅因为SoundPool的构造函数不推荐就避免使用它。SoundPool是否满足您的总体需求,我不能说。谢谢,我只是在一个应用程序中使用了它们来了解它。我在这里还提供了一个答案:可能是重复的,谢谢你的回答,所以如果这种构建对象的其他方式更具描述性,为什么不将其添加为另一个构造函数,因为java允许多个构造函数,为什么他们要特别采取步骤说这种方法不再适合使用?@Harsha,使用生成器不仅仅是添加新的构造函数。它是一个用于构建声音池的新类。这种设计模式似乎是一种趋势。例如,见。但是,即使他们只是添加了一个新的构造函数,也很常见的情况是不再推荐使用旧的构造函数。