Android Visualizer错误仅在Android 6.0中 [英] Android Visualizer error only in Android 6.0

查看:415
本文介绍了Android Visualizer错误仅在Android 6.0中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发现了与Visualizer相关的一个问题,该问题仅在Android 6.0设备中发生.真的不知道为什么会发生这种情况,因此可以提供任何帮助.这是错误堆栈:

i've found one issue related with Visualizer that takes place only in Android 6.0 devices. Don't really know why it happens, so any kind of help would be appreciated. Here is the error stack:

AudioEffect: set(): AudioFlinger could not create effect, status: -1
visualizers-JNI: Visualizer initCheck failed -3
Visualizer-JAVA: Error code -3 when initializing Visualizer.
java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -3
System.err: at android.media.audiofx.Visualizer.<init>(Visualizer.java:218)
System.err:     at com.xxx.xxxx.customviews.visualizer.VisualizerView.link(VisualizerView.java:101)

这是导致它的代码:

public void link(MediaPlayer player) {

    if (player == null) {

        throw new NullPointerException("Cannot link to null MediaPlayer");
    }

    Equalizer mEqualizer = new Equalizer(0, player.getAudioSessionId());
    mEqualizer.setEnabled(true); // need to enable equalizer


    try {

        int aud = player.getAudioSessionId();
        **mVisualizer = new Visualizer(aud);**
        mVisualizer.setEnabled(false);
        mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
        Visualizer.OnDataCaptureListener captureListener = new Visualizer.OnDataCaptureListener() {

            @Override
            public void onWaveFormDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) {
                updateVisualizer(bytes);
            }

            @Override
            public void onFftDataCapture(Visualizer visualizer, byte[] bytes, int samplingRate) {
                updateVisualizerFFT(bytes);
            }
        };

        mVisualizer.setDataCaptureListener(captureListener, Visualizer.getMaxCaptureRate() / 2, true, true);
        mVisualizer.setEnabled(true);
        player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                mVisualizer.setEnabled(false);
            }
        });
    }catch(Exception e) {       

        e.printStackTrace();        
    } 
}

任何帮助将不胜感激.预先感谢=)

Any help would be appreciated. Thanks in advance =)

推荐答案

也许底层组件需要一些权限,而这些权限在6.0中不会自动获得授予.转到此应用的AppInfo;导航到权限;确保已授予此应用程序请求的所有权限.

Maybe the underlying component(s) needs some permissions that do not automatically get granted in 6.0. Goto AppInfo for this app; navigate to permissions; ensure all permissions that this app has requested has been granted.

这篇关于Android Visualizer错误仅在Android 6.0中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆