Воспроизвести определенный звук уведомления

Я создал диалог для выбора звука уведомления для приложения. Я запрашиваю звуки уведомлений, получая курсор от RingtoneManager:

RingtoneManager manager = new RingtoneManager(this);
manager.setType(RingtoneManager.TYPE_NOTIFICATION);
Cursor cursor = manager.getCursor();

Затем я сохраняю полный путь к нему, объединяя звуковой путь с именем.

Это прекрасно работает, когда я установил выбранный звук в качестве звука уведомления, но не могу заставить проигрыватель мультимедиа проигрывать его при выборе:

MediaPlayer mp = MediaPlayer.create(this, Uri.parse(path));

Это создает исключение IllegalStateException:

java.lang.IllegalStateException: Unknown URL: content://media/internal/audio/media/Capella

Любые идеи о том, как получить правильный путь к конкретному звуку уведомления?

2 ответа

Решение

Правильный способ воспроизведения звука - использовать его идентификатор, а не имя:

cursor.getInt(RingtoneManager.ID_COLUMN_INDEX)

Спасибо Дарки за то, что указал мне правильное направление.

// чтобы воспроизвести рингтон, вам нужно создать новый рингтон с помощью RingtoneManager и передать его в переменную

Рингтон rt = mRingtoneManager.getRingtone(это, URI); rt.play();

Спасибо

Другие вопросы по тегам