デフォルトのオーディオセッションIDは0です(これはすべてのサウンド出力 - 音楽、システムサウンドに反応します)。
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);
そして、他の一つは次のようになります:FFT一つの方法を取得するにはビジュアライザをinitに
とは、ある
Visualizer viz = new Visualizer(0);
viz.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
viz.setEnabled(true);
//to get data use viz.getFft(fftdata);
viz.getFft(fftdata);
とマニフェストには、いくつかのpremisionsを追加する必要があります。
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
これを使用してアプリをリリースしましたか?私はギャラクシーネクサスとギャラクシーS3で特定のメディアプレイヤーとしか作業していないことについて多くの報告を受けています。出力ミックスにはすべてのケースですべてのメディアプレーヤーのサウンドが含まれていると思うので、私には分かりません。 – Tenfour04
@ TenFour04私はこれを使用して1つのアプリをリリースしましたが、私の問題は古いデバイスのラジオでは動作しないことです。 – J1and1
ラジオがうまくいかないことに興味があります。私は時間があるときに、すべてのアクティブなオーディオセッションを照会し、それぞれをチェックする方法があるかどうかを調べるつもりです。確かにそれは良い解決策ではありません。なぜなら、サウンドがあるかどうかを調べるために、さまざまなセッションからFFTを絶えず引き出す必要があるからです。 – Tenfour04