Cordova - 在 Android 上控制多种声音

Cordova - Control several sounds on Android

我设法在 Android (Cordova 4.1) 上播放多种声音,但现在我想动态更改每个视频的音量。

我播放声音的代码如下:

function onDeviceReady() {
  document.querySelector("#play").addEventListener("touchend", playMP3(), false);

  function playMP3() {
        var mp3_1 = getMediaURL("audio/sound1.mp3");
        var mp3_2 = getMediaURL("audio/sound2.mp3");
        media1 = new Media(mp3_1, null, mediaError);
        media2 = new Media(mp3_2, null, mediaError);
        media1.play();
        media2.play();
  }

  function getMediaURL(s) {
      if(device.platform.toLowerCase() === "android") return "/android_asset/www/" + s;
      return s;
   }
  function mediaError(e) {
      alert('Media Error');
      alert(JSON.stringify(e));
  }
}

然后我想在 onDeviceReady 函数之外用 media1.volume = 0.5; 之类的东西来控制音量,但我无法让它工作...

知道我遗漏了什么吗?

最后,使用 Cordova 4.1 和 Android 4.4 播放和控制声音的整个包对我很有效。要设置音量,请使用类似 onclick=setVolume(media1, "0.5") 的函数调用函数 希望对你有帮助!

var media1 = null;
var media2 = null;

//set volume of one sound
function setVolume(media, volume) {
    if (media) {
        media.setVolume(volume);
    }
}

//play the 2 sounds at the same time
function playMP3() {
    var mp3_1 = getMediaURL("audio/media1.mp3");
    var mp3_2 = getMediaURL("audio/media2.mp3");
    media1 = new Media(mp3gauche, null, mediaError);
    media2 = new Media(mp3droite, null, mediaError);
    media1.play();
    media2.play();
}

//for android devices (need the Device Cordova plugin)
function getMediaURL(s) {
    if(device.platform.toLowerCase() === "android") return "/android_asset/www/" + s;
    return s;
}
//help to get log when errors occur
function mediaError(e) {
    alert('Media Error');
    alert(JSON.stringify(e));
}

//launch the 2 sounds when the device is ready
function onDeviceReady() {
    document.querySelector("#playMp3").addEventListener("touchend", playMP3(), false);

}