5

我正在制作一个应用程序,我希望它在打开活动时发出声音,声音文件在R.raw.sound_file,如果有人可以做一些示例代码来让我的应用程序播放声音会很棒。

4

4 回答 4

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();

在您的情况下,我将使用onStart()您的 Activity 类内部:

public class MyActivity extends Activity {
   ... 
   protected void onStart() {
      super.onStart();
      MediaPlayer mp = MediaPlayer.create(this, R.raw.sound_file_1);
      mp.start();
   }
   ...
}
于 2010-03-16T23:29:18.317 回答
4

我有将 MediaPlayer 对象用于我创建的 android 应用程序的经验,我发现了以下内容:

  • 如果 Wav 文件具有 32kbps 的比特率,它们在 MediaPlayer 中会出现问题,但更高比特率的 wav 文件似乎可以播放,即使它是一个大的 wav 文件,只要它具有更高的比特率就可以播放。

  • 如果可能的话,为您的音频使用 mp3 文件,我在使用 MediaPlayer 对象的 mp3 音频文件方面没有遇到任何问题,所以这是最好的方法,使用 google 有很多不同类型的 mp3 声音可以从环中免费获得和叮当声,狗叫声,猫叫声,或任何你正在寻找的声音。

于 2012-12-29T19:17:11.070 回答
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 类

于 2011-05-14T17:50:06.750 回答
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();
        }
    });
}

}

于 2015-10-25T06:54:54.660 回答