2013-06-28 6 views
1

Я работаю над RINGTONES прагматично в MEDIA PLAYER. До этого у меня хранился весь мой абсолютный путь RINGTONES в SQLite DB. В то время, когда мне нужно воспроизвести мелодию звонка, мне нужно получить путь от БД и преобразовать его в URI и воспроизвести мелодии звонка, но я получаю NULL POINTER EXCEPTION в строке 2 ниже кода.Получение исключения Null Pointer в MediaPlayer в Android?

Uri u = Uri.parse(soundpath); 
    player = MediaPlayer.create(this, u); 
    Context con =getApplicationContext(); 
    player.setWakeMode(con,PowerManager.PARTIAL_WAKE_LOCK); 
    player.setVolume(1f, 1f); 
    player.start(); 

На отладки, я получаю значение переменной soundpath в /содержание:/СМИ/внутренний/аудио/СМИ/23

Пожалуйста, предложите мне.

EDITED: Код, используемый для хранения всех Рингтоны в HashMap

Ringtone ringtone = ringtoneMgr.getRingtone(currentPosition); 
       System.out.println(ringtone.getTitle(this)); 
       File uripath=new File(ringtoneMgr.getRingtoneUri(currentPosition).toString()); 
    Toast.LENGTH_LONG).show(); 
       ringtonemap.put(ringtone.getTitle(this), uripath.getAbsolutePath()); 
       arraylist.add(ringtone.getTitle(this)); 
+1

Это URI не выглядит правильно. Это должно быть 'content: // media/internal/audio/media/23' - вы правильно его сохраняете? –

+0

Я получаю контент:/media/internal/audio/media/23 'как URI и преобразовываю его в абсолютный путь и сохраняю его в hashmap. –

+0

Даже неправильный uri не должен вызывать исключение нулевого указателя в строке 2. Поэтому я не уверен, что происходит. Пожалуйста, разместите stacktrace и в идеале больше кода создания медиапланера (в каком контексте он и т. Д.)? –

ответ

1

Это URI не выглядит правильно. Это должно быть content://media/internal/audio/media/23 - вы правильно храните его?

Убедитесь, что вы храните их правильно. Если это не возможно изменения, как они хранятся, вы всегда можете отформатировать их правильно, прежде чем переходить к MediaPlayer

soundpath = soundpath.replaceAll("/content:/", "content://"); 
+0

Спасибо alot Ken Wolf –

2

Я преобразование пути URI из строки в файл, который не требуется. Ошибка была в времени генерации пути. Новый код размещен ниже:

Ringtone ringtone = ringtoneMgr.getRingtone(currentPosition); 
      System.out.println(ringtone.getTitle(this)); 
     String uri =ringtoneMgr.getRingtoneUri(currentPosition).toString(); 
Toast.LENGTH_LONG).show(); 
      ringtonemap.put(ringtone.getTitle(this),uri); 
      arraylist.add(ringtone.getTitle(this)); 

В то время, когда я должен играть мелодию:

player = MediaPlayer.create(this, Uri.parse(soundpath)); 

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

  • Нет связанных вопросов^_^