[英]Playing audio files one by one after setting them in a loop
我大約有6236個音頻文件。 我正在做的是從數據庫中獲取int
值並將其設置為循環。 例如,查詢后我在“ a”中得到1,在“ b”中得到7。 現在,我嘗試像for(int i=a;i<=b;i++)
這樣在循環中使用它們,並將其傳遞到我的路徑中以一一播放音頻,但一次播放7個音頻。 我正在循環中從數據庫動態設置值。我想要做的是只是一個接一個地播放它們,但我被卡住了。 這是我的代碼:
DatabaseAccess db=DatabaseAccess.getInstance(getApplicationContext());
db.open();
mycursor= db.getblindfirst(newid);
scursor= db.getblindlast(newid);
scursor.moveToFirst();
mycursor.moveToFirst();
a= mycursor.getInt(0);
b=scursor.getInt(0);
for (int i=a;i<=b;i++){
try {
mPlayer.setDataSource("/mnt/sdcard/audio/aya(" + i + ").mp3");
mPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mPlayer.start();
}
db.close();
}
那是因為您要一次播放所有文件。 您應該將在音樂播放完成后應該運行的代碼放在OnCompletionListener中。
DatabaseAccess db=DatabaseAccess.getInstance(getApplicationContext());
db.open();
mycursor= db.getblindfirst(newid);
scursor= db.getblindlast(newid);
scursor.moveToFirst();
mycursor.moveToFirst();
a= mycursor.getInt(0);
b=scursor.getInt(0);
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource("/mnt/sdcard/audio/aya(" + a + ").mp3");
mPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mPlayer.start();
a++;
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
if (a!=b) {
if(mPlayer != null) {
if(mPlayer.isPlaying()) {
mPlayer.stop();
}
mPlayer.reset();
}
try {
mPlayer.setDataSource("/mnt/sdcard/audio/aya(" + a + ").mp3");
mPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mPlayer.start();
a++;
}
}
});
db.close();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.