Ваша проблема в том, что вы не проверяете mp
, прежде чем вызывать методы для него.Согласно документации , если MediaPlayer.create
не удастся, он вернет null
.
Правило большого пальца с NullPointerException
s: вернитесь и проверьте свои возвращения.Что-то обычно возвращает null
, когда вы этого не ожидаете, и вы пытаетесь вызвать метод для него.В этом случае вы ничего не звоните на fileName
, так что это безопасно.Вы звоните по номеру mp
, так что это, вероятно, то, что вас заставляет.
[править]
Почему звук не воспроизводится:
Вы не 'Вызов setAudioStreamType(AudioManager.STREAM_MUSIC);
и использование URI при создании экземпляра MediaPlayer
предназначены только для локально хранимых носителей.Для сетевых носителей необходимо установить его местоположение, позвонив setDataSource(context, uri);
.
С (очень хорошая) документация :
Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();`