Как я могу воспроизводить звуки, хранящиеся в ресурсах или папке необработанных ресурсов, если конкретный файл для воспроизведения зависит от запроса SQLite?

Я нахожу способ воспроизводить звуки в моей папке ресурсов (res или assets, в зависимости от того, какой способ хранения подходит), но файл, который будет загружен в звуковой пул или медиаплеер, зависит от запроса SQLite.

В настоящее время я делаю приложение-переводчик, которое отображает переводы слов или предложений через поисковую систему (просто отмечаю, что это приложение — просто поисковая система, а не переводчик, такой как Google Translate). и мне нужна кнопка «произнести», которая будет воспроизводить, как произносится искомое слово на его диалекте, и этот файл (он был предварительно записан) будет храниться в папке ресурсов. Это похоже на то, что когда пользователь искал слово «яблоко» и нажимал кнопку, он проигрывал «apple.mp3» в папке ресурсов.

Я просто новичок в программировании для Android, и я искал в Интернете и нашел ответы о звуковых пулах и медиаплеере, но я думаю, что раньше не видел ничего подобного.


person Mycheal Bloodworth    schedule 08.03.2014    source источник
comment
см. это может помочь lynda.com/ Учебники по Android/Настройка воспроизведения аудио/79825/   -  person Shabbir Dhangot    schedule 08.03.2014
comment
у меня есть почти 300+ в моей базе данных SQLite, и каждая запись имеет эквивалент xxx.mp3 в папке res. в этом руководстве рассказывается только о том, как управлять звуком через медиаплеер, и это всего лишь один файл. в моем случае у меня есть 5 кнопок, посвященных каждому диалекту, на который переводится искомое слово или предложение.   -  person Mycheal Bloodworth    schedule 08.03.2014
comment
Сохраняйте ссылки на ресурсы в своей базе данных, и когда вы запрашиваете свои данные, вы можете легко получить доступ к своим звуковым файлам.   -  person Mieszko    schedule 08.03.2014
comment
Я согласен с @Mieszko   -  person Shabbir Dhangot    schedule 08.03.2014
comment
просто получите имя файла из вашего процесса, а затем воспроизведите определенный файл   -  person Shabbir Dhangot    schedule 08.03.2014
comment
Вы можете перевести свой ответ в коде @Mieszko? :))   -  person Mycheal Bloodworth    schedule 08.03.2014


Ответы (1)


Согласно моему комментарию:

  1. Создайте еще один столбец в таблице базы данных
  2. Поместите свои ссылки в этот столбец (например, R.raw.my_sound.mp3) (помните, что ссылка всегда int!)
  3. Когда вы запрашиваете значение из этого столбца и используете его следующим образом (я не проверял его. Это больше похоже на псевдокод;)):

    Cursor cursor = database.query(DATABASE_TABLE, 
    new String[] { KEY_REFERENCES }, WORD + " = " + insertedWord, null, null, null, null); 
    if (cursor.moveToFirst()){
       int reference = cursor.getInt(referenceColumnIndex);
       MediaPlayer mp = MediaPlayer.create(YourActivityClass.this, reference);
       if(mp != null) {
          mp.start();
       }
    }
    

Я думаю, это должно сработать.

person Mieszko    schedule 08.03.2014
comment
ха-ха, спасибо @mieszko, я попробую, как только вернусь домой. - person Mycheal Bloodworth; 08.03.2014