Android 科尔多瓦6.2不';不能播放本地文件$cordovaFile.checkFile不';我找不到
我在www文件夹中有一个mp3,我需要播放它。 文件存在,我已经解压了构建,我可以从IDE(Monaca)中看到它。 我正在使用Cordova 6.2和Cordova插件媒体2.3.0,在HTC ONE M7上进行测试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
//"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文件夹。好的,我发布了一个工作代码的答案,然后解决了您的问题。如果它不起作用,请告诉我,但这是我在应用程序中使用的,我没有遇到任何问题。