Вопрос по Android Audio

1

У меня есть несколько аудиофайлов в папке res/raw. Когда я запускаю следующий код, я предполагал, что будет воспроизводиться только файл "sound1", вместо этого все файлы в папке будут воспроизводиться один за другим, а не только "sound1".

  MediaPlayer mp = MediaPlayer.create(this, R.raw.sound1);
  try {
    mp.start();
  } catch (IllegalArgumentException e) {
    e.printStackTrace();
  } catch (IllegalStateException e) {
    e.printStackTrace();
  }

Что мне не хватает? Спасибо за любую помощь!

  • 2
    Звучит странно ... Вы уверены, что ваш звук - это то, что вы думаете?
  • 0
    Майра == умная; Ехидна == тупой;
Теги:

2 ответа

0

Вместо этого используйте SoundPool, если это короткие звуковые клипы... Я столкнулся с множеством проблем, используя Mediaplayer для воспроизведения коротких звуков. Я сохраняю свои звуки в папке с ресурсами вместо res/raw... но вы можете получить те же результаты. Вот какой код.

private int BUZZ = sound_load("sounds/buzz.mp3");

private SoundPool _sounds = new SoundPool(8, AudioManager.STREAM_MUSIC, 0);

private int sound_load(String fname) {
    AssetManager am = getAssets();
    try {
        AssetFileDescriptor fd = am.openFd(fname);
        int sid = _sounds.load(fd.getFileDescriptor(), fd.getStartOffset(),
                fd.getLength(), 1);
        return sid;
    } catch (IOException e) {
    }
    return 0;
}

private void sound_play(int sid) {
    _sounds.play(sid, (float) 1.0, (float) 1.0, 0, 0, (float) 1.0);
}

Затем, чтобы воспроизвести звук, я просто назову его следующим образом:

sound_play(BUZZ);
0

Вы можете попробовать это.

  static MediaPlayer mpBackground = new MediaPlayer();

  mpBackground = MediaPlayer.create(this, R.raw.music);

  mpBackground.start();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню