2011-01-15 3 views
4
01-15 00:57:08.660: WARN/System.err(25286): java.io.IOException: setDataSourceFD failed.: status=0x80000000 
01-15 00:57:08.660: WARN/System.err(25286):  at android.media.MediaPlayer.setDataSource(Native Method) 
01-15 00:57:08.660: WARN/System.err(25286):  at android.media.MediaPlayer.setDataSource(MediaPlayer.java:854) 
... 

... 응용 프로그램 캐시 디렉토리에서 로컬 AMR 오디오 파일을 재생하려고 할 때. HTC Magic, HTC Desire에서 발생합니다. AMR 오디오 파일은 SonyEricsson xperia x10 mini에서 녹음되었으며 인터넷에서 다운로드되었습니다.AMR 오디오 파일에서 MediaPlayer.setDataSource가 실패 함

MediaPlayer를은 다음과 같은 방법으로 생성됩니다

MediaPlayer player = new MediaPlayer(); 
player.setOnCompletionListener(this); 
player.setOnErrorListener(this); 
player.setAudioStreamType(AudioManager.STREAM_MUSIC); 
try { 
FileInputStream fis = new FileInputStream(filePath); 
player.setDataSource(fis.getFD()); 
} catch (Exception e) { 
... 
} 

어떤 아이디어?

답변

1

특정 setDataSource 호출이 다른 장치에서 실패 할 수 있습니다 (플랫폼 별 플레이어의 특수한 특성 때문일 수 있습니다). 예를 들어, setDataSource(FileDescriptor)을 사용하여 실패한 경우는 setDataSource(Context, Uri) 또는 setDataSource(String)으로 잘 작동 할 수 있습니다.

다른 기능 중 하나를 사용하여 작동하는지 확인해보십시오.

+0

setDataSource (String filePath)를 사용했지만 응용 프로그램 캐시 디렉토리에 오디오 파일을 사용했지만 MediaPlayer에 액세스 할 수 없습니다. 그러나 FileDescriptor와 함께 작동하지만 항상 그렇지는 않습니다. – plugmind