Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MediaPlayer.setDataSource在AMR音频文件上失败_Android_Media Player_Amr - Fatal编程技术网

Android MediaPlayer.setDataSource在AMR音频文件上失败

Android MediaPlayer.setDataSource在AMR音频文件上失败,android,media-player,amr,Android,Media Player,Amr,…尝试从应用程序缓存目录播放本地AMR音频文件时。它发生在HTC魔术,HTC欲望上。AMR音频文件由SonyEricsson xperia x10 mini录制,并从互联网下载 MediaPlayer的创建方式如下: 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.e

…尝试从应用程序缓存目录播放本地AMR音频文件时。它发生在HTC魔术,HTC欲望上。AMR音频文件由SonyEricsson xperia x10 mini录制,并从互联网下载

MediaPlayer的创建方式如下:

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

有什么想法吗?

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

尝试使用其他文件之一,看看是否有效。

我尝试使用setDataSource(字符串文件路径),但我使用应用程序缓存目录中的音频文件,MediaPlayer无权访问它。不过,它可以使用FileDescriptor,但并不总是这样。
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) {
 ...
}