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音频文件是索尼爱立信xperia x10 mini录制的,是从网上下载的。

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) {
 ...
}

有任何想法吗?

4

1 回答 1

1

我注意到某些 setDataSource 调用可能在不同的设备上失败(可能是由于平台特定播放器的特性)。例如,使用失败的内容setDataSource( FileDescriptor )可能适用于setDataSource( Context, Uri )or setDataSource( String )

尝试使用其中一种,看看是否有效。

于 2011-03-25T17:51:07.683 回答