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

此类以示例声音和调用该声音的 Activity 的上下文开始mediaplayer,并且应该每秒播放一次R.raw.ex。但是当我从 Activity 中调用它时,我听到声音可以正确播放,但是我的设备认为该应用程序已冻结。

非常感谢你。

最佳答案

对于此特定应用程序,如果您不需要播放控制,则只需将这段代码包装在AsyncTask中。

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

07-28 02:10
查看更多