Каталог для хранения аудио файлов в Android - PullRequest
33 голосов
/ 12 января 2011

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

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

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

Ответы [ 4 ]

82 голосов
/ 09 марта 2012

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

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

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

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

14 голосов
/ 12 января 2011

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

raw /

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

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

Это из руководства разработчика .

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

2 голосов
/ 08 мая 2012

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

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

0 голосов
/ 12 января 2011

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

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

и сделайте это:

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