2016-12-16 2 views
2

Я пытаюсь позволить пользователю открыть аудиофайл и воспроизвести этот файл. Однако метод MediaPlayer.create() возвращает null. Вот мой код:android: mediaplayer.create() возвращает null

MediaPlayer mediaPlayer; 

public void start(View v) { 
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("audio/*"); 
    startActivityForResult(intent,1); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode == RESULT_OK) { 
     Uri uri = data.getData(); 
     mediaPlayer = MediaPlayer.create(this,uri); 
     //startThread(); 
     mediaPlayer.start(); 
    } else { 
     mediaPlayer.start(); 
    } 
} 

Я пробовал его с mp3-файлами, что у моего устройства нет проблем с другими игроками. Uri i get выглядит так: "content://media/external/audio/media/137650" Что я делаю неправильно?

+0

API create() API возвращает null, если он каким-то образом не прошел. Причина в этом случае - поврежденный mp3-файл. Вы пробовали разные файлы? –

+1

Убедитесь, что у вас есть разрешение READ_EXTERNAL_STORAGE. Это, в свою очередь, требует, чтобы вы запрашивали разрешения во время выполнения, если ваш 'targetSdkVersion' равен 23 или выше, и вы тестируете на Android 6.0 или выше. Вы также можете проверить LogCat для любых релевантных сообщений, так как «MediaPlayer» имеет тенденцию регистрировать материал с серьезностью предупреждения и не исключать исключения. Кроме того, не называть 'mediaPlayer.start()' в вашем блоке 'else', так как вы не инициализировали' mediaPlayer'. – CommonsWare

+0

Да, и как я уже сказал, другие игроки могут играть в эти файлы. они определенно не коррумпированы – Ginso

ответ

0

Попробуйте с помощью следующего кода:

MediaPlayer mPlayer = new MediaPlayer(); 
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mPlayer.setDataSource(getApplicationContext(), uri); 
mPlayer.prepare(); 
mPlayer.start(); 
0

Это случилось со мной после того, как ошибка была Невозможно создать медиа, это был файл, который вызывает файл ошибки был .wav, когда я использовал .mp3 ошибка была ушел

+0

Что до этого связано с вопросом (OP не имеет этой ошибки - они получают 'null!!) –

+0

' mediaPlayer = MediaPlayer.create (this, uri); 'Эта строка генерирует ошибку из-за формата файла, который в этом случае получает от uri. Итак, после этой строки, если вы делаете 'mediaPlayer.start()' THIS будет генерировать нулевое исключение ... Так что я имел в виду, что формат файла был основной проблемой за этим исключением, по крайней мере, для моего случая. – Tabish

+0

. Этот раздел предназначен для добавления ответа на OP, а не для описания проблем с вашим кодом и того, как вы его исправили! –

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