我在以下位置有一个错误:
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
}
为什么会出现这个错误?似乎我已经满足了所有的权限?
请耐心等待,我是开发中的新手。我该如何解决这个问题呢?
发布于 2013-01-30 15:24:52
阅读文档后:
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)
这就是你得到的错误,很可能你在展示台的配置中有一些不好的东西,仔细检查你的setupVisualizer方法中的内容。
发布于 2015-04-06 04:54:18
不能让Visualizer在所有平台上运行。它是Android中测试最少的对象之一,不应该发布。你绝对需要在你接触到它的任何地方捕捉异常。
Visualizer很可能是您使用过的最复杂和最无文档记录的类之一。它有DSP和FFT的怪异之处,并结合了神秘的错误处理。
例如:在使用Visualizer时,还应始终实例化均衡器,以便绕过音量控制。
永远不要在类的声明部分实例化对象依赖项。这使得捕获异常变得困难,也使得依赖注入变得困难。
您应该在类的构造函数或init方法中实例化对象,以便可以捕获异常并支持测试mock以进行依赖注入。
发布于 2017-04-19 11:32:18
在清单文件中添加权限
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
如果已添加,则检查,
转到此应用的AppInfo;导航到权限;确保已授予此应用请求的所有权限。
https://stackoverflow.com/questions/14598094
复制相似问题