Android 播放位于“资源”文件夹中的媒体文件
我目前在android项目的原始文件夹中有一组媒体文件,这些文件在使用mediaplayer类调用时可以快速加载和播放。我需要添加这些文件的更多变体并将它们分类到文件夹中,但显然原始文件夹不支持文件夹。我能从assets文件夹快速加载这些文件并用mediaplayer播放它们吗?如果是,如何播放?这里有一个功能,可以播放资产文件夹中的媒体文件。您可以将它与smth一起使用,如Android 播放位于“资源”文件夹中的媒体文件,android,assets,android-mediaplayer,Android,Assets,Android Mediaplayer,我目前在android项目的原始文件夹中有一组媒体文件,这些文件在使用mediaplayer类调用时可以快速加载和播放。我需要添加这些文件的更多变体并将它们分类到文件夹中,但显然原始文件夹不支持文件夹。我能从assets文件夹快速加载这些文件并用mediaplayer播放它们吗?如果是,如何播放?这里有一个功能,可以播放资产文件夹中的媒体文件。您可以将它与smth一起使用,如play(这是“sounds/1/sound.mp3”) 我有一个方法,它通过扩展名返回资产文件夹中文件夹中的所有文件:
play(这是“sounds/1/sound.mp3”)代码>
我有一个方法,它通过扩展名返回资产文件夹中文件夹中的所有文件:
public static String[] getAllFilesInAssetByExtension(Context context, String path, String extension){
Assert.assertNotNull(context);
try {
String[] files = context.getAssets().list(path);
if(StringHelper.isNullOrEmpty(extension)){
return files;
}
List<String> filesWithExtension = new ArrayList<String>();
for(String file : files){
if(file.endsWith(extension)){
filesWithExtension.add(file);
}
}
return filesWithExtension.toArray(new String[filesWithExtension.size()]);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
这将返回资产根文件夹中的所有mp3文件
如果您使用以下命令调用它:
getAllFilesInAssetByExtension(yourcontext, "somefolder", ".mp3");
这将在“somefolder”中搜索mp3文件
现在您已经列出了要打开的所有文件,您将需要:
AssetFileDescriptor descriptor = getAssets().openFd("myfile");
要播放文件,只需执行以下操作:
MediaPlayer player = new MediaPlayer();
long start = descriptor.getStartOffset();
long end = descriptor.getLength();
player.setDataSource(this.descriptor.getFileDescriptor(), start, end);
player.prepare();
player.setVolume(1.0f, 1.0f);
player.start();
希望这对您有所帮助您可以将mp3文件放在:res/raw文件夹中,如myringtone.mp3或您所愿
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.myringtone);
mediaPlayer.start();
MediaPlayer player = new MediaPlayer();
long start = descriptor.getStartOffset();
long end = descriptor.getLength();
player.setDataSource(this.descriptor.getFileDescriptor(), start, end);
player.prepare();
player.setVolume(1.0f, 1.0f);
player.start();
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.myringtone);
mediaPlayer.start();