我正在使用PhoneGap / Cordova构建一个应用程序,即在后台播放mp3文件。我添加了Cordova Media插件,但是当我在浏览器中测试时,我发现“Media”未定义,好像它找不到插件一样。
$(document).ready(function() {
var bgMedia = new Media( getPhoneGapPath('timer') );
bgMedia.play();
function getPhoneGapPath(audiofile) {
var path = window.location.pathname;
path = path.substr( path, path.length - 23 );
path = path + 'audio/'+audiofile+'.mp3';
return 'file://' + path;
}
});
我已确认该文件的路径正确。我的问题是双重的,我如何正确配置媒体插件实际上更糟糕(我错过了另一个步骤)以及调用和播放文件的正确方法是什么?
使用当前版本的Cordova。
答案 0 :(得分:3)
经过一番挖掘,我能够完成以下工作:
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
playAudio();
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
function getCordovaPath() {
var path = window.location.pathname;
if (device.platform == "Android") {
path = "/android_asset/www/";
}
// path = cordova.file.applicationDirectory + 'www/'
// path = path.substr( path, path.length - 23 );
//path = path + 'audio/'+audiofile+'.mp3';
return 'file://' + path;
}
// Play audio
//
function playAudio() {
// Create Media object from src
//my_media = new Media(src, onSuccess, onError);
my_media = new Media(getCordovaPath() + 'audio/timer.mp3',
// success callback
function () { console.log("playAudio():Audio Success"); },
// error callback
function (err) { console.log("playAudio():Audio Error: " + err); });
// Play audio
my_media.play();
}
// Pause audio
//
function pauseAudio() {
if (my_media) {
my_media.pause();
}
}
// Stop audio
//
function stopAudio() {
if (my_media) {
my_media.stop();
}
}
// onSuccess Callback
//
function onSuccess() {
console.log("playAudio():Audio Success");
}
// onError Callback
//
function onError(error) {
alert('code: ' + error.code + '\n' +
'message: ' + error.message + '\n');
}
// Set audio position
//
function setAudioPosition(position) {
document.getElementById('audio_position').innerHTML = position;
}

答案 1 :(得分:0)
Cordova插件仅适用于设备或模拟器。 如果您在浏览器中运行项目,则需要模拟它们以防止应用程序崩溃。
当我在浏览器中运行项目时,我从index.html取消注释该行:
<script src="js/mocks/plugin.media.js"></script>
plugin.media.js:
window.Media = {
get: function(){},
play: function(){},
stop: function(){},
seekTo: function(){},
pause: function(){},
getDuration: function(){},
getCurrentPosition: function(){},
startRecord: function(){},
stopRecord: function(){},
release: function(){},
setVolume: function(){},
onStatus: function(){}
};