Cordova 浏览器平台摄像头不工作
Cordorva browser platform camera not working
我有一个启用了平台浏览器的 Cordova 应用程序。我想在 Chrome 中使用相机,但调用相机根本没有任何反馈。它在我的 Android 设备上就像一个魅力。
我通过这个命令启动:
cordova run browser
Chrome 按预期打开,并显示一个完美的控制台日志,告诉我 Cordova 为相机设置了代理:
The key "target-densitydpi" is not supported.
cordova.js:851 adding proxy for Camera
index.js:47 Received Event: deviceready
我正在使用 https://github.com/apache/cordova-plugin-camera/blob/master/doc/index.md 中的示例。
当我在以下示例中单击我的 link 时,除了日志行 "capture" 之外没有任何反应。没有错误,什么都没有。它甚至不要求我允许访问我的相机。我确实在 HTML5 页面上测试了我的相机,Chrome 可以正常访问它。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="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>
<div class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<p class="event listening">Connecting to Device</p>
<p class="event received">Device is Ready</p>
</div>
<img id="myImage"/>
<a href="javascript: capture()">Camera example</a>
</div>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script>
function capture()
{
console.log("capture")
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.DATA_URL
});
}
function onSuccess(imageData) {
var image = document.getElementById('myImage');
image.src = "data:image/jpeg;base64," + imageData;
}
function onFail(message) {
alert('Failed because: ' + message);
}
</script>
</body>
</html>
index.js文件是Cordova生成的文件。
cordova -version
=> 4.0.0
cordova plugins
=> org.apache.cordova.camera 0.3.4 "Camera"
如果有人能指导我解决这个问题,我将非常感激。
提前致谢。
/马丁
这是本地文件网站 Chrome 的限制,您无法访问 camera/mic。解决方案是使用本地 http 服务器,然后使用来自 localhost:// 的 运行 而不是 file://
无论如何,你最好的解决办法是开始 chrome 标志:
--allow-access-from-files
或者您可以尝试 mozilla,它的工作原理:)
此致!
我有一个启用了平台浏览器的 Cordova 应用程序。我想在 Chrome 中使用相机,但调用相机根本没有任何反馈。它在我的 Android 设备上就像一个魅力。
我通过这个命令启动:
cordova run browser
Chrome 按预期打开,并显示一个完美的控制台日志,告诉我 Cordova 为相机设置了代理:
The key "target-densitydpi" is not supported.
cordova.js:851 adding proxy for Camera
index.js:47 Received Event: deviceready
我正在使用 https://github.com/apache/cordova-plugin-camera/blob/master/doc/index.md 中的示例。
当我在以下示例中单击我的 link 时,除了日志行 "capture" 之外没有任何反应。没有错误,什么都没有。它甚至不要求我允许访问我的相机。我确实在 HTML5 页面上测试了我的相机,Chrome 可以正常访问它。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="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>
<div class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<p class="event listening">Connecting to Device</p>
<p class="event received">Device is Ready</p>
</div>
<img id="myImage"/>
<a href="javascript: capture()">Camera example</a>
</div>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script>
function capture()
{
console.log("capture")
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.DATA_URL
});
}
function onSuccess(imageData) {
var image = document.getElementById('myImage');
image.src = "data:image/jpeg;base64," + imageData;
}
function onFail(message) {
alert('Failed because: ' + message);
}
</script>
</body>
</html>
index.js文件是Cordova生成的文件。
cordova -version
=> 4.0.0
cordova plugins
=> org.apache.cordova.camera 0.3.4 "Camera"
如果有人能指导我解决这个问题,我将非常感激。
提前致谢。
/马丁
这是本地文件网站 Chrome 的限制,您无法访问 camera/mic。解决方案是使用本地 http 服务器,然后使用来自 localhost:// 的 运行 而不是 file://
无论如何,你最好的解决办法是开始 chrome 标志: --allow-access-from-files
或者您可以尝试 mozilla,它的工作原理:)
此致!