baidu_23478311
梅明子
2019-08-21 17:58

求助 Android 监听音频波形数据方法返回值的问题

20
  • android-studio
  • android

1,我设置的采样是:

visualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1])

2,因此从回调方法中返回的byte数据长度是1024个字节

@Override
    public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) {
        //采集波形数据

    }

3,而我的项目需求中要绘制的跳动频谱却只有两条,我该从长度为1024的数组中取出哪两个数据来去绘制跳动的频谱呢?下面代码中的方法是我尝试解决的回调函数,其中data就是监听方法中返回的byte数组,只可惜这种方式明显感觉跳动的频率对不上音乐播放的节奏。有大神指点一下吗?万分感谢!

public void onCaptureChanged(byte[] data, boolean isDataVailed, boolean isReverse) {
        this.isReverse = isReverse;

        if (data != null) {
            int leftCentreIndex = data.length / 4 - 1;
            int rightCentreIndex = data.length * 3 / 4 - 1;

            // 给256临近的数据设置权重,并且进行累加
            mData[0] = (int) (data[leftCentreIndex] * 0.4f + data[leftCentreIndex + 1] * 0.3f + data[leftCentreIndex - 1] * 0.3f);
            mData[1] = (int) (data[rightCentreIndex] * 0.4f + data[rightCentreIndex + 1] * 0.3f + data[rightCentreIndex - 1] * 0.3f);
        } else {
            Arrays.fill(this.mData, 0);
        }
        postInvalidate();
    }
  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答

为你推荐