使用String源创建媒体播放器

时间:2013-12-09 20:34:20

标签: android

我的代码如下:

cry = MediaPlayer.create(this, R.raw.bulbasaur);

我想要的是这个:

cry = MediaPlayer.create(this, ("R.raw."+pokemon);

这样,当他的活动传递给特定的小宠物时,它会加载适当的声音文件。 口袋妖怪是特定小宠物声音文件的名称。 我尝试过使用Uri,但我不确定我是否正确使用它。

我的OnCreate方法如下所示。 谢谢你的时间.~

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Removes the title
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    //Sets the screen size to full-screen
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.poke_layout);

    Bundle getId = getIntent().getExtras();
    //get the position integer from MenuActivity
    int position = getId.getInt("id");


    //Calls the function that initialises all UI items.
    initVars();
    //Set up variable from JSON field.
    getPokes(position);

    /**Defines the cry file**/
    cry = MediaPlayer.create(this, R.raw.bulbasaur);

    pPic.setImageResource(getImage(this, local));

    cry.start();
}

编辑: 这样很清楚:我正在从一个JSON文件中将一个pokemons文件名加载到变量'local'中。我的目标是使用此变量然后加载适当的文件

1 个答案:

答案 0 :(得分:1)

你可以这样做:

static Map<String, Integer> idReferences = new HashMap<String,Integer>();
static {
   idReferences.put("Bulbasaur", R.raw.bulbasaur);
}

MediaPlayer.create(this, idReferences.get("Bulbasaur"));

R文件中的引用是自动生成的,因此您不希望直接引用它们。最好保留它们的列表或地图并间接引用它们。像上面一样。

如果您想要一个“位置”引用而不是名称,只需使用Integer代替String作为地图的关键字。

参考文献:

Accessing Android Resources

What is a Java Map