Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 科尔多瓦6.2不';不能播放本地文件$cordovaFile.checkFile不';我找不到_Android_Cordova_Monaca_Cordova Media Plugin - Fatal编程技术网

Android 科尔多瓦6.2不';不能播放本地文件$cordovaFile.checkFile不';我找不到

Android 科尔多瓦6.2不';不能播放本地文件$cordovaFile.checkFile不';我找不到,android,cordova,monaca,cordova-media-plugin,Android,Cordova,Monaca,Cordova Media Plugin,我在www文件夹中有一个mp3,我需要播放它。 文件存在,我已经解压了构建,我可以从IDE(Monaca)中看到它。 我正在使用Cordova 6.2和Cordova插件媒体2.3.0,在HTC ONE M7上进行测试 //"use strict"; var app = angular.module('starter.controllers') //http://www.tutorialspoint.com/ionic/ionic_media.htm .controller('PlayerCt

我在www文件夹中有一个mp3,我需要播放它。 文件存在,我已经解压了构建,我可以从IDE(Monaca)中看到它。 我正在使用Cordova 6.2和Cordova插件媒体2.3.0,在HTC ONE M7上进行测试

//"use strict";
var app = angular.module('starter.controllers')
//http://www.tutorialspoint.com/ionic/ionic_media.htm 
.controller('PlayerCtrl',  function($scope, $ionicPlatform, $cordovaMedia,$cordovaFile) {

    $ionicPlatform.ready(function() {    

        var src = "/android_asset/www/test.mp3";

        $scope.media = new Media(src, 
            function() {
                console.log("playAudio Success");
            }, 
            function(error) {
                console.log("playAudio Error: " + error.code);
                console.log(JSON.stringify(error));
            });

        $scope.media.play();

        console.log('play '+ JSON.stringify( $scope.media));
        var mediaTimer = setInterval(function () {

            console.log('play '+ JSON.stringify( $scope.media));
            if($scope.media){
                // get media position
                $scope.media.getCurrentPosition(
                    // success callback
                    function (position) {
                        if (position > -1) {
                            console.log('Position '+(position) + " sec");
                        }
                    },
                    // error callback
                    function (e) {
                        console.log("Error getting pos=" + e);
                    }
                );
            }else{
                console.log('no media');
            }
        }, 5000);


        $cordovaFile.checkFile(cordova.file.applicationDirectory, 'www/test.mp3').then(function(result) {
            console.log('file found' ) ;
            console.log('URL: ' + JSON.stringify(result));
            fileUrl = result.nativeURL;
          }, function(err) {
        console.log('file not found') ;
          });

    }); 

});
当我在手机上运行它时,cordovaFile找不到它,cordovaMedia无法播放它,我会在下面的日志中看到错误,但该文件在APK中

playAudio Error: 1
www/js/PlayerCtrl.js:16 HTC One{"code":1}
www/js/PlayerCtrl.js:50 HTC Onefile not found
www/js/PlayerCtrl.js:24 HTC Oneplay {"id":"1a6fb84c-b28f-f227-1ff2-d2baf5bf0610","src":"/android_asset/www/test.mp3","_duration":-1,"_position":-1}
www/js/PlayerCtrl.js:31 HTC OnePosition -0.001 sec

我没有主意了,有什么建议吗?
非常感谢

我在插件的官方文档中发现了这一点


我在插件的官方文档中发现了这一点


显然,当使用Monaca Ide调试器运行应用程序时,www文件夹是不可访问的,或者至少它不在/android_资产上。
我作为一个普通的apk构建并安装了这个应用程序,它工作正常。

显然,当使用Monaca Ide调试器运行一个应用程序时,www文件夹是不可访问的,或者至少它不在/android\u资产上。
我作为一个普通的apk构建并安装了这个应用程序,它运行正常。

这是我在Android上获取正确路径的功能,甚至可以在iOS上运行。有了它,我就可以播放Cordova媒体插件演示的媒体了

function getPath (){
             var str = location.pathname;
             var i = str.lastIndexOf('/');
             return str.substring(0,i+1);
         }
因此,对于您的示例,它将是:

var src = new Media(getPath() + 'test.mp3');
src.play();

这是我在Android上用来获取正确路径的函数,它甚至可以在iOS上运行。有了它,我就可以播放Cordova媒体插件演示的媒体了

function getPath (){
             var str = location.pathname;
             var i = str.lastIndexOf('/');
             return str.substring(0,i+1);
         }
因此,对于您的示例,它将是:

var src = new Media(getPath() + 'test.mp3');
src.play();

非常确定您的路径应该是/test.mp3。你能很快尝试一下吗?非常确定你的路径应该是/test.mp3。你能很快尝试一下吗?如果你是指Monaca Cloud IDE的预览组件,那么当你依赖Cordova插件时,这些资源当然不可用。这是因为它不是Android设备,因此插件没有加载,因此媒体等功能不可用。不,我指的是安装在Android设备上的Monaca IDE调试器。您可以使用介质,但如果打开assets/www文件夹,您会发现调试器应用程序的www文件夹,而不是您正在运行的应用程序的www文件夹。好的,我发布了一个工作代码的答案,然后解决了您的问题。如果它不起作用,请告诉我,但这是我在应用程序中使用的,我没有遇到任何问题。如果您指的是Monaca Cloud IDE的预览组件,那么当您依赖Cordova插件时,这些资产当然不可用。这是因为它不是Android设备,因此插件没有加载,因此媒体等功能不可用。不,我指的是安装在Android设备上的Monaca IDE调试器。您可以使用介质,但如果打开assets/www文件夹,您会发现调试器应用程序的www文件夹,而不是您正在运行的应用程序的www文件夹。好的,我发布了一个工作代码的答案,然后解决了您的问题。如果它不起作用,请告诉我,但这是我在应用程序中使用的,我没有遇到任何问题。