gpt4 book ai didi

android - 将原始数据源设置为 mediaplayer 单例

转载 作者:行者123 更新时间:2023-11-29 16:16:00 27 4
gpt4 key购买 nike

我正在尝试将媒体播放器设置为单例,以便可以通过我项目中的各种 Activity 对其进行控制。许多研究使我得到了以下代码。

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 用于正确的文件

代码在 .setDataSource 行失败并出现 IOException
错误:setDataSourceFD 失败。:status=0x80000000

该代码故意与各种论坛上显示的许多示例相似,这些示例声称它应该可以工作。明确地说,我已经证明了

current_player= MediaPlayer.create(this, R.raw.mytune);

工作正常。

如果有任何建议,我将不胜感激。

最佳答案

将文件放在目录assets 中。更正 AssetFileDescriptor afd =...

AssetFileDescriptor afd = context.getAssets().openFd(fileName);
current_player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength() );

关于android - 将原始数据源设置为 mediaplayer 单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com