2010-12-15 6 views
0

私はそれにいくつかの助けが必要かもしれません。ここに問題があり、今まで何をしていたのですか?PCMのためのAsyncTaskを使用するフリーズアクティビティなしのAudioTrack再生

問題:

私は私が前に記録されたPCMファイルを再生したいです。このファイルが大きくなる可能性があるので、audiotrackを使って再生します。これはかなりうまくいく。しかし、私は活動が凍って欲しくない。私はすでにスレッドなどを試していますが、今はasynctaskで作業していますが、アクティビティはまだ応答していません。

これは私が得たものである:UI活性の

は、私は新しいwaveplayerオブジェクトを作成し、それを実行してみてください。

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    /** 
    * Handles ShortClicks for ListView 
    */ 
    OnItemClickListener itemlistener = new OnItemClickListener(){ 

     MediaPlayer mp=null; 
     String currentlyplaying = null; 

     @Override 
     public void onItemClick(AdapterView<?> adaptview, View clickedview, int position, 
       long id) { 

      String pathtofile = (String) adaptview.getItemAtPosition(position); 
      if(pathtofile.contains(".wav")) 
      { 
       //HQ! 
       if(mp==null) 
       { 
        clickedview.setSelected(true); 
        try 
        { 

         WavePlayer t = null; 
         //TODO: //add thread waveplayer to play file! 
         try { 
          t = new WavePlayer(pathtofile); 
          t.execute((Void)null); 
         } catch (Exception e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 

         clickedview.postDelayed(new Deselector(clickedview, t), 1000); 

         currentlyplaying = pathtofile; 


        } catch (IllegalArgumentException e) { 
         e.printStackTrace(); 
        } catch (IllegalStateException e) { 
         e.printStackTrace(); 
        } 
       } 
       else 
       { 

       } 

      } 
      else{ 
       //NO HQ 
       //you dont need to know that :) 


      } 


     } 
    }; 

クラスdeselector:再生に関するすべてが素敵な作品

/** 
* This Runnable tries to deselect the view after playing the audio file. 
* @author quant 
* 
*/ 
class Deselector implements Runnable 
{ 
    View view = null; 
    AsyncTask thread; 

    Deselector(View view, AsyncTask t) 
    { 
     this.view = view ; 
     this.thread = t; 
    } 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     try { 
      view.setSelected(false); 
      thread.cancel(true); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

} 

、私は私の声を聞くことができ、再生自体は正常に動作します...が、まだ主な活動のGUIがフリーズしない/あります応答していない。

誰かが助けてくれることを願っています。事前に

おかげ

マルクス

+0

コードタグは単純にうまくいきません:( – mad

+0

はeclipse、ctrl + i、backにコピーされました) ' –

+0

元々これは私の食から来ました。:D – mad

答えて

0

iは、リモートサービスを使用して、それを解決しました。私は他の目的のためにまだ1つを走らせていたので、私はこの解決策に満足しています。インターフェイスが再び応答します。

関連する問題