首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓工作室中的TarsosDSP

安卓工作室中的TarsosDSP
EN

Stack Overflow用户
提问于 2018-10-01 14:14:05
回答 1查看 1.2K关注 0票数 0

这是我在SO上的第一篇文章,我试图把我的音乐技能和计算机科学结合起来。

我使用的是AndroidStudio3.1.2和gradle 4.5,Nexus5X,API 25,Android7.1.1,Windows 7。

我非常小心地遵循这些指示:

  1. 创建一个名为Pitchbender的项目
  2. 下载.jar of TarsosDSP并包括在 C:\Users\Carlos\AndroidStudioProjects\Pitchbender\app\libs\TarsosDSP-Android-latest
  3. 我检查了我的项目的build.gradle: 依赖性{实现fileTree(dir:‘libs’,包括:‘*.jar’)}
  4. 在我的项目中,下面的导入由Android自动完成: 进口be.tarsos.dsp.io.android.AudioDispatcherFactory进口android.os.Bundle进口android.view.View进口be.tarsos.dsp.pitch.PitchDetectionHandler进口be.tarsos.dsp.pitch.PitchDetectionHandler进口be.tarsos.dsp.pitch.PitchDetectionResult进口be.tarsos.dsp.pitch.PitchDetectionResult进口be.tarsos.dsp.pitch.PitchProcessor进口be.tarsos.dsp.pitch.PitchProcessor.PitchEstimationAlgorithm进口be.tarsos.dsp.AudioProcessor进口android.widget.TextView进口be.tarsos.dsp.AudioDispatcher
  5. 我在我的清单文件中有这个权限 使用-权限android:name=”android.permission.RECORD_AUDIO”
  6. Android提供了将以下代码的第一行转换为Kotlin的选项: AudioDispatcherFactory.fromDefaultMicrophone(22050,1024,0);= AudioDispatcher调度器 如果我对Kotlin转换的“否”作出回应,我有以下编译错误: 子句“AudioDispatcher”没有任何伴生对象,因此必须在这里初始化。

我能做什么?

如果我对Kotlin转换问题回答“是”,则该语句被转换为

= AudioDispatcherFactory.fromDefaultMicrophone(22050,1024,0)

然后,当我运行这个程序时,Android告诉我有一个错误,关闭了我的项目,并一直关闭我的项目。该怎么办呢?

请帮助至少运行完整代码的第一条指令:

代码语言:javascript
复制
PitchDetectionHandler pdh = new PitchDetectionHandler() {
    @Override
    public void handlePitch(PitchDetectionResult res, AudioEvent e){
        final float pitchInHz = res.getPitch();
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                processPitch(pitchInHz);
            }
        });
    }
};
AudioProcessor pitchProcessor = new PitchProcessor(PitchEstimationAlgorithm.FFT_YIN, 22050, 1024, pdh);
dispatcher.addAudioProcessor(pitchProcessor);

Thread audioThread = new Thread(dispatcher, "Audio Thread");
audioThread.start();

问题:

您在Android中有什么简单的项目吗?这样我就可以看到我的错误是什么了?

EN

回答 1

Stack Overflow用户

发布于 2019-09-05 15:17:22

当我试图运行这个示例时,我遇到了类似的问题,我的解决方案(2019年9月)是添加记录权限的运行时确认。我不确定是不是同一个案子,布鲁

这是我的密码:

代码语言:javascript
复制
private boolean permissionToRecordAccepted = false;
    private String [] permissions = {Manifest.permission.RECORD_AUDIO};
    private static final int REQUEST_RECORD_AUDIO_PERMISSION = 200;

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode){
            case REQUEST_RECORD_AUDIO_PERMISSION:
                permissionToRecordAccepted  = grantResults[0] == PackageManager.PERMISSION_GRANTED;
                break;
        }
        if (!permissionToRecordAccepted ) finish();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52593063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档