gpt4 book ai didi

java - 在 API 21 的 SoundPool.Builder 类中设置音频属性

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:44 24 4
gpt4 key购买 nike

我正在关注一个 Android 编程视频讲座系列,该系列是在 API 之前设计的 21 次。因此它告诉我以下列方式创建一个 SoundPool 变量。

SoundPool sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
//SoundPool(int maxStreams, int streamType, int srcQuality)

但是,我也想将此 SoundPool 用于 API 21。所以,我这样做:

if((android.os.Build.VERSION.SDK_INT) == 21){
sp21 = new SoundPool.Builder();
sp21.setMaxStreams(5);
sp = sp21.build();
}
else{
sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
}

sp21 是 API 21 的 Builder 类型的变量,sp 是 SoundPool 类型的变量。

这适用于我的具有 API 21 的 AVD 和具有 API 19 的真实设备。(尚未尝试使用具有 API 21 的真实设备,但我认为它会很好地工作)。现在,我想在 sp = sp21.build(); 之前的 if block 中将 streamType 设置为 USAGE_MEDIA。所以我输入:

sp21.setAudioAttributes(AudioAttributes.USAGE_MEDIA);

但 Lint 将其标记为红色并表示:

The method setAudioAttributes(AudioAttributes) in the type SoundPool.Builder is not applicable for the arguments (int)

我知道即使我没有将它设置为 USAGE_MEDIA,它也会默认设置为相同的。但如果我必须将其设置为其他内容,如:USAGE_ALARM,我会要求将来引用。

我应该如何进行?

请帮忙!

我已经提到了 Audio Attributes , SoundPool , SoundPool.builderAudioManager .

最佳答案

这里我要补充一点。我在我的游戏应用程序中使用 SoundPool 来播放小而简单的 ogg 音频文件。即使在具有 API 21 的模拟器上它也能正常工作。今天我决定修改它以使用 SoundPool.Builder()。

我查看了 Android 的 SoundPool.Builder 文档。上面写着

public static class
SoundPool.Builder
extends Object
java.lang.Object
↳ android.media.SoundPool.Builder
Class Overview
Builder class for SoundPool objects.

注意“SoundPool 对象的生成器类”这一行。所以 SoundPool.Builder() 创建 SoundPool 对象。SoundPool() 还创建 SoundPool 对象。所以这就是我所做的。

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

AudioAttributes audioAttrib = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
mSound = new SoundPool.Builder().setAudioAttributes(audioAttrib).setMaxStreams(6).build();
}
else {

mSound = new SoundPool(6, AudioManager.STREAM_MUSIC, 0);
}

mSound 声明为

    private SoundPool mSound;

其余代码(我加载、播放、停止、释放声音的地方)与之前完全相同。并且它在 API 21 和更早版本中工作

希望对大家有帮助

关于java - 在 API 21 的 SoundPool.Builder 类中设置音频属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28210921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com