2017-01-23 2 views
0

У меня есть голосовая заметка под названием Hello.m4aMedia Player - путь к файлу на устройстве не распознается

Вот путь к файлу аудио на устройстве:

enter image description here

Я хочу, чтобы установить это голосовое примечание к объекту MediaPlayer и не может для жизни меня выяснить, как это сделать. Вот моя последняя попытка, но я получаю сообщение нулевой ошибки объект:

String voice = Environment.getExternalStorageDirectory().getPath() + "/VoiceRecorder/Hello.m4a"; 
    Log.d("MAIN",voice); 
    MediaPlayer mpintro = MediaPlayer.create(this, Uri.parse(voice)); 
    mpintro.start(); 

Вот что производит мой журнал сообщений:

/storage/emulated/0/VoiceRecorder/Hello.m4a 

Вот сообщение LogCat:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference 

Может кто-то объясните, что я здесь делаю неправильно? Спасибо.

У меня есть эти разрешения в моем файле манифеста:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

ответ

2

При установке Uri добавить "file://" перед путь к файлу, т.е.:

MediaPlayer.create(this, Uri.parse("file://" + voice);

Вы должны позволить MediaPlayer знать явно сво файл, а также HTTP-поток и т. д.

Также, если вы настроите таргетинг на API 23+, вам потребуется время выполнения разрешений для доступа к файлам на хранилище.

+0

Я добавил его, но все равно ничего. Вот именно то, что получает синтаксический анализ: файл: //storage/emulated/0/VoiceRecorder/Hello.m4a –

+0

должен быть 3 косой чертой –

+0

К сожалению, для записи файла: ///storage/emulated/0/VoiceRecorder/Hello.m4a –

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