Как мне получить звук .wav для воспроизведения? - PullRequest
5 голосов
/ 17 марта 2010

Я создаю приложение, и я хочу, чтобы оно издавало звук при открытии активности, звуковой файл находится в R.raw.sound_file, если бы кто-то мог сделать некоторый пример кода, чтобы мое приложение воспроизводило звук, который был бы великолепен.

Ответы [ 4 ]

12 голосов
/ 17 марта 2010

Разве класс 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() внутри вашего класса деятельности:

public class MyActivity extends Activity {
   ... 
   protected void onStart() {
      super.onStart();
      MediaPlayer mp = MediaPlayer.create(this, R.raw.sound_file_1);
      mp.start();
   }
   ...
}
3 голосов
/ 29 декабря 2012

У меня есть опыт использования объекта MediaPlayer для созданного мной приложения для Android, и я обнаружил следующее:

  • В Wav-файлах возникают проблемы в MediaPlayer, если они имеют битрейт 32 Кбит / с, но WAV-файлы с более высокой скоростью передачи данных, кажется, воспроизводятся нормально, даже если это большой WAV-файл, он будет воспроизводиться нормально, если он имеет более высокий битрейт.

  • Если это вообще возможно, используйте mp3-файлы для аудио, я не столкнулся ни с какими проблемами с аудио-файлами mp3, использующими объект MediaPlayer, так что это лучший способ, при использовании Google существует множество различных типов звуки mp3 доступны бесплатно, от звонков и звонков, от лая собаки, кошачьего мяука или любого другого вида звука, который вы ищете.

0 голосов
/ 25 октября 2015

Попробуйте с моим кодом, он отлично работает. Также вам нужно иметь звуковой файл .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();
        }
    });
}

}

0 голосов
/ 14 мая 2011

У меня была такая же проблема. это сработало для меня, используя контекст приложения следующим образом:

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

...