Javascript PhoneGap(JS)-多个音频流

Javascript PhoneGap(JS)-多个音频流,javascript,cordova,audio,mp3,Javascript,Cordova,Audio,Mp3,我一直在使用PhoneGap文档()中的以下代码来播放音频文件: // Audio player // var my_media = null; var mediaTimer = null; // Play audio // function playAudio(src) { if (my_media == null) { // Create Media object from src

我一直在使用PhoneGap文档()中的以下代码来播放音频文件:

    // Audio player
    //
    var my_media = null;
    var mediaTimer = null;

    // Play audio
    //
    function playAudio(src) {
        if (my_media == null) {
            // Create Media object from src
            my_media = new Media(src, onSuccess, onError);
        } // else play current audio
        // Play audio
        my_media.play();

    // Stop audio
    // 
    function stopAudio() {
        if (my_media) {
            my_media.stop();
        }
        clearInterval(mediaTimer);
        mediaTimer = null;
    }
因此,我可以通过onclick事件播放音频:

播放音频(“”)

停下来:

停止音频()

这很好,但我想播放多个流,并通过一个参数“name”来控制它们

所以我改变了我的代码:

    // Audio player
    //
    var my_media = null;
    var mediaTimer = null;

    // Play audio
    //
    function playAudio(name,src) {
        if (my_media == null) {
            // Create Media object from src
            my_media = new Media(name, src, onSuccess, onError);
        } // else play current audio
        // Play audio
        my_media.play(name);

    // Stop audio
    // 
    function stopAudio(name) {
        if (my_media) {
            my_media.stop(name);
        }
        clearInterval(mediaTimer);
        mediaTimer = null;
    }
//播放和停止文件1: 播放音频('file1','')

stopAudio(“文件1”)

//播放和停止文件2:

播放音频('file2','')

stopAudio(“文件2”)


我唯一收到的是应用程序崩溃,有人有在PhoneGap上播放多个媒体文件的经验吗


谢谢

基于Cordova 2.3文档:

媒体对象构造函数希望第一个参数为“src”,但您正在使用它设置媒体名称。播放机将您的名称视为媒体源,并尝试使用“file1”作为媒体文件的路径

其他: phonegap Media play()和stop()方法不需要参数,因此在这些方法调用中提供的名称将被忽略

您可以尝试创建媒体播放器的二维数组,其中每行中的第一个元素是名称,第二个元素是媒体对象。在playAudio和stopAudio函数中,按名称扫描数组,并在正确的对象上调用play()和stop()方法

在复制和粘贴下面的代码之前,请记住我根本不确定在phonegap中是否可以播放多个音频文件。我知道mobile safari音频元素不支持:

var my_medias=new Array();
...
播放音频(名称、arc){
var createnew=true;

对于(var i=0;i我是phonegap的新手,我也想像你一样播放多个媒体文件。 这是我的解决方案,它对我有效

var mediaObjects;
var currentSound;

// where list is an array of sound name like this ['foo.mp3', 'bar.mp3']
function playSound(list){
    mediaObjects = [];
    currentSound = 0;
    for(var i = 0; i< list.length; i++){
        var mediaObject = new Media('/android_asset/www/sounds/' + list[i], onSuccess, onError);
        mediaObjects.push(mediaObject);
    }
    mediaObjects[0].play();
}
var媒体对象;
无功电流声;
//其中list是一个类似于['foo.mp3','bar.mp3']的声音名称数组
播放声音功能(列表){
mediaObjects=[];
currentSound=0;
对于(变量i=0;i
播放第一个媒体对象后。将调用回调函数“onSuccess”,这是函数的代码

function onSuccess() {
    currentSound++;
    if(mediaObjects.length <= currentSound){
        return;
    }
    mediaObjects[currentSound].play();
}
函数onSuccess(){
currentSound++;
如果(mediaObjects.length您可以添加

window.location.reload();
stopAudio()
中,可以播放多个音频

function stopAudio() {
    if (my_media) {
        my_media.stop();
        window.location.reload();
    }
    clearInterval(mediaTimer);
    mediaTimer = null;
}
function stopAudio() {
    if (my_media) {
        my_media.stop();
        window.location.reload();
    }
    clearInterval(mediaTimer);
    mediaTimer = null;
}