mad*_*ik3 5 android media-player
我的资产目录中有一个音频文件.资产/音频/ dance.mp3.
如果我运行context.getAssets().list("audio"); 它出现了.
但是当我尝试使用MediaPlayer.create(context,uri)时,它总是失败并返回null.
这似乎都不起作用
private void tryLoad(String path,Context context)
{
Uri uri = Uri.parse(path);
this.audioPlayer = MediaPlayer.create(context,uri);
if (this.audioPlayer == null)
{
Log.d(TAG, "loadAudio: audioPlayer is null. current assets"+ uri.toString()) ;
}
else
{
Log.d(TAG, "loadAudio: WORKED"+ uri.toString()) ;
}
}
public void loadAudio(Context context)
{
if (this.audioPlayer != null)
return;
if (this.audioFile != null && this.audioFile.length() >0)
{
try
{
tryLoad("/dance.mp3",context);
tryLoad("dance.mp3",context);
tryLoad("audio/dance.mp3",context);
tryLoad("/audio/dance.mp3",context);
tryLoad("assets/audio/dance.mp3",context);
tryLoad("/assets/audio/dance.mp3",context);
tryLoad("\\dance.mp3",context);
tryLoad("dance.mp3",context);
tryLoad("audio\\dance.mp3",context);
tryLoad("\\audio\\dance.mp3",context);
tryLoad("assets\\audio\\dance.mp3",context);
tryLoad("\\assets\\audio\\dance.mp3",context);
}
catch (Exception e)
{
Log.d(TAG, "loadAudio exception: " + e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
我认为您可以做到这一点,因为MediaPlayer需要一个 URI,并且不可能为资产文件创建 URI。尝试创建一个MediaPlayer对象并使用该方法为其设置数据源MediaPlayer.setDataSource(FileDescriptor)。您可以FileDescriptor使用该AssetManager.openFd()方法获取对象,然后调用AssetFileDescriptor.getFileDescriptor()返回对象的方法。
我还没有尝试过这个解决方案,所以这只是一个想法。但我希望它能奏效。
| 归档时间: |
|
| 查看次数: |
8113 次 |
| 最近记录: |