我目前正在尝试在我的应用程序中实现一个可视化工具,它可以从输出混合中获取数据。
我当前用于初始化可视化工具的代码一直到错误行:
private Visualizer audioOutput = null;
public void link(){
AudioTrack visualizedTrack = null;
final int minBufferSize = AudioTrack.getMinBufferSize(Visualizer.getMaxCaptureRate(), AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_8BIT);
visualizedTrack = new AudioTrack(AudioManager.STREAM_MUSIC, Visualizer.getMaxCaptureRate(), AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_8BIT, minBufferSize, AudioTrack.MODE_STREAM);
visualizedTrack.play();
audioOutput = new Visualizer(0);
我从最后一行得到的错误是:
Caused by: java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -3
如果这些信息有用的话,我会在Nvidia Shield平板电脑的K1上运行这段代码。我意识到Visualizer方法并不是文档化最好的类,而且众所周知,它会在某些设备上造成麻烦。
我知道我得到的错误是-3,因为某种错误的参数值,但是0不是一个可以接受的输出混合吗?
我的清单中有适当的权限RECORD_AUDIO和MODIFY_AUDIO_SETTINGS:
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"></uses-permission>
这里我漏掉了什么?我已经被困在这个问题上有一段时间了,如果能得到任何人的帮助,我将非常感激。
发布于 2017-05-20 19:59:23
这似乎有一些框架问题,但无论哪种方式,在使用这些权限推送构建后重新启动您的设备。它应该是有效的!
https://stackoverflow.com/questions/43383363
复制相似问题