我正在尝试为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"/>

09-26 07:10