我想在单击按钮后检索声音。声音以BLOB形式从sqlite数据库中检索。我已经在下面包含了源代码。任何人都可以帮助纠正我的编码。
我已经尝试使用文件检索声音,但是遇到一个错误,即java.util.ArrayList无法转换为java.io.File。
/*databaseAccess.java*/
public List<byte[]> getAudio(long i)
{
List<byte[]> list = new ArrayList<>();
byte[] byteaudio = null;
String selectAudio = "SELECT audio FROM IMAGE WHERE id =" + i;
Cursor c = database.rawQuery(selectAudio, null);
if(c.moveToFirst())
do{
byteaudio = c.getBlob(c.getColumnIndex("audio"));
list.add(byteaudio);
}while(c.moveToNext());
return list;
}
/*MainActivity.java*/
public void playSong(int songIndex) {
// Define final variables since they have to be accessed from inner class
final DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this);
// Open the database
databaseAccess.open();
// Close the database
databaseAccess.close();
Intent intent = getIntent();
long topicId = intent.getLongExtra("SelectedTopicId", 0);
databaseAccess.open();
List<byte[]> audio = databaseAccess.getAudio(songIndex);
databaseAccess.close();
mp.reset();
mp = MediaPlayer.create(MainActivity.this, Uri.fromFile((File) audio));// create's
mp.start(); // starting mediaplayer
}