0

私のアプリは、いくつかの数式に従ってリズミカルにサウンドを再生することを目的としています。他のプラットフォーム用に開発されたこのプログラムの他のバージョンでは、次のサウンドを再生する必要があるまで必要な時間だけスレッドを「スリープ」しますが、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 を再生することになっています。しかし、アクティビティから呼び出すと、サウンドは正しく再生されますが、デバイスはアプリがフリーズしていると見なされます。

どうもありがとうございました。

4

1 に答える 1

1

この特定のアプリケーションでは、再生制御が必要ない場合は、そのコードをAsyncTaskにラップするだけで済みます。

再生を制御できるようにしたい場合は、 Service を実装する必要があります。

于 2012-07-13T01:13:28.893 に答える