【发布时间】:2014-03-12 14:56:04
【问题描述】:
因此,我使用最新版本的 Cordova 从头开始创建了一个应用程序,并按照 Cordova API 文档中的说明进行操作。我正在尝试让一个非常基本的 mp3 播放器在 Android 上运行,所以我已经安装了 Android 平台并通过 CLI 安装了媒体和设备插件。我还使用了 API 文档中媒体播放器的完整示例。我目前的代码如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<title>Hello World</title>
</head>
<body>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript">
app.initialize();
</script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
playAudio("https://ia600808.us.archive.org/21/items/NasaAudioHighlightReels/Launch-Sound_STS-1-Launch.mp3");
}
// Audio player
//
var my_media = null;
var mediaTimer = null;
// Play audio
//
function playAudio(src) {
// Create Media object from src
my_media = new Media(src, onSuccess, onError);
// Play audio
my_media.play();
// Update my_media position every second
if (mediaTimer == null) {
mediaTimer = setInterval(function() {
// get my_media position
my_media.getCurrentPosition(
// success callback
function(position) {
if (position > -1) {
setAudioPosition((position) + " sec");
}
},
// error callback
function(e) {
console.log("Error getting pos=" + e);
setAudioPosition("Error: " + e);
}
);
}, 1000);
}
}
// Pause audio
//
function pauseAudio() {
if (my_media) {
my_media.pause();
}
}
// Stop audio
//
function stopAudio() {
if (my_media) {
my_media.stop();
}
clearInterval(mediaTimer);
mediaTimer = null;
}
// 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;
}
</script>
</head>
<body>
<a href="#" class="btn large" onclick="playAudio('https://ia600808.us.archive.org/21/items/NasaAudioHighlightReels/Launch-Sound_STS-1-Launch.mp3');">Play Audio</a>
<a href="#" class="btn large" onclick="pauseAudio();">Pause Playing Audio</a>
<a href="#" class="btn large" onclick="stopAudio();">Stop Playing Audio</a>
<p id="audio_position"></p>
</body>
</html>
我已经在 CLI 中构建了应用程序,然后使用 Chrome 开发人员运行它,但出现 2 个错误,1) 找不到 cordova.js 文件和 2) Uncaught ReferenceError: Media is not defined。
我知道添加 Android 平台时,cordova 文件位于 platform_www 文件夹中,但如何链接到该文件夹?我尝试将 cordova.js 处理到主 www 文件夹,但每次我确实收到此链接中描述的消息 Dreamweaver CC and cordova.js
这太疯狂了,所以如果有人能对这个问题有所了解,将不胜感激!
【问题讨论】:
-
您无法使用 Chrome 开发人员测试应用程序 - 您必须在模拟器或设备上运行它。这就是为什么您会收到
cordova.js file not found的原因,这反过来又会产生另一个关于缺少媒体插件的问题。您应该在设备或模拟器上运行应用程序 - 对于 Android 4.4,您可以使用 Chrome:Inspect 通过设备的 WebView 访问一些 Chrome 开发人员工具。 -
同样,不相关,但只是想确保您记得将您的 mp3 文件的 URL 添加到白名单中。
-
对不起,我忘了说我已经使用 PhoneGap Build 构建并安装了应用程序到我的手机上,但 mp3 播放器仍然无法工作