我正准备将媒体播放器设置为单身,以便可以通过我项目中的各种活动来控制它。许多研究使我得到了以下代码。
if (current_player == null)
{
try
{
current_player = MusicPlayer.getInstance();
AssetFileDescriptor afd = this.getResources().openRawResourceFd(R.raw.mytune);
current_player.setDataSource(afd.getFileDescriptor());
current_player.prepare();
current_player.setLooping(true);
current_player.start();
afd.close();
}
catch (IllegalArgumentException e) { Log.e("IllegalArgumentException", "error: " + e.getMessage(), e); }
catch (IllegalStateException e) {Log.e("IllegalStateException", "error: " + e.getMessage(), e); }
catch (IOException e) {Log.e("IOException", "error: " + e.getMessage(), e); }
catch (Exception e){ Log.e("Main media player", "error: " + e.getMessage(), e);
}
我知道这一点 1.正在创建MediaPlayer 2. AssetFileDescriptor用于正确的文件
代码在带有IOException的.setDataSource行失败 错误:setDataSourceFD失败:状态= 0x80000000
该代码故意类似于各种论坛上显示的许多示例,声称它应该有效。 要明确我已经证明了
current_player= MediaPlayer.create(this, R.raw.mytune);
工作正常。
我会非常感谢任何建议。
答案 0 :(得分:4)
将文件放在资产目录中。 AssetFileDescriptor afd = ...
AssetFileDescriptor afd = context.getAssets().openFd(fileName);
current_player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength() );