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