【问题标题】:Cordova Cannot Play file on Windows 10Cordova 无法在 Windows 10 上播放文件
【发布时间】:2016-05-16 14:17:30
【问题描述】:

我正在使用最新版本的 Cordova + VS2015。

当我尝试在 windows10 应用程序中播放作为应用程序一部分包含的 mp3 文件时,出现错误(代码:1)

该游戏在 iOS 和 Android 下运行正常,似乎只有 windows 10 存在问题。

我尝试了路径“/myfile.mp3”、“myfile.mp3”、“/www/myfile.mp3”、“www/myfile.mp3”的多种变体,结果都相同。我尝试了一个不存在的文件名并得到相同的错误。这使我相信路径不正确。如果我打印 window.location.pathname,我会得到“/www/index.html”,所以,我怀疑“/www/myfile.mp3”应该可以工作。

该文件已添加到项目中,它显示在平台文件夹的 www 目录中。

这是代码,基本上是从手册中截取的

    console.log(window.location.pathname);
    var myMedia = new Media('/www/myfile.mp3', function () {
            console.log('success');
    }, function (e) {
            console.log(e); // I always land here, where is is 'code: 1'
    }, function (e) {
            console.log(e);
    });
    myMedia.play();

【问题讨论】:

    标签: cordova cordova-plugins visual-studio-cordova windows-10-universal


    【解决方案1】:

    使用“ms-appx:”方案将解决问题。请参阅document 的应用程序包部分:

    要访问存储在应用程序包中的文件,但要从没有推断 root 权限的代码中访问,请指定 ms-appx: 方案。

    在你的情况下,路径应该修改为“ms-appx:///www/myfile.mp3”,如果当前平台是windows(这里需要安装cordova-plugin-device作为pre-work):

    var url = "";
    if (device)
    {
        if (device.platform.toLowerCase() == "windows") {
            url = "ms-appx:///www/myfile.mp3";
        } else {
            url = "/myfile.mp3";
        }
    }
    var myMedia = new Media(url, function () {
        console.log('success');
    }, function (e) {
        console.log(e); // I always land here, where is is 'code: 1'
    }, function (e) {
        console.log(e);
    });
    myMedia.play();
    

    【讨论】:

    • 文档的那部分让我感到困惑。我试过你的建议,没有用。奇怪的是,当我调用 play() 时,没有一个处理程序会触发。但是,如果我再次调用 play ,状态处理程序会以状态 1 被触发。看来现在播放挂起?我在文件路径上尝试了一些变体......它们都没有奏效。
    • @JeffG 好吧,这很奇怪。它在我身边工作。您能否分享一个可以重现您的问题的基本演示项目?
    • 当然,我怎样才能得到你的拉链? (对不起这个愚蠢的问题)。还有一件事,这个字符串有效“var myMedia = new Media('ms-appx-web://io.cordova.myappda2acc/www/myfile.mp3', function () {”
    • @JeffG 您可以将演示上传到 Github 或 Onedrive 或其他一些在线存储库,并将链接分享到您的个人存储库。
    • 为了结束这个循环(最后),我发现我必须制定 uri 以包含在我的 config.xml 中指定的“WindowsStoreIdentityName”。所以,如果我在 config.xml 中有“”,我需要使用:var myMedia = new Media("ms-appx-web://mycompany.myapp/www/mySound.mp3"); myMedia.play();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多