Javascript 与visualforce和jquery mobile集成时未定义navigator.camera

Javascript 与visualforce和jquery mobile集成时未定义navigator.camera,javascript,android,jquery,cordova,Javascript,Android,Jquery,Cordova,我正在尝试在我的应用程序中使用jquery mobile和cordova访问摄像头。cordova正在完全初始化,但我无法获取navigator.camera属性。navigator.camera始终未定义。我相信我正确地导入了cordova,并给予了许可 我给 <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission

我正在尝试在我的应用程序中使用jquery mobile和cordova访问摄像头。cordova正在完全初始化,但我无法获取navigator.camera属性。navigator.camera始终未定义。我相信我正确地导入了cordova,并给予了许可

我给

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

我的页面是

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0; user-scalable=no" />
 <meta http-equiv="Content-type" content="text/html; charset=utf-8">
 <link rel="stylesheet" href="css/jquery.mobile.min.css" />
 <script src="js/jquery.min.js"></script>
 <script src="js/jquery.mobile.min.js"></script>
 <script src="cordova.js"></script>
 <script src="js/forcetk.mobilesdk.js"></script>

<style>
  .logWindow {display:none; width:700px;}
  .logWindow > p {padding:0px; margin:0px; word-wrap:break-word;}
</style>

<script>
var apiVersion = "v31.0";
var forcetkClient;
var debugMode = true;
var pictureSource;   // picture source
var destinationType; // sets the format of returned value
jQuery(document).ready(function() {
   document.addEventListener("deviceready", onDeviceReady,false);
});

function onDeviceReady() {
    cordova.require("com.salesforce.util.logger").logToConsole("onDeviceReady: Cordova ready");
   cordova.require("com.salesforce.plugin.oauth").getAuthCredentials(salesforceSessionRefreshed, getAuthCredentialsError);
document.addEventListener("salesforceSessionRefresh",salesforceSessionRefreshed,false);
     regLinkClickHandlers();
}
function salesforceSessionRefreshed(creds) {
    cordova.require("com.salesforce.util.logger").logToConsole("salesforceSessionRefreshed");
   var credsData = creds;
    if (creds.data)  // Event sets the `data` object with the auth data.
        credsData = creds.data;

    forcetkClient = new forcetk.Client(credsData.clientId, credsData.loginUrl, null,
        cordova.require("com.salesforce.plugin.oauth").forcetkRefresh);
    forcetkClient.setSessionToken(credsData.accessToken, apiVersion, credsData.instanceUrl);
    forcetkClient.setRefreshToken(credsData.refreshToken);
    forcetkClient.setUserAgentString(credsData.userAgent);
}

function getAuthCredentialsError(error) {
    cordova.require("com.salesforce.util.logger").logToConsole("getAuthCredentialsError: " + error);
}
function takePic() {    
    alert(navigator.camera);
    navigator.camera.getPicture(onPicSuccess, onPicFail, { quality: 50,
    destinationType: Camera.DestinationType.DATA_URL
 }); 
}

function onPicSuccess(imageData) {
    InspectionsController.saveInspectionImage(imageData, inspectionRec, 
        function(res,event){ });
}

function onPicFail(message) {
    console.log("Pic failed: " + JSON.stringify(message));
}
</script>

 <script src="inline.js"></script>       

   </head>
  <body>
     <div data-role="page" data-theme="b" id="jqm-home"> 
       <div  data-role="header"> 
          <h1>Salesforce and Device Contacts</h1> 
      </div> 

      <div id="#content" data-role="content"> 
          <a onClick="takePic();" href="#" data-theme="a" data-iconpos="top" id="picBtn" data-role="button">Take Picture</a>

          <h3>console:</h3>
          <p id="console" class="logWindow">
          </p>
      </div>  
  </div> 
</body>

.logWindow{显示:无;宽度:700px;}
.logWindow>p{填充:0px;边距:0px;换行:断开单词;}
var apiVersion=“v31.0”;
var-forcetkClient;
var-debugMode=true;
var pictureSource;//图像源
var destinationType;//设置返回值的格式
jQuery(文档).ready(函数(){
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
});
函数ondevicerady(){
cordova.require(“com.salesforce.util.logger”).logToConsole(“ondevicerady:cordova ready”);
cordova.require(“com.salesforce.plugin.oauth”).getAuthCredentials(salesforceSessionRefreshed,getAuthCredentialsError);
document.addEventListener(“salesforceSessionRefresh”,salesforceSessionRefresh,false);
regLinkClickHandlers();
}
函数salesforceSessionRefreshed(creds){
cordova.require(“com.salesforce.util.logger”).logToConsole(“salesforceSessionRefreshed”);
var credsData=creds;
if(creds.data)//Event用auth数据设置'data'对象。
credsData=creds.data;
forcetkClient=新的forcetk.Client(credsData.clientId,credsData.loginUrl,null,
require(“com.salesforce.plugin.oauth”).forcetkRefresh);
forcetkClient.setSessionToken(CredData.accessToken,apiVersion,CredData.instanceUrl);
forcetkClient.setRefreshToken(credsData.refreshToken);
forcetkClient.setUserAgentString(credsData.userAgent);
}
函数getAuthCredentialsError(错误){
cordova.require(“com.salesforce.util.logger”).logToConsole(“getAuthCredentialsError:+error”);
}
函数takePic(){
警报(导航器、摄像头);
navigator.camera.getPicture(onPicSuccess,onPicFail,{质量:50,
destinationType:Camera.destinationType.DATA\u URL
}); 
}
函数onPicSuccess(imageData){
InspectionController.saveInspectionImage(imageData,inspectionRec,
函数(res,event){};
}
函数onPicFail(消息){
log(“Pic失败:+JSON.stringify(消息));
}
销售人员和设备联系人
慰问:

我的项目结构是


有人能帮我解决navigator未定义的值。camera

在构建过程中是否有任何错误?已检查并