繁体   English   中英

我如何获得.wav声音?

[英]How do i get a .wav sound to play?

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

不是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();
   }
   ...
}

我有使用MediaPlayer对象为我创建的Android应用程序的经验,我发现了以下内容:

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

  • 如果可能的话,使用mp3文件作为你的音频,我使用MediaPlayer对象没有遇到任何关于mp3音频文件的问题,所以这是最好的方法,使用谷歌有很多不同类型的mp3声音免费从环和叮当声,狗吠声,猫喵声,或者你正在寻找的任何声音。

尝试我的代码,它的工作完美。 你还需要声音文件.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();
        }
    });
}

}

我有同样的问题。 通过使用应用程序上下文,这对我有用,如下所示:

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类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM