Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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 Android声音未在启动屏幕中播放_Java_Android_Audio - Fatal编程技术网

Java Android声音未在启动屏幕中播放

Java Android声音未在启动屏幕中播放,java,android,audio,Java,Android,Audio,当启动屏幕显示时,我在播放声音方面遇到了问题。我在“res”目录下创建了“raw”目录,并将droid.mp3文件放在那里(大约150Kb) 这是负责启动屏幕外观和声音的java文件的代码: import android.app.Activity; import android.content.Intent; import android.media.MediaPlayer; import android.os.Bundle; public class SplashActivity exten

当启动屏幕显示时,我在播放声音方面遇到了问题。我在“res”目录下创建了“raw”目录,并将droid.mp3文件放在那里(大约150Kb)

这是负责启动屏幕外观和声音的java文件的代码:

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;

public class SplashActivity extends Activity 
{
    public  MediaPlayer splashSound;

    protected void onCreate(Bundle splashBundle) 
    {
        super.onCreate(splashBundle);
        setContentView(R.layout.splash);
        splashSound = MediaPlayer.create(SplashActivity.this, R.raw.droid);
        Thread t1 = new Thread() {
            public void run() {
                try 
                {
                    sleep(5000);
                } 
                catch (InterruptedException IE)
                {
                    IE.printStackTrace();
                } 
                finally 
                {
                    Intent mainActivityIntent=new Intent("com.example.stamapp.MAINACTIVITY");
                    startActivity(mainActivityIntent);
                }
            }
        };
        t1.start();
    }

    @Override
    protected void onPause() {

        super.onPause();
        splashSound.release();
        finish();
    }

}

非常感谢您的帮助。

try使用的不是Thread,而是:


要只播放声音,您真的应该使用
SoundPool
,而使用
MediaPlayer
。谢谢您的评论。据我所知,播放声音超过5秒时最好使用
MediaPlayer
。这是真的吗?不,是真的!人们必须区分“声音”、“音乐”和“可听的”。我认为通过编写“声音”可以满足
<5秒
的条件。嗯,mp3文件的长度是8秒,这是否使其“可听见”?为什么不在任何地方调用
splashSound.start()
?只是粘贴的代码中没有
create()
不会启动声音播放,
start()
会启动声音播放。感谢您详尽的回答!但老实说,我现在觉得自己很蠢。我添加了
splashSound.start()就在
睡眠之前(5000)和已更改的
splashSound.release()
到splashSound.stop()
,它就工作了。我将用你的答案测试我的代码,看看它是如何运行的。再次感谢。@AlexTal:必须尝试
setOnCompletionListener
选项,因为这将在没有任何额外线程或句柄的情况下工作。您这里的第二个版本非常好,代码非常少!谢谢
 Handler handler;
protected void onCreate(Bundle splashBundle) 
    {
        super.onCreate(splashBundle);
        setContentView(R.layout.splash);
        handler = new Handler();  
        splashSound = MediaPlayer.create(SplashActivity.this, 
                                            R.raw.droid);   
        splashSound.start();  //<<<play sound on Splash Screen
        handler.postDelayed(runnable, 5000);
    }
private Runnable runnable = new Runnable() {
   @Override
   public void run() {
     //start your Next Activity here
   }
};
protected void onCreate(Bundle splashBundle) 
        {
            super.onCreate(splashBundle);
            setContentView(R.layout.splash);

            splashSound = MediaPlayer.create(SplashActivity.this, 
                                                R.raw.droid);   
            splashSound.setOnCompletionListener(new 
                              MediaPlayer.OnCompletionListener() {
           @Override
            public void onCompletion(MediaPlayer splashSound) {

             splashSound.stop();
             splashSound.release();
                   //start your Next Activity here
           }
        });
        splashSound.start();  //<<<play sound on Splash Screen
   }