2

我有一个错误:

public class VisualizerCapture extends Activity implements Visualizer.OnDataCaptureListener {
private Visualizer mVisualizer = new Visualizer(0); // error is here!!!

@Override
public void onCreate(Bundle savedInstanceState){
 super.onCreate(savedInstanceState);

    setupVisualizer();
}

这是抛出的错误:

  java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{bla bla}: java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -4

我的清单:

    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>    
    <uses-permission android:name="android.permission.INTERNET"/>         

设置方法:

private void setupVisualizer() {
    Visualizer.setEnabled(false);
    Visualizer.setCaptureSize(1);      //test
    Visualizer.setDataCaptureListener(this,250,false,true);
    //Visualizer.setScalingMode(visualizer.SCALING_MODE_AS_PLAYED);
    Visualizer.setEnabled(true);
            Log.v("ABS","setupVisualizer" + Visualizer.getEnabled());    //log

}

为什么我得到这个错误?好像我已经满足了所有权限?

请耐心等待,我是开发新手。我怎样才能解决这个问题?

4

3 回答 3

1

阅读文档后:

public Visualizer (int audioSession)

Added in API level 9
Class constructor.

Parameters
audioSession    system wide unique audio session identifier. If audioSession is not 0, the visualizer will be attached to the MediaPlayer or AudioTrack in the same audio session. Otherwise, the Visualizer will apply to the output mix.

你确定你想要 0 吗?

更新

进一步查看错误:

public static final int ERROR_BAD_VALUE

Added in API level 9
Operation failed due to bad parameter value.

Constant Value: -4 (0xfffffffc)

那是您遇到的错误,很可能您在 Visualizer 的配置中有问题,请仔细检查 setupVisualizer 方法中的内容。

于 2013-01-30T07:24:52.337 回答
0

您无法让 Visualizer 在所有平台上运行。它是 Android 中测试最少的对象之一,恕我直言不应该发布。您绝对需要在任何地方捕获异常。

Visualizer 很可能是您将使用的最复杂且未记录的类之一。它具有 DSP 和 FFT 的怪异特性以及神秘的错误处理。

例如。在使用 Visualizer 时,您还应该始终实例化均衡器,以绕过音量控制。

你永远不应该在类的声明部分实例化对象依赖。这使得捕获异常变得困难,也使得依赖注入变得困难。

您应该在类的构造函数或 init 方法中实例化对象,以便您可以捕获异常并支持测试模拟以进行依赖注入。

于 2015-04-05T20:54:17.807 回答
0

在清单文件中添加权限

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

如果添加然后检查,

转到此应用的 AppInfo;导航到权限;确保已授予此应用请求的所有权限。

于 2017-04-19T03:32:17.550 回答