代码之家  ›  专栏  ›  技术社区  ›  Arslan Ahmad

在循环中设置音频文件后,逐个播放它们

  •  1
  • Arslan Ahmad  · 技术社区  · 7 年前

    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();
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Ali    7 年前

    这是因为您正在同时播放所有文件。您应该将音乐完成时应该运行的代码放在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();
    }