cordova-plugin-media回调方法

我正在使用cordova-media-plugin 1.0.1.在一个离子移动应用程序中.我正在使用该插件播放音频文件.

我可以使用它来玩它:

var media = $cordovaMedia.newMedia(fileToPlay,// success callback
          mediaSuccess,// error callback
          mediaFailure,// status callback
          mediaStatus
        );

然后我可以调用media.play()来播放文件.

但是,回调似乎永远不会执行.我将它们定义为:

function mediaSuccess () {
      console.log("Successfully finished task.");
    }
      
    function mediaFailure (err) {
      console.log("An error occurred: " + err.code);
    }

    function mediaStatus (status) {
      console.log("A status change occurred: " + status.code);
    }

但它们永远不会被称为.但是,它是我的控制台,我看到从播放器本身开始记录,因为它开始和停止播放:

Will attempt to use file resource '//var/mobile/Containers/Data/Application/931BFA01-CDA4-43CD-BC16-7FB6A64305DC/Library/NoCloud/DateTime-1446772191539audio_007.wav'

Playing audio sample '//var/mobile/Containers/Data/Application/931BFA01-CDA4-43CD-BC16-7FB6A64305DC/Library/NoCloud/DateTime-1446772191539audio_007.wav'

Stopped playing audio sample '//var/mobile/Containers/Data/Application/931BFA01-CDA4-43CD-BC16-7FB6A64305DC/Library/NoCloud/DateTime-1446772191539audio_007.wav'

这些日志记录事件将发送到控制台,但它们不在我的代码中,因此它们必须来自媒体对象.

我需要获得状态更改和/或成功回调,因为我需要更新模型以启用播放,但是当剪辑完成播放时再次启用播放.

有什么想法吗?

解决方法

在深入研究之后,我发现(尽管有文档)在cordova-media-plugin版本1.0.1中没有为iOS实现回调.它们仅适用于Android,FireOS和Windows.

在模块的www目录中的Media.js文件的底部,它创建了一个cordova频道,允许它订阅来自本地播放器的消息.不幸的是,该代码仅针对android,fireos和windows phone执行:

if (cordova.platformId === 'android' || cordova.platformId === 'amazon-fireos' || cordova.platformId === 'windowsphone') {

    var channel = require('cordova/channel');

    channel.createSticky('onMediaPluginReady');
    channel.waitForInitialization('onMediaPluginReady');

    channel.onCordovaReady.subscribe(function() {
        exec(onMessageFromNative,undefined,'Media','messageChannel',[]);
        channel.initializationComplete('onMediaPluginReady');
    });
}

我尝试将ios添加到列表中以查看它是否只是该代码中的错过并且它爆炸了:

错误:方法’messageChannel:’未在插件’媒体’中定义

所以…我们这些为iOS或其他非Android / Windows平台构建的人在回调时都是SOL(尽管播放仍然有效).似乎没有办法向Apache提交有关此问题的错误报告,除非它是来自apache.org电子邮件地址的电子邮件,所以我不确定他们是否知道它.

相关文章

公司前端界面用的是vue,我要嵌入到Android中生成App第一步:...
Q:我用cordova开发项目,想在app内跳转外部链接,安装了cord...
我正在使用https://github.com/arnesson/cordova-plugin-fir...
一、Cordova的基础点在混合式应用中,我们通过现有的Cordova...
cordova自定义插件注意:存放自定义cordova插件目录不能有空...
一、问题VueAPP中有一个文件下载功能,用了各种方法来实现下...