Воспроизвести определенный звук уведомления
Я создал диалог для выбора звука уведомления для приложения. Я запрашиваю звуки уведомлений, получая курсор от 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();
Спасибо