Android get R.raw from variable

后端 未结 2 1887
执笔经年
执笔经年 2020-12-07 02:35

i have some sounds in a raw folder on my app. And sometimes i need to play a sound, but i don\'t know exactly which is.

Example :

String actualSound         


        
相关标签:
2条回答
  • 2020-12-07 03:01

    You can obtain the numeric ID of your raw resource using Resources.getIdentifier() and then use it in your play function:

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

    Note that generally, you shouldn't do this. It is more efficient to access resources by numeric identifier (i.e. R-qualified constant). This would especially matter if you were to do the above every time you want to play sound in a game. It is better to use a mapping of sound names (or better yet: enum values) to resource identifiers or even pre-loaded sound samples.

    0 讨论(0)
  • 2020-12-07 03:19

    Quick answer:

    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();
        }
    }
    
    0 讨论(0)
提交回复
热议问题