Ответ 1
Не помещайте медиафайлы внутри res/
Поместите свои файлы (temp.wav) в папку с именем /sdcard/audio (если вы используете эмулятор).
и выполните следующее:
mp.setDataSource("/sdcard/audio/temp.wav");
Я хочу воспроизвести аудиофайл на основе щелчка кнопки. Я определил метод onClickListener()
и файл макета. Когда я добавляю wav файлы в каталог res/
, я получаю следующую ошибку сборки:
неверное имя каталога ресурсов temp.wav/hello/res line 1 Проблема AAPT для Android
Мой вопрос следующий:
1. Какой каталог мне нужен для хранения аудиофайлов? В настоящее время они находятся в папке res/.
2. Также, mp.setDataSource("/res/temp.wav")
правильный способ вызова медиаплеера?
Не помещайте медиафайлы внутри res/
Поместите свои файлы (temp.wav) в папку с именем /sdcard/audio (если вы используете эмулятор).
и выполните следующее:
mp.setDataSource("/sdcard/audio/temp.wav");
Аудиофайлы можно переместить в папку с именем raw
, которая должна быть создана в папке res.
Доступ к нему можно получить по следующему коду:
MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.soundclip);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.start();
Это самый простой способ. Вы можете попробовать.
надеюсь, что это поможет:
raw/
Произвольные файлы для сохранения в их исходной форме. Чтобы открыть эти ресурсы с помощью исходного InputStream, вызовите Resource.openRawResource() с идентификатором ресурса, который является R.raw.filename.
Однако, если вам нужен доступ к исходным именам файлов и иерархии файлов, вы можете рассмотреть возможность сохранения некоторых ресурсов в каталоге assets/resources (вместо res/raw/). Файлы в активах/не имеют идентификатор ресурса, поэтому вы можете читать их только с помощью AssetManager.
из dev guide.
[Edit: но я не думаю, что это хорошая идея разместить ваши музыкальные файлы в каталоге res вообще - это зависит от того, что является целью этих файлов?]
Обратите внимание, что подготовка может занять некоторое время, поэтому она может замедлить взаимодействие пользователей с вашим приложением. См. Примечания dev здесь, в частности раздел Асинхронная подготовка!
Вы также можете использовать SoundPool, если размер файлов меньше 1 МБ. Это позволит вам синхронизировать с потоком пользовательского интерфейса. Это очень полезная статья об использовании этого (у Ларса есть ряд замечательных статей!).