私はそれにいくつかの助けが必要かもしれません。ここに問題があり、今まで何をしていたのですか?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がフリーズしない/あります応答していない。
誰かが助けてくれることを願っています。事前に
おかげ
マルクス
コードタグは単純にうまくいきません:( – mad
はeclipse、ctrl + i、backにコピーされました) ' –
元々これは私の食から来ました。:D – mad