我正在尝试开发一个基于频谱的动态壁纸,当音乐播放或有人触摸屏幕时会改变,因为Android 2.3及更高版本。问题是我需要获取会话ID以初始化Visualizer ...
如何从android
获取sessionId如果您能告诉我如何正确启动Visualizer以获取FFT数据,或者获取fft数据的其他方法,那将是一件好事。
答案 0 :(得分:2)
默认音频会话ID为0(它将对所有声音输出 - 音乐,系统声音做出反应)。
初始Visualizer以获得FFT的一种方式是:
Visualizer viz = new Visualizer(0);
viz.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
viz.setDataCaptureListener(new OnDataCaptureListener() {
@Override
public void onWaveFormDataCapture(Visualizer arg0, byte[] arg1, int arg2) {
//Wave procesing here
}
@Override
public void onFftDataCapture(Visualizer arg0, byte[] arg1, int arg2) {
//FFT procesing here!
}
}, Visualizer.getMaxCaptureRate(), true, true);
viz.setEnabled(true);
另一个看起来像这样:
Visualizer viz = new Visualizer(0);
viz.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
viz.setEnabled(true);
//to get data use viz.getFft(fftdata);
viz.getFft(fftdata);
在清单中你需要添加一些前提:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>