我有一個以BLOB格式保存音頻數據的表格。我想播放音頻文件,但在從數據庫調用方法時遇到問題。播放列表<byte[]>來自SQLite數據庫的音頻文件
這是我DatabaseAccess.java
public List<byte[]> getAudio(long i) {
List<byte[]> list = new ArrayList<>();
File file;
FileOutputStream fos;
byte[] byteaudio = null;
String selectAudio = "SELECT VocabAudio FROM Vocab WHERE VocabTopic =" + i;
Cursor c = database.rawQuery(selectAudio, null);
if(c.moveToFirst())
do{
byteaudio = c.getBlob(c.getColumnIndex("VocabAudio"));
try{
file = File.createTempFile("audio", "audio");
fos = new FileOutputStream(file);
fos.write(byteaudio);
fos.close();
}catch (IOException e){
e.printStackTrace();
}
}while(c.moveToNext());
return list;
}
這是我的活動課,我想打電話給我getAudio()方法。它說它找不到符號變量文件(來自Uri.fromFile(文件))。
public void startSlides() {
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
Intent intent = getIntent();
long topicId = intent.getLongExtra("SelectedTopicId", 0);
databaseAccess.open();
List<byte[]> audio = databaseAccess.getAudio(topicId);
mp= MediaPlayer.create(Choice.this,Uri.fromFile(file));
i++;
mp.start();
databaseAccess.close();
if (j == vocab.size()+1) {
timer.cancel();
}
}
});
}
}, 0, 1000;
}
任何人都知道如何調用getAudio()方法?謝謝。
**可怕的**練習,用BLOBs膨脹一個數據庫! –
爲什麼?爲什麼'File.createTempFile'並將它寫入BLOB內容,同時可以將它保存在某個文件中,並將路徑保存在數據庫中?同意ModularSynth 100%... – pskink
@ModularSynth對不起。即時通訊新的android。任何建議我應該怎麼做? – chernting