来自我自己的DB的随机声音

时间:2017-02-21 12:53:01

标签: android sqlite android-sqlite

我用DB浏览器创建一个DB sqlite。 我需要从我的Db开始一个随机音频。 该表是“音频”,有4个字段(Id,audio,col2,col3) 我在R.raw.nameaudio中添加了“音频”字段。

这是随机数:

       rand = new Random();
       int random=rand.nextInt(4)+1;

这是查询:

    public Cursor cont(Integer ID){
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("select audio from audio where ID= "+ID, null);
    return res; }

现在我需要启动MediaPlayer,但它不起作用。

这是代码的其余部分:

       Cursor res = mDBHelper.controllo(random);
                    while (res.moveToNext()) {
                        int audio = res.getInt(0);
                        stopPlaying();
            mp = MediaPlayer.create(getApplicationContext(),audio);
                        mp.start();

                    }

mediaplayer.create的第二个参数存在问题。 我无法传递正确的数据类型。我怎么能解决这个问题?

非常感谢你。

编辑: 我试图在“音频”字段中只放置“nameaudio”。插入后:

                int audio = getResources().getIdentifier(res.getString(0), 
                                                   "raw", "mypackage");
                                                 stopPlaying();

                  mp = MediaPlayer.create(getApplicationContext(),audio);
                        mp.start();

现在我列出了音频,但在点击应用程序崩溃后。

1 个答案:

答案 0 :(得分:0)

获取随机数后

尝试这样的事情:

    int aud1 = R.raw.my_audio_1;
    int aud2 = R.raw.my_audio_2;
    int aud3 = R.raw.my_audio_3;
    int aud4 = R.raw.my_audio_4;

    int audioToPlay = -1;
    switch (random){
        case 1:
            audioToPlay = aud1;
            break;
        case 2:
            audioToPlay = aud1;
            break;
        case 3:
            audioToPlay = aud1;
            break;
        case 4:
            audioToPlay = aud1;
            break;
    }
    // now simply assign this audio to media player

    mp = MediaPlayer.create(getApplicationContext(),audioToPlay);
    mp.start();