如何在不干扰我的程序UI的情况下播放声音?

时间:2012-07-13 00:56:43

标签: java android multithreading audio user-interface

我的应用程序旨在按照一些数学公式有节奏地播放一些声音。在为其他平台开发的这个程序的其他版本中,我只是“睡眠”线程所需的时间,直到我需要播放下一个声音,但在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();
        }
    }
}

这个类以一个示例声音和调用它的活动的上下文启动媒体播放器,它应该每秒播放R.raw.ex。但是,当我从我的活动中调用它时,我听到声音播放正确,但我的设备认为应用程序已冻结。

非常感谢。

1 个答案:

答案 0 :(得分:1)

对于这个特定的应用程序,如果你不需要播放控制,你可以将这段代码包装在AsyncTask中。

如果您希望能够控制播放,那么您应该implement a Service