【问题标题】:JavaScript Audio object not working in Android API 19JavaScript Audio 对象在 Android API 19 中不起作用
【发布时间】:2016-04-21 16:44:23
【问题描述】:

我使用 ionic/Cordova 框架从 html5 和 JavaScript 创建了一个 Android 应用程序。在那里我创建并播放一个音频对象:

var myAudio = new Audio("myfile.mp3") ;
myAudio.play();

如果我在 Android API 21 上安装生成的 apk,音频播放正常。如果我将它安装在 API 19 上,它就无法播放。

非常感谢您对此的任何帮助。

【问题讨论】:

    标签: javascript android api cordova audio


    【解决方案1】:

    您好,您安装了 cordova 媒体插件吗?

    我过去在 cordova 4.0.0 上做过类似的事情(肯定适用于 android 19(准确地说是 4.4.2)):

            AckSound:function(){
            try{
                var pathMedia;
                if(device.platform ==='iOS'){
                    pathMedia ='';  
                } else {
                    pathMedia = app.getCordovaPath(); 
                }
                var snd =new Media(pathMedia+'mySound.mp3'); 
    
    
                // Update media position every second
                var mediaTimer = null;
    
    
                mediaDuration = snd.getDuration();
                console.log("mediaDuration is " + mediaDuration); 
                snd.play();
    
                if(mediaTimer==null){
                    mediaTimer = setInterval(function () {
                            // get media position
                            snd.getCurrentPosition(
                                // success callback
                                function (position) {
                                    if (position > 0) {
                                        console.log((position) + " sec");
                                    } else {
                                        //if position isn t > 0, the file is over
                                        snd.stop();
                                        clearInterval(mediaTimer);
                                        mediaTimer = null;
                                        snd.release();
                                        delete snd;
    
                                    }
                                },
                                // error callback
                                function (e) {
                                    console.log("Error getting pos=" + e);
                                }
                                );
                    }, 100);
                };
    
    
    
                delete snd;
    
        } catch(err){
            console.log("Error: in AudioManagement.AckSound(), Error is " + err);
        }
        console.log("AudioManagement.AckSound() stops");
    
        }
    
    
    },  
    

    这是一个完整的例子:https://github.com/nyluje/TestMediaPluginCordova

    【讨论】:

    • 您好,请您提供更多信息。什么是 Acksound?
    • 如果您有完整的 html 和 JavaScript 代码可以在这里分享,那就更好了?
    • @TJ1 AckSound 什么都不是(当时是我自己的东西)。您是否安装了 cordova - media - 插件,并使用了 Media([your file].mp3) 对象而不是 Audio([your file].mp3)?
    • @nyluie 是的,我做到了,但仍然没有成功。我想我需要告诉我的应用在某处使用科尔多瓦媒体插件?如果你有一个完整的代码会很有帮助。
    • @TJ1 我已经在 github 上为您提供了一个完整的示例:github.com/nyluje/TestMediaPluginCordova,它适用于 android kitkat 设备(交付前验证)
    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    相关资源
    最近更新 更多