2017-02-21 34 views
0

Я создаю sqlite базы данных с браузером БД. Мне нужно запустить рандомизированный звук из моего Db. Таблица «audio» с 4-мя полями (Id, audio, col2, col3) Я положил в поле «audio» значение R.raw.nameaudio.Случайный звук из моего собственного DB

это случайное число:

 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. Я не могу передать правильный тип данных. Как я могу это исправить?

Большое вам спасибо.

EDIT: Я пытаюсь поместить только «nameaudio» в поле «audio». После ввода i:

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

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

Теперь я перечислил звук, но после некоторого щелчка приложения произошел сбой.

+0

Почему не просто выбирая случайную строку? '... ORDER BY RANDOM LIMIT 1' –

+0

try" int audio = res.getInt (1); " потому что вы сказали, что у вас есть 4 поля (Id, audio, col2, col3), поэтому «audio» находится в индексе «1»; –

+0

@Rotwang Вы правы, но проблема остается, и мне нужно устранить строку после начала звука. – Scar

ответ

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(); 
+0

Мне нужно решение с БД, потому что у меня есть 100 или более звук. – Scar