2012-03-02 8 views
1

私は音楽ベースのライブ壁紙を開発しようとしています。これは、音楽が再生されたとき、または誰かが画面に触れると、アンドロイド2.3以降で変更されます。問題は、私はそうビジュアライザを初期化するためのセッションIDを取得する必要があるということです...アンドロイドメディアプレイヤーからセッションIDを取得しますか?

は、どのように私はAndroidの

からセッションIDを取得することができますし、私はinitをする必要がどのように私を見ることができればそれが良いでしょうFFTデータを取得するためのVisualizer、またはfftデータを取得するための代替方法。

答えて

2

デフォルトのオーディオセッション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"/> 
+0

これを使用してアプリをリリースしましたか?私はギャラクシーネクサスとギャラクシーS3で特定のメディアプレイヤーとしか作業していないことについて多くの報告を受けています。出力ミックスにはすべてのケースですべてのメディアプレーヤーのサウンドが含まれていると思うので、私には分かりません。 – Tenfour04

+0

@ TenFour04私はこれを使用して1つのアプリをリリースしましたが、私の問題は古いデバイスのラジオでは動作しないことです。 – J1and1

+0

ラジオがうまくいかないことに興味があります。私は時間があるときに、すべてのアクティブなオーディオセッションを照会し、それぞれをチェックする方法があるかどうかを調べるつもりです。確かにそれは良い解決策ではありません。なぜなら、サウンドがあるかどうかを調べるために、さまざまなセッションからFFTを絶えず引き出す必要があるからです。 – Tenfour04

関連する問題