你没有给我添加任何东西
list
file
在另一种方法中,您将无法从您的活动中看到该引用。
不要(在getAutdio中)写入文件,而是将字节添加到列表并返回。
现在,您可以从列表中播放音频或写入文件,然后播放音频。
您的代码可能如下所示:
public List<byte[]> getAudio(long i) {
List<byte[]> list = new ArrayList<>();
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"));
list.add(byteaudio);
}while(c.moveToNext());
return list;
}
byte[]
在文件中创建
MediaPlayer
this answer
MediaPlayer
public void run() {
Intent intent = getIntent();
long topicId = intent.getLongExtra("SelectedTopicId", 0);
databaseAccess.open();
List<byte[]> audio = databaseAccess.getAudio(topicId);
databaseAccess.close();
for(byte[] track : audio){
playMp3(track);
}//for loop
if (j == vocab.size()+1) {
timer.cancel();
}
}
:由于您主要使用文件(播放媒体),并且根据上述评论的建议,您可以存储文件名和路径(作为字符串),而不是存储音频文件的字节
然后,您可以立即从数据库中检索文件名并启动媒体播放器
编辑:
要逐个播放文件,您可能需要
List<byte[]> audio
playMp3(audio.get(index));
index
是一个整数,每次播放文件时都会增加(但请小心不要检查
类别范围:
private List<byte[]> audio;
private int index =0;
@Override
public void onClick(View view){
if(index >= audio.size()){
index = 0; // back to first track ?
}
playMp3(audio.get(index));
++index;
}