Java Android声音未在启动屏幕中播放
当启动屏幕显示时,我在播放声音方面遇到了问题。我在“res”目录下创建了“raw”目录,并将droid.mp3文件放在那里(大约150Kb) 这是负责启动屏幕外观和声音的java文件的代码: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
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
}