Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不干扰程序UI的情况下播放声音?_Java_Android_Multithreading_Audio_User Interface - Fatal编程技术网

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

Java 如何在不干扰程序UI的情况下播放声音?,java,android,multithreading,audio,user-interface,Java,Android,Multithreading,Audio,User Interface,我的应用程序旨在按照一些数学公式有节奏地播放一些声音。在这个为其他平台开发的程序的其他版本中,我只是“睡眠”线程,直到我需要播放下一个声音所需的时间,但是在android中,如果你睡眠这个过程,UI也会睡眠。我以下面的代码为例,尝试将UI和声音过程分开: public class SoundThread extends Thread{ private MediaPlayer player; SoundThread(Context context) { player = MediaPlay

我的应用程序旨在按照一些数学公式有节奏地播放一些声音。在这个为其他平台开发的程序的其他版本中,我只是“睡眠”线程,直到我需要播放下一个声音所需的时间,但是在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();
        }
    }
}
公共类SoundThread扩展线程{
私人媒体播放器;
声音线程(上下文)
{
player=MediaPlayer.create(上下文,R.raw.ex);
}
公开募捐
{

对于(intx=0;x对于这个特定的应用程序,如果您不需要播放控制,您只需将该位代码包装在一个文件中即可


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

这可能不起作用,因为
AsyncTask
将被放在队列中,延迟音频的时间足以让人注意到(因此不符合有节奏地播放声音的要求)是的,我一直在读关于这门课的书,主要的问题是声音要求有点高。但是非常感谢。