将数据源设置为MediaPlayer中的原始ID

在MediaPlayer.create方法中,可以使用id到Raw文件,但是如何在setDataSource方法中使用它?

Solutions Collecting From Web of "将数据源设置为MediaPlayer中的原始ID"

您可以将原始audio加载到inputstream中,然后像普通stream一样将其加载到MediaPlayer中:

InputStream ins = getResources().openRawResource(R.raw.example); 

然后按照像pocketjourney一样的stream媒体教程

但是这个过于复杂,你可以打电话

 mp = MediaPlayer.create(counterstrikesb.this, R.raw.example); 

请参考源android.media.MediaPlayer

 AssetFileDescriptor afd = context.getResources().openRawResourceFd(resid); if (afd == null) return; mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); afd.close(); 

你可能想添加try-catch到块。

在这里解释@ Kartik的答案获取存储在android的res / raw文件夹中的.mp3文件的URI

如果你想获得任何资源的URI,那么有两种方法:

  1. 使用资源名称

语法:android.resource:// [package] / [res type] / [res name]

例如:Uri.parse(“android.resource://com.my.package/drawable/icon”);

  1. 使用资源ID

语法:android.resource:// [package] / [resource_id]

例如:Uri.parse(“android.resource://com.my.package/”+ R.drawable.icon);

这些是获取存储在可绘制文件夹中的任何图像文件的URI的示例。 同样,您可以获取res / raw文件夹的URI。

国际海事组织的第二种方式将是首选,因为重命名资源等可以很容易地重构。

像这样设置数据源:

 CONSTANTS.RES_PREFIX = "android.resource://com.my.package/" 
 mp.setDataSource(getApplicationContext(), Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));