首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android无法初始化Visualizer引擎,错误:-4

Android无法初始化Visualizer引擎,错误:-4
EN

Stack Overflow用户
提问于 2013-01-30 14:38:22
回答 3查看 2.9K关注 0票数 2

我在以下位置有一个错误:

代码语言:javascript
运行
复制
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();
}

这是抛出的错误:

代码语言:javascript
运行
复制
  java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{bla bla}: java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -4

我的清单:

代码语言:javascript
运行
复制
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>    
    <uses-permission android:name="android.permission.INTERNET"/>         

设置方法:

代码语言:javascript
运行
复制
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

}

为什么会出现这个错误?似乎我已经满足了所有的权限?

请耐心等待,我是开发中的新手。我该如何解决这个问题呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-30 15:24:52

阅读文档后:

代码语言:javascript
运行
复制
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吗?

更新

更深入地了解错误:

代码语言:javascript
运行
复制
public static final int ERROR_BAD_VALUE

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

Constant Value: -4 (0xfffffffc)

这就是你得到的错误,很可能你在展示台的配置中有一些不好的东西,仔细检查你的setupVisualizer方法中的内容。

票数 1
EN

Stack Overflow用户

发布于 2015-04-06 04:54:18

不能让Visualizer在所有平台上运行。它是Android中测试最少的对象之一,不应该发布。你绝对需要在你接触到它的任何地方捕捉异常。

Visualizer很可能是您使用过的最复杂和最无文档记录的类之一。它有DSP和FFT的怪异之处,并结合了神秘的错误处理。

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

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

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

票数 0
EN

Stack Overflow用户

发布于 2017-04-19 11:32:18

在清单文件中添加权限

代码语言:javascript
运行
复制
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

如果已添加,则检查,

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14598094

复制
相关文章

相似问题

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