我正在使用音频流在设备上播放MP3文件,并且在ICS问世之前没有问题。然后我认为它可能是一个格式支持问题,所以我尝试使用以下代码的OGG文件:
MediaPlayer mmp= MediaPlayer.create(context,
Uri.parse("http://vorbis.com/music/Epoq-Lepidoptera.ogg"));
mmp.start();
这适用于早期的操作系统版本,但在ICS上失败。我还尝试使用onPreparesListener atc创建setDataSource(this, uri)
媒体播放器,但仍然出现同样的错误:
04-08 09:52:12.459: D/MediaPlayer(541): Couldn't open file on client side, trying server side 04-08 09:52:12.489: E/MediaPlayer(541): Unable to to create media player 04-08 09:52:12.529: D/MediaPlayer(541): create failed: 04-08 09:52:12.529: D/MediaPlayer(541): java.io.IOException: setDataSource failed.: status=0x80000000 04-08 09:52:12.529: D/MediaPlayer(541): at android.media.MediaPlayer._setDataSource(Native Method) 04-08 09:52:12.529: D/MediaPlayer(541): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:844) 04-08 09:52:12.529: D/MediaPlayer(541): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:806) 04-08 09:52:12.529: D/MediaPlayer(541): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:761) 04-08 09:52:12.529: D/MediaPlayer(541): at android.media.MediaPlayer.create(MediaPlayer.java:695) 04-08 09:52:12.529: D/MediaPlayer(541): at android.media.MediaPlayer.create(MediaPlayer.java:676)
所以我的问题是如何在ICS上使用MediaPlayer传输音频文件?有没有人有工作代码或者必须有一些特定的文件格式和编码? 但它很糟糕,新的操作系统版本不会向后兼容......
答案 0 :(得分:0)
我同样也遇到了同样的问题,所以我改变了方向并做了这件事,这对我来说很好。但是,您必须将声音文件保存在res / assets文件夹中。
try {
AssetFileDescriptor afd = getAssets().openFd("mysound.mp3");
mPlayer = new MediaPlayer();
mPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
mPlayer.prepare();
mPlayer.start();
}
catch (IllegalStateException e) {
Log.d(TAG, "IllegalStateException: " + e.getMessage());
}
catch (IOException e) {
Log.d(TAG, "IOException: " + e.getMessage());
}
catch (IllegalArgumentException e) {
Log.d(TAG, "IllegalArgumentException: " + e.getMessage());
}
catch (SecurityException e) {
Log.d(TAG, "SecurityException: " + e.getMessage());
}
然后你会以通常的方式释放资源:
if(mPlayer != null) {
if(mPlayer.isPlaying()) mPlayer.stop();
mPlayer.release();
mPlayer = null;
}
希望这也适合你。