在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();
這似乎並不優雅給我。