java - 设置循环播放音频文件后逐个播放

标签 java android sqlite media-player

我大约有 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();
}

关于java - 设置循环播放音频文件后逐个播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46361572/

相关文章:

java - 更改 NavigationDrawerFragment 切换行为作为切换抽屉导航的操作

android - 为什么我的 Recycler View 选择了错误的项目以及被点击的完全选定的项目?

java - 无法实例化以下类 android.support.design.widget.floatingactionbutton

android - Rajawali 旋转相机与 Sensor.TYPE_ROTATION_VECTOR 奇怪的行为

android - json数据只获取最后一个值

iphone - 尝试(&失败)从 iPhone 向 sqlite 中插入数据

通过 CSV 文件的 Java Setters

java - 测试 Pageable 的意义何在?

java - 在 IntelliJ IDEA 中使用模块

android - 在sqlite中创建多个表的问题