java – android.media.audiofx.Visualizer每隔一次抛出异常

栏目: Android · 发布时间: 7年前

内容简介:翻译自:https://stackoverflow.com/questions/9222219/android-media-audiofx-visualizer-throwing-exception-every-other-time
我正在为 Android

2.3.3制作动态壁纸,它使用了Visualizer类.我已经有一个可用的Visualizer程序版本作为独立工作,但当我将代码放入动态壁纸服务时,我的问题就开始了.以下代码是错误存在的位置:

// Called in my Engine extension's constructor
public void setupVisualizer()
{
    mBytes = null;
    mVisualizer = new Visualizer(0);

    // EDIT
    mVisualizer.setEnabled(false); // This fixes the issue
    // END EDIT

    mVisualizer.setCaptureSize(
        Visualizer.getCaptureSizeRange()[1]); // IllegalStateException Thrown

    mVisualizer.setDataCaptureListener() {
        public void onWaveFormDataCapture(Visualizer visualizer,
            byte[] bytes, int samplingRate) {
                updateVisualizer(bytes);
            }
        public void onFftDataCapture(Visualizer visualizer,
            bytes[] bytes, int samplingRate) {}
        }, Visualizer.getMaxCaptureRate() / 2, true, false);

    mVisualizer.setEnabled(true);
}

这是奇怪的部分,当我浏览动态壁纸列表时,我会点击它来查看预览,它工作正常.如果不将其设置为活动壁纸,我会点击后退按钮,然后再次选择它并崩溃.我可以重复这个过程,它只会在其他时间崩溃并且在其他时间起作用.如果我选择将其设置为活动壁纸,则每次都会崩溃.

查看 at the source

,如果状态不是STATE_INITIALIZED,则会抛出IllegalStateException.

由于构造函数将状态设置为STATE_ENABLED或STATE_INITIALIZED,这意味着获得异常时的状态为STATE_ENABLED(唯一选项).

在setCaptureSize()的文档中,他们提到在状态为STATE_ENABLED时不应该调用此方法,所以我认为在调用setCaptureSize()之前需要在Visualizer对象上调用setEnabled(false)

翻译自:https://stackoverflow.com/questions/9222219/android-media-audiofx-visualizer-throwing-exception-every-other-time


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

算法问题实战策略

算法问题实战策略

[韩] 具宗万 / 崔盛一 / 人民邮电出版社 / 2015-2 / 119.00元

第一部分 开始解决问题 第二部分 算法分析 第三部分 算法设计范式 第四部分 一些著名的算法 第五部分 基本数据结构 第六部分 树 第七部分 图一起来看看 《算法问题实战策略》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具