Elio Khattar
Elio Khattar

Reputation: 330

Android 5.0+ MediaPlayer throws PreparedFailed Exception while trying to play OPUS file

I am trying to play an .opus media file from my android app (targeting 5.0+). The source of this file is the device external storage.

The MediaPlayer keeps on throwing a "java.io.IOException: Prepare failed.: status=0x1" . To note that i am able to play other file types like mp3 and aac

Note: READ_EXTERNAL_STORAGE permission already granted.

Thank you in advance.

Below part of my code located inside Android Fragment:

    public void playVoiceNote(VoiceNoteBO voiceNoteBO){
    try{

        Uri myUri = Uri.fromFile(new File(voiceNoteBO.getFileName()));  //this resolves to the full path of the file.

        MediaPlayer mediaPlayer = new MediaPlayer();
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mediaPlayer.setDataSource(getActivity().getApplicationContext(), myUri);
        mediaPlayer.prepare();
        mediaPlayer.start();

    }catch(Exception e){
        //TODO
        e.printStackTrace();

    }
}

And the Stack trace:

06-04 18:31:46.129 1134-27920/? E/GenericSource: Failed to init from data source!
06-04 18:31:46.129 27425-27443/? E/MediaPlayer: error (1, -2147483648)
06-04 18:31:46.129 27425-27425/? W/System.err: java.io.IOException: Prepare failed.: status=0x1
06-04 18:31:46.130 27425-27425/? W/System.err:     at android.media.MediaPlayer._prepare(Native Method)
06-04 18:31:46.130 27425-27425/? W/System.err:     at android.media.MediaPlayer.prepare(MediaPlayer.java:1135)
06-04 18:31:46.130 27425-27425/? W/System.err:     at com.frankyapps.privateread.prws.fragments.VoiceNotesFragment.playVoiceNote(VoiceNotesFragment.java:166)
06-04 18:31:46.130 27425-27425/? W/System.err:     at com.frankyapps.privateread.prws.fragments.VoiceNotesFragment$1.onClick(VoiceNotesFragment.java:76)
06-04 18:31:46.130 27425-27425/? W/System.err:     at com.frankyapps.privateread.prws.fragments.VoiceNotesFragment$RecyclerTouchListener.onInterceptTouchEvent(VoiceNotesFragment.java:217)
06-04 18:31:46.130 27425-27425/? W/System.err:     at android.support.v7.widget.RecyclerView.dispatchOnItemTouch(RecyclerView.java:2261)
06-04 18:31:46.130 27425-27425/? W/System.err:     at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2389)
06-04 18:31:46.130 27425-27425/? W/System.err:     at android.view.View.dispatchTouchEvent(View.java:8471)

Upvotes: 1

Views: 787

Answers (1)

Sneh Saluja
Sneh Saluja

Reputation: 63

Try using create() method for creating MediaPlayer object. This is how you could do it:

MediaPlayer mediaPlayer = MediaPlayer.create(context, myUri);
mediaPlayer.start();

No Need to call prepare() method (if you are using create() to instantiate MediaPlayer object), because prepare() will be implicitly called by create().

This link will help you for sure : https://developer.android.com/reference/android/media/MediaPlayer.html

Upvotes: 1

Related Questions