我正在创建一个应用程序,我希望它在打开活动时发出声音,声音文件在R.raw.sound_file
,如果有人可以做一些示例代码让我的应用程序发出声音大。
答案 0 :(得分:12)
android.media.MediaPlayer
班不是这样做的吗?
参考:http://developer.android.com/reference/android/media/MediaPlayer.html
示例:http://developer.android.com/guide/topics/media/index.html
示例的第2步说:
MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
mp.start();
在您的情况下,我会在您的Activity类中使用onStart()
:
public class MyActivity extends Activity {
...
protected void onStart() {
super.onStart();
MediaPlayer mp = MediaPlayer.create(this, R.raw.sound_file_1);
mp.start();
}
...
}
答案 1 :(得分:3)
我有使用MediaPlayer对象为我创建的Android应用程序的经验,我发现了以下内容:
如果MediaPlayer的比特率为32kbps,那么Wav文件会出现问题,但是比特率更高的wav文件似乎没问题,即使它是一个大的wav文件,只要它具有比特率更高。
如果可能的话,使用mp3文件作为你的音频,我使用MediaPlayer对象没有遇到任何关于mp3音频文件的问题,所以这是最好的方法,使用谷歌有很多不同类型的可以从铃声和铃声,狗吠声,猫喵声或者你正在寻找的任何声音中免费获得mp3声音。
答案 2 :(得分:0)
我遇到了同样的问题。 通过使用应用程序上下文,这对我有用:
public class MyActivity extends Activity {
...
protected void onStart() {
super.onStart();
Context appContext = getApplicationContext();
MediaPlayer mp = MediaPlayer.create(appContext , R.raw.sound_file_1);
mp.start();
}
...
}
另外,一旦完成,不要忘记调用mp.release()
另一个首选方法是使用SoundPool类
答案 3 :(得分:0)
尝试使用我的代码,它完美无缺。你还需要声音文件.wav en res / raw
public class PianoActivity extends Activity {
private MediaPlayer mediaPlayer = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_piano);
setupUI();
}
@Override
protected void onPause() {
super.onPause();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
private void setupUI() {
findViewById(R.id.doo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
managerOfSound();
}
});
}
private void managerOfSound() {
mediaPlayer = MediaPlayer.create(this, R.raw.doo);
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
} else {
mediaPlayer.stop();
}
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
mp.release();
}
});
}
}