2015-03-06 4 views
1

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

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

+0

какое значение содержит переменная path? – Umair

+0

@ Darkie "content: // media/internal/audio/media/Capella" –

+1

Я думаю, что после мультимедиа/вы должны получать идентификатор трека, а не имя, потому что когда вы получаете доступ к пути, он дает вам путь трека с идентификатором не с именем. вы должны проверить это ... – Umair

ответ

2

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

cursor.getInt(RingtoneManager.ID_COLUMN_INDEX) 

Спасибо Darkie указал мне в правильном направлении.

+0

рад помочь вам ... :) – Umair

0

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

Ringtone к.т. = mRingtoneManager.getRingtone (это, Ури); rt.play();

Благодаря

Смежные вопросы