我正在尝试为Android 2.3及更高版本开发基于频谱的动态壁纸,当音乐播放或有人触摸屏幕时,动态壁纸会改变。问题是我需要获取会话ID才能初始化Visualizer,以便...
如何从Android获取sessionId
如果您能告诉我如何正确启动Visualizer以获取FFT数据或获取fft数据的替代方法,那将是很好的。
最佳答案
默认音频会话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"/>