Подтвердить что ты не робот

Каталог для хранения аудиофайлов в Android

Я хочу воспроизвести аудиофайл на основе щелчка кнопки. Я определил метод onClickListener() и файл макета. Когда я добавляю wav файлы в каталог res/, я получаю следующую ошибку сборки:

неверное имя каталога ресурсов temp.wav/hello/res line 1 Проблема AAPT для Android

Мой вопрос следующий:
1. Какой каталог мне нужен для хранения аудиофайлов? В настоящее время они находятся в папке res/. 2. Также, mp.setDataSource("/res/temp.wav") правильный способ вызова медиаплеера?

4b9b3361

Ответ 1

Не помещайте медиафайлы внутри res/

Поместите свои файлы (temp.wav) в папку с именем /sdcard/audio (если вы используете эмулятор).

и выполните следующее:

mp.setDataSource("/sdcard/audio/temp.wav");

Ответ 2

Аудиофайлы можно переместить в папку с именем raw, которая должна быть создана в папке res.

Доступ к нему можно получить по следующему коду:

MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.soundclip);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.start();

Это самый простой способ. Вы можете попробовать.

Ответ 3

надеюсь, что это поможет:

raw/

Произвольные файлы для сохранения в их исходной форме. Чтобы открыть эти ресурсы с помощью исходного InputStream, вызовите Resource.openRawResource() с идентификатором ресурса, который является R.raw.filename.

Однако, если вам нужен доступ к исходным именам файлов и иерархии файлов, вы можете рассмотреть возможность сохранения некоторых ресурсов в каталоге assets/resources (вместо res/raw/). Файлы в активах/не имеют идентификатор ресурса, поэтому вы можете читать их только с помощью AssetManager.

из dev guide.

[Edit: но я не думаю, что это хорошая идея разместить ваши музыкальные файлы в каталоге res вообще - это зависит от того, что является целью этих файлов?]

Ответ 4

Обратите внимание, что подготовка может занять некоторое время, поэтому она может замедлить взаимодействие пользователей с вашим приложением. См. Примечания dev здесь, в частности раздел Асинхронная подготовка!

Вы также можете использовать SoundPool, если размер файлов меньше 1 МБ. Это позволит вам синхронизировать с потоком пользовательского интерфейса. Это очень полезная статья об использовании этого (у Ларса есть ряд замечательных статей!).