仅在 Android 6.0 中出现 Android Visualizer 错误

标签 android android-mediaplayer visualizer

我发现了一个与 Visualizer 相关的问题,该问题仅发生在 Android 6.0 设备中。真的不知道为什么会这样,所以任何形式的帮助都将不胜感激。这是错误堆栈:

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();        
    } 
}

如有任何帮助,我们将不胜感激。提前致谢 =)

最佳答案

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

关于仅在 Android 6.0 中出现 Android Visualizer 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33494631/

相关文章:

android - 在某些设备上未调用相机 onPreviewFrame

android - onActivityResult 中的空 Intent 附加功能

java - Android 应用程序在 onActivityResult 方法中崩溃

iphone - 可视化:最好的方法?

Android Visualizer 实现崩溃

android - 获取歌曲的所有声音字节以用于Android应用

android - 如何使用列表中的自定义按钮将用户重定向到另一个 Activity

java - Android MediaPlayer 直播音频流 : how to know if a live streaming URL can't be streamed?

android - 在android中连续播放mp3文件

Android 的 MediaPlayer setSurface 在暂停状态下