在Android中,我可以使用MediaPlayer.create(context, R.raw.myFileName)创建mediaPlayer
的一个实例,使用资源从raw/
文件夹,然后我可以使用.start()来获取文件玩。稍后,我可以使用.setDataSource()的各种签名来更改我想播放的文件。播放使用Android的MediaPlayer的原始文件夹中的文件,利用其RESOURCEID
我能获得RESOURCEID在raw/
文件夹给定文件,使用:
int resourceId = activity.getResources().getIdentifier("myFileName", "raw", activity.getPackageName());
是否有可能使用该整数RESOURCEID开始播放该文件,而不是当前的?或者我必须确定文件res/raw/myFileName.mid
的完整路径才能更改曲目?
我希望解决方案将是这样的,用真正的方法,而不是我发明的方法名称。
Resources resources = activity.getResources();
String packageName = activity.getPackageName();
int white = resources.getIdentifier("white", "raw", packageName);
int black = resources.getIdentifier("black", "raw", packageName);
MediaPlayer mediaPlayer = MediaPlayer.create(activity, white);
mediaPlayer.start();
// ... and some time later...
mediaPlayer.reset();
mediaPlayer.equivalentToSetDataSourceUsingAResourceId(black);
mediaPlayer.prepare();
mediaPlayer.start();
另一种方法是破坏当前mediaPlayer
实例,并创建一个新的每个声音文件需要修改时间:
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
}
mediaPlayer = MediaPlayer.create(activity, black);
mediaPlayer.start();
这似乎并不优雅给我。