1

我有一个运行音频的功能

public void PlaySound(String FileName){
     MediaPlr = MediaPlayer.create(Context, R.raw.s1);
     MediaPlr.start();
}

问题是R.raw.s1,我想用 替换s1FileName但它不需要字符串。我能做些什么???

感谢所有帮助

4

2 回答 2

1

如果文件存储在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 以供进一步重用,而不是每次都检索标识符。

于 2013-05-14T11:26:47.463 回答
0

试试这个方法。你可以指定你的字符串文件路径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();
于 2013-05-14T11:29:18.470 回答