cordova:media.getDuration返回-1 [英] cordova: media.getDuration returns -1
本文介绍了cordova:media.getDuration返回-1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用Media.getDuration()函数获取音频文件的持续时间,但我总是获得-1作为响应。
使用build.phonegap.com
但是每当我使用cli构建时,那么getDuration不起作用。
是重现此问题的简单步骤:
CLI:
cordova start my_project
cordova plugin add cordova-plugin-media
cordova platform add android
cordova build android
www / index.html
<!DOCTYPE HTML PUBLIC - // W3C // DTD HTML 4.01 // EN
http://www.w3.org/TR/html4/strict.dtd\">
< html>
< head>
< title>媒体示例< / title>
< script type =text / javascriptcharset =utf-8src =cordova.js>< / script&
< script type =text / javascriptcharset =utf-8>
//等待设备API库加载
//
document.addEventListener(deviceready,onDeviceReady,false);
function deviceready()
{
var my_media = new Media('http://web.com/mp3');
my_media.play();
console.log(my_media.getDuration()); //这将产生-1
}
< / script>
< / head>
< body>
< / body>
< / html>
解决方案
var ruta =/ android_asset / www / sounds / M.mp3;
$ scope.audiofile = new Media(ruta);
$ scope.audiofile.play();
var timerDur = setInterval(function(){
$ scope.dur = $ scope.audiofile.getDuration();
if($ scope.dur> 0){
clearInterval(timerDur);
console.log($ scope.dur +sec);
}
},1);
cordova插件删除 cordova-plugin-media
$ b
然后我使用以下命令安装最新版本的同一插件:
cordova插件add cordova -plugin-media@2.3.0
I am using Media.getDuration() function to get duration of an audio file but I am always getting -1 as response.
This works fine if I build using build.phonegap.com
But whenever I build using cli I then getDuration does not work.
Following are simple steps to reproduce this issue:
CLI:
cordova start my_project
cordova plugin add cordova-plugin-media
cordova platform add android
cordova build android
www/index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Media Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
function deviceready()
{
var my_media = new Media('http://web.com/mp3');
my_media.play();
console.log(my_media.getDuration()); // this will produce -1
}
</script>
</head>
<body>
</body>
</html>
解决方案
var ruta="/android_asset/www/sounds/M.mp3";
$scope.audiofile = new Media(ruta);
$scope.audiofile.play();
var timerDur = setInterval(function () {
$scope.dur = $scope.audiofile.getDuration();
if ($scope.dur > 0) {
clearInterval(timerDur);
console.log($scope.dur + " sec");
}
}, 1);
cordova plugin remove cordova-plugin-media
Then I installed latest version of same plugin by using following command:
cordova plugin add cordova-plugin-media@2.3.0
这篇关于cordova:media.getDuration返回-1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文