Android从变量中获取R.raw

时间:2011-08-24 21:29:18

标签: android

我的应用程序上的原始文件夹中有一些声音。 有时我需要播放声音,但我不知道究竟是哪个。

示例:

String actualSound =“hit”

playSound(mediaPlayer,R.Raw.actualSound));

我当然想玩R.raw.hit,但我不知道该怎么做。

感谢。

3 个答案:

答案 0 :(得分:13)

您可以使用Resources.getIdentifier()获取原始资源的数字ID,然后在播放功能中使用它:

Resources res = context.getResources();
int soundId = res.getIdentifier(actualSound, "raw", context.getPackageName());
playSound(mediaPlayer, soundId);

请注意,通常情况下,您不应该这样做。通过数字标识符(即R - 限定常量)访问资源更有效。如果您每次想要在游戏中播放声音时都要执行上述操作,这一点尤为重要。最好使用声音名称(或更好的:枚举值)到资源标识符甚至预先加载的声音样本的映射。

答案 1 :(得分:1)

快速解答:

public class WebsiteActivity extends AppCompatActivity {

    MediaPlayer mediaPlayer;

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_website);

        Resources res = getResources();
        int sound = res.getIdentifier(music, "raw", getPackageName());

        //Play music
        mediaPlayer = MediaPlayer.create(getApplicationContext(), sound);
        mediaPlayer.start();
    }

    @Override
    protected void onPause() {
        super.onPause();

        mediaPlayer.stop();
        mediaPlayer.reset();
    }
}

答案 2 :(得分:-2)

只需使用String actualSound = getString(R.Raw.actualSound)