Android的PresetReverb和EnvironmentalReverb不起作用。
创始人
2024-10-07 08:30:59
0
  1. 确认设备支持Reverb效果

首先需要确认设备上是否支持Reverb效果。如果设备不支持该效果,那么即使正确设置了Reverb,也无法生效。

可以通过检查设备的AudioEffect支持列表来确认设备是否支持Reverb效果。示例代码如下:

int[] supportedEffects = AudioEffect.queryEffects();
for (int i = 0; i < supportedEffects.length; i++) {
    AudioEffect.Descriptor effectDesc = AudioEffect.queryEffect(supportedEffects[i]);
    if (effectDesc.uuid.equals(PresetReverb.UUID) || effectDesc.uuid.equals(EnvironmentalReverb.UUID)) {
        // Found Reverb effect, device supports Reverb
        break;
    }
}
  1. 创建Reverb效果对象

创建Reverb效果对象时,需要指定其UUID和音频会话ID。示例代码如下:

// For PresetReverb
PresetReverb reverb = new PresetReverb(0, audioSessionId);
reverb.setEnabled(true);
reverb.setPreset(PresetReverb.PRESET_LARGEHALL);
// For EnvironmentalReverb
EnvironmentalReverb reverb = new EnvironmentalReverb(0, audioSessionId);
reverb.setEnabled(true);

需要注意的是,PresetReverb和EnvironmentalReverb只能同时存在一个。如果要切换两个效果,需要先将原来的效果对象释放,然后重新创建新的效果对象。

  1. 将效果对象附加到音频播放器或录音器

将Reverb效果对象附加到音频播放器或录音器时,需要将其包装在AudioEffect对象中,并调用attach方法进行附加。示例代码如下:

// For MediaPlayer
MediaPlayer player = new MediaPlayer();
// ... initialize player ...
int audioSessionId = player.getAudioSessionId();

// For PresetReverb
PresetReverb reverb = new PresetReverb(0, audioSessionId);
reverb.setEnabled(true);
reverb

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...