我有一个运行音频的功能
public void PlaySound(String FileName){
MediaPlr = MediaPlayer.create(Context, R.raw.s1);
MediaPlr.start();
}
问题是R.raw.s1
,我想用 替换s1
,FileName
但它不需要字符串。我能做些什么???
感谢所有帮助
我有一个运行音频的功能
public void PlaySound(String FileName){
MediaPlr = MediaPlayer.create(Context, R.raw.s1);
MediaPlr.start();
}
问题是R.raw.s1
,我想用 替换s1
,FileName
但它不需要字符串。我能做些什么???
感谢所有帮助
如果文件存储在res/raw/
目录中,您可以通过以下代码检索其标识符:
public void PlaySound(String fileName){
int sound_id = context.getResources().getIdentifier(fileName, "raw",
context.getPackageName());
if(sound_id != 0) {
mediaPlr = MediaPlayer.create(context, sound_id);
mediaPlr.start();
}
}
我也更喜欢以小写字母而不是大写字母开头的变量名。这有助于与静态类区分开来。
您还可以创建一个映射来存储 ID 以供进一步重用,而不是每次都检索标识符。
试试这个方法。你可以指定你的字符串文件路径mediaPlayer.setDataSource
if(mMediaPlayer == null)
mMediaPlayer = new MediaPlayer();
mMediaPlayer.reset();
try {
mMediaPlayer.setDataSource(YourAudioFileLocation);
mMediaPlayer.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mMediaPlayer.start();