当前位置: 首页 > 知识库问答 >
问题:

Android环保反论不做任何事情

冯鸿哲
2023-03-14

我正在尝试将混响效果应用于我使用AudioTrack生成的正弦波。我尝试了presetReverb,并像文档所说的那样将其应用于audiossionId 0,因为执行getAudioSessionId()方法会带来错误,但这根本没有应用混响。所以我尝试了环境混响,并尝试了AudioSessionId(),这两种方法都没有创建混响。

这是我的代码:

t = new Thread()
    {
        public void run()
        {
            setPriority(Thread.MAX_PRIORITY);
            int buffsize = AudioTrack.getMinBufferSize(sr, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);

            AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sr, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, buffsize, AudioTrack.MODE_STREAM);

            EnvironmentalReverb reverb = new EnvironmentalReverb(1,0);

            audioTrack.attachAuxEffect(reverb.getId());
            reverb.setDiffusion((short) 1000);
            reverb.setReverbLevel((short) 1000);
            reverb.setDecayTime(10000);
            reverb.setReverbDelay(100);
            reverb.setDensity((short) 1000);
            audioTrack.setAuxEffectSendLevel(1.0f);
            reverb.setEnabled(true);

            short samples[] = new short[buffsize];
            int amp = 32767;
            double twopi = 2*Math.PI;
            double fr = 262.f;
            double ph = 0.0;

            audioTrack.play();

            while(isRunning)
            {
                fr = 262;

                for(int i=0; i < buffsize; i++)
                {
                    samples[i] = (short) (amp*Math.sin(ph));
                    ph += twopi*fr/sr;
                }
                audioTrack.write(samples, 0, buffsize);
            }
            audioTrack.stop();
            audioTrack.release();

        }
    };
    t.start();

我在清单中具有修改音频设置权限,那么为什么这不会产生混响效果呢?

共有1个答案

孙玺
2023-03-14

两件事:第一,确保你在“写”或“玩”之前设置好你的效果(和附件)。第二,如果你想让PresetReverb工作,你需要这样做,然后把它附加到你的AudioTrack(或MediaPlayer):

PresetReverb reverb = new PresetReverb(1, 0);

请参阅中间的示例代码和我在底部的响应:具有音频效果的Android媒体播放器:获取错误(-22,0)

 类似资料:
  • 我需要改变所有快照依赖于我的项目之前传递到发布。我正在尝试versions:use-releases from commandline mvn versions:use-releases,但对我来说不起作用。我使用Nexus repository发布版本,发布版本部署正确,具有公共访问权限 有人知道为什么不工作吗??

  • 它以前工作得很好,现在每当我运行脚本时,它只是打开Firefox,然后什么也不做。不过,它在与chromedriver一起运行时仍然有效。

  • 下面的代码是登录系统。用户名是管理员,密码是密码(您可以稍后更改),它现在做的是在表单发送后,它只是显示登录页面。我找不到它有什么问题。请帮忙。error_log文件没有显示任何内容。可能是密码散列不正确。当我设置密码时 然后插入结果。 编辑:现在我收到以下错误:[2015年11月15日07:00:58欧洲/莫斯科]PHP警告:mysqli_connect():(28000/1045):用户'la

  • 好吧,当android Studio构建时,gradle控制台中有很多任务列表,如下所示: 现在我想在其中一个之前做一些事情(就像一个任务)(例如:app: buildInfoDevDebugLoader),那么我应该在build.gradle?中编写什么代码 提前感谢。

  • 浏览器中 JavaScript 的执行流程和 Node.js 中的流程都是基于 事件循环 的。 理解事件循环的工作方式对于代码优化很重要,有时对于正确的架构也很重要。 在本章中,我们首先介绍事件循环工作方式的理论细节,然后介绍该知识的实际应用。 事件循环 事件循环 的概念非常简单。它是一个在 JavaScript 引擎等待任务,执行任务和进入休眠状态等待更多任务这几个状态之间转换的无限循环。 引擎