使用Android mediaPlayer的resourceId从原始文件夹播放文件
在Android中,我可以使用使用Android mediaPlayer的resourceId从原始文件夹播放文件,android,android-mediaplayer,Android,Android Mediaplayer,在Android中,我可以使用raw/文件夹中的资源创建mediaPlayer的实例,然后我可以使用来播放该文件。稍后,我可以使用的各种签名来更改要播放的文件 我可以使用以下方法获取raw/文件夹中给定文件的resourceId: int resourceId = activity.getResources().getIdentifier("myFileName", "raw", activity.getPackageName()); 是否可以使用此整数resourceId开始播放该文件而不是
raw/
文件夹中的资源创建mediaPlayer
的实例,然后我可以使用来播放该文件。稍后,我可以使用的各种签名来更改要播放的文件
我可以使用以下方法获取raw/
文件夹中给定文件的resourceId:
int resourceId = activity.getResources().getIdentifier("myFileName", "raw", activity.getPackageName());
是否可以使用此整数resourceId开始播放该文件而不是当前文件?或者我必须确定文件res/raw/myFileName.mid的完整路径才能更改曲目吗
我希望解决方案是这样的,用一个真正的方法,而不是我发明的equalityToSetDataSourceUsingResourceId()
方法名
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();
这在我看来并不优雅。根据setDataSource
API,只允许在MediaPlayer的新实例(空闲状态)上使用。这意味着您必须release()
并从头开始重新创建MediaPlayer,才能一次只使用一个实例
试着这样做。只需传递原始资源的id:
mMediaPlayer=MediaPlayer.create(这个,R.raw.whates)