如何从SQLite数据库中检索声音?

时间:2019-02-10 08:32:33

标签: android audio android-mediaplayer

我想在单击按钮后检索声音。声音以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

}

0 个答案:

没有答案