2016-06-04 3 views
0

(5.0 이상을 타겟팅하는) 안드로이드 앱에서 .opus 미디어 파일을 재생하려고합니다. 이 파일의 출처는 장치 외부 저장소입니다.안드로이드 5.0+ OPUS 파일 재생 중 PreparedFailed 예외가 발생했습니다

MediaPlayer는 "java.io.IOException : Prepare failed : status = 0x1"을 던지기를 계속합니다. mp3 및 aac와 같은 다른 파일 형식을 재생할 수 있습니다.

참고 : READ_EXTERNAL_STORAGE 권한이 이미 부여되었습니다.

미리 감사드립니다.

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

    } 
} 

그리고 스택 추적 : 안드로이드 조각 내부에있는 내 코드의 일부가 아래

 
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) 

답변

1

MediaPlayer를 객체를 생성() 메소드를 만들 사용해보십시오.) (

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

(당신이 MediaPlayer를 개체를 인스턴스화()를 만들 사용하는 경우) (준비 때문에) (준비 메서드를 호출 할 필요 없음)를 암시 적으로 생성에 의해 호출됩니다 이것은 당신이 그것을 할 수있는 방법입니다 .

이 링크는 확실히 당신을 도울 것입니다 : https://developer.android.com/reference/android/media/MediaPlayer.html

+0

감사하지만 여전히 같은 예외와 함께 실패는, 이미 그것을 시도했다. 또한 이전의 코드가 aac 및 mp3 파일을 올바르게 재생 중임을 참고하십시오! –

+0

안녕하세요 Elio, 어떤 Android 버전을 코딩하고 있습니까? 앱을 어느 버전에서 실행하고 있습니까? –

+0

안녕하세요 Sneh, 6.0에서 실행되는 5.0 타겟팅 –