Я делаю пользовательский DialogPreference, который выводит окно выбора рингтона. Кроме списка доступных в системе рингтонов, в окне выводятся дополнительные .mp3 файлы приложения, находящиеся в папке raw. В обработчике нажатия я проигрываю выбранную мелодию. Установленные рингтоны проигрываются без проблем, а вместо моих raw файлов проигрывается мелодия по умолчанию.
Проигрывание mp3 файлов:
try{
int resId = mContext.getResources().getIdentifier("name_of_my_mp3", "raw",
mContext.getPackageName());
Uri uri=Uri.parse("android.resource://" + mContext.getPackageName() + "/"+resId);
Ringtone ringtone = RingtoneManager.getRingtone(mContext, uri);
ringtone.play();
catch (Exception e) {
e.printStackTrace();
}
Ошибок не вызывает, идентификатор находит, но играет дефолтную мелодию. Может подскажете, где копать?
Проблема решена заменой Ringtone на MediaPlayer.
private MediaPlayer mPlayer;
//конструктор
public ExtraRingtonePreference(Context context, AttributeSet attrs) {
mPlayer=new MediaPlayer();
}
//проигрывание при нажатии на строчку списка с мелодией
public void onClick(DialogInterface dialog, int which) {
if ( mPlayer.isPlaying()) {
mPlayer.stop();
}
int resId = mContext.getResources().getIdentifier("name_of_pressed_sound", "raw", mContext.getPackageName());
Uri uri = Uri.parse("android.resource://" + mContext.getPackageName() + "/" + resId);
if (uri != null) {
if (uri.toString().length() > 0) {
try
{
mPlayer.reset();//очистить от предыдущей мелодии, иначе выдаст ошибку ввода/вывода
mPlayer.setDataSource(mContext, uri);
mPlayer.prepare();
mPlayer.start();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}
RingtoneManager
если не может найти файл подсовывает стандартный рингтон, попробуйте в таком формате
android.resource://com.example.package/raw/name_of_my_mp3
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Использую метод getValueAt() чтобы получить значение числа из ячейки JTable но возвращается почему то 0
Как запустить java-файл без среды разработки? Выдает ошибку:
Пишу сайт на java + SpringНеобходимо добавить загрузку фото, документов на сайт