私のアプリは、いくつかの数式に従ってリズミカルにサウンドを再生することを目的としています。他のプラットフォーム用に開発されたこのプログラムの他のバージョンでは、次のサウンドを再生する必要があるまで必要な時間だけスレッドを「スリープ」しますが、Android ではプロセスをスリープすると UI もスリープします。例として次のコードを試し、UI とサウンド プロセスを分離しようとしています。
public class SoundThread extends Thread{
private MediaPlayer player;
SoundThread(Context context)
{
player = MediaPlayer.create(context, R.raw.ex);
}
public void run()
{
for(int x=0;x<100;x++)
{
player.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
このクラスは、サンプル サウンドとそれを呼び出しているアクティビティのコンテキストで mediaplayer を開始し、毎秒 R.raw.ex を再生することになっています。しかし、アクティビティから呼び出すと、サウンドは正しく再生されますが、デバイスはアプリがフリーズしていると見なされます。
どうもありがとうございました。