随机资源选择
Random resource selection
我想在用户按下按钮时 select 某些音频文件,但我似乎找不到如何更改 R.raw。这样它就会在这里发生变化。
我知道应该有比创建 1000 if else 更简单的解决方案
R.raw.0, R.raw.1 ,...
所以在我的示例中,我有 selected 文件 "c.mp3"
但这必须最终更改为 000 到 499。
所以随机(或 selective)说 050 => 这应该变成 R.raw.050
}
@Override
public void play() {
final MediaPlayer mp = MediaPlayer.create(context, R.raw.c);
mp.start();
}
您可以尝试使用:
context.getResources().getIdentifier("050", "raw", this.getPackageName());
并使用随机对象实例随机化名称(“050”)。
假设您有这样的随机数:
String rand = "050";
您只需要找到原始资源 ID 并将其传递给您的 MediaPlayer.create 方法就很容易了:
int rawResourceId = context.getResources().getIdentifier(rand, "raw", this.getPackageName());
final MediaPlayer mp = MediaPlayer.create(context, rawResourceId);
mp.start();
建议:
- 最好在资源文件前加上 f_000 , f_001, ...., f_050.
这样的字母前缀来重命名它们
我想在用户按下按钮时 select 某些音频文件,但我似乎找不到如何更改 R.raw。这样它就会在这里发生变化。
我知道应该有比创建 1000 if else 更简单的解决方案 R.raw.0, R.raw.1 ,...
所以在我的示例中,我有 selected 文件 "c.mp3" 但这必须最终更改为 000 到 499。 所以随机(或 selective)说 050 => 这应该变成 R.raw.050
}
@Override
public void play() {
final MediaPlayer mp = MediaPlayer.create(context, R.raw.c);
mp.start();
}
您可以尝试使用:
context.getResources().getIdentifier("050", "raw", this.getPackageName());
并使用随机对象实例随机化名称(“050”)。
假设您有这样的随机数:
String rand = "050";
您只需要找到原始资源 ID 并将其传递给您的 MediaPlayer.create 方法就很容易了:
int rawResourceId = context.getResources().getIdentifier(rand, "raw", this.getPackageName());
final MediaPlayer mp = MediaPlayer.create(context, rawResourceId);
mp.start();
建议:
- 最好在资源文件前加上 f_000 , f_001, ...., f_050. 这样的字母前缀来重命名它们