我有一个以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