2016-06-04 16 views
0

Ich versuche eine .opus-Mediendatei von meiner Android-App abzuspielen (Targeting 5.0+). Die Quelle dieser Datei ist der externe Speicher des Geräts.Android 5.0+ MediaPlayer wirft PreparedFailed Exception beim Versuch, die OPUS-Datei abzuspielen

Der MediaPlayer wirft weiterhin eine "java.io.IOException: Prepare failed .: status = 0x1". Beachten Sie, dass ich andere Dateitypen wie mp3 und aac spielen kann

Hinweis: READ_EXTERNAL_STORAGE Berechtigung bereits erteilt.

Vielen Dank im Voraus.

Unten Teil meines Code in Android Fragment befindet:

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(); 

    } 
} 

und der 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) 

Antwort

1

Versuchen Sie erstellen() -Methode für Mediaplayer-Objekt erstellen. Diese ist, wie Sie es tun könnte:

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

No Need() Methode aufrufen vorbereiten (wenn Sie erstellen() verwenden Mediaplayer-Objekt zu instanziiert), weil prepare() wird implizit durch create() aufgerufen werden .

Dieser Link führt Sie sicher helfen: https://developer.android.com/reference/android/media/MediaPlayer.html

+0

Dank, aber es ist immer noch mit der gleichen Ausnahme versagt, schon es es ausprobiert. Beachten Sie auch, dass mein vorheriger Code aac- und mp3-Dateien korrekt wiedergibt! –

+0

Hallo Elio, für welche Android-Version codierst du? In welcher Version führen Sie Ihre App aus? –

+0

Hallo Sneh, Ausrichtung 5.0, läuft auf 6.0 –