2015-12-31 116 views
1

我們已經嘗試使用phonegap從android設備打開相機,但無法做到這一點。你能幫我們解決這個問題嗎?科爾多瓦相機不能正常工作

下面是編寫的代碼。

<div> 
     <input class="camerabutton" id="btnCamera" value="open camera" type="button" height="100" width="100" /> 
     </div> 
      <script type="text/javascript" src="js/cordova.js"></script> 
     <script type="text/javascript" src="js/cordova_plugins.js"></script> 
     <script type="text/javascript" src="js/framework7.js"></script> 

     <script type="text/javascript"> 
     var myApp = new Framework7(); 

// Export selectors engine 
var $$ = Dom7; 

$$('.camerabutton').on('click', function() { 

     navigator.camera.getPicture(onSuccess, onFail, { 
       quality: 50 
      }); 


     function onSuccess(imageData) { 
      alert("test"); 
     } 

     function onFail(message) { 
      alert('Failed because: ' + message); 
     } 
}); 
    </script> 

Config.xml文件(假設所有的權限)

<feature name="http://api.phonegap.com/1.0/device" /> 
<feature name="http://api.phonegap.com/1.0/camera"/> 
<feature name="http://api.phonegap.com/1.0/file"/> 
<feature name="http://api.phonegap.com/1.0/media"/> 
<feature name="http://api.phonegap.com/1.0/network"/> 

AndroidManifest.xml文件

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

讓我們知道,如果中提到的代碼的任何問題或以上的需要補充的東西。

回答

1

呵呵,在做一些研究後,我們可以解決這個問題。這是config.xml中的問題,所以我用下面提到的代碼替換了它。

<?xml version='1.0' encoding='utf-8'?> 
<widget id="com.example.test" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <name>test</name> 
    <description> 
     A sample Apache Cordova application that responds to the deviceready event. 
    </description> 
    <author email="[email protected]" href="http://cordova.io"> 
     Apache Cordova Team 
    </author> 
    <content src="Contacts.html" /> 
    <plugin name="cordova-plugin-whitelist" spec="1" /> 
    <access origin="*" /> 
    <allow-intent href="http://*/*" /> 
    <allow-intent href="https://*/*" /> 
    <allow-intent href="tel:*" /> 
    <allow-intent href="sms:*" /> 
    <allow-intent href="mailto:*" /> 
    <allow-intent href="geo:*" /> 
    <platform name="android"> 
     <allow-intent href="market:*" /> 
    </platform> 
    <platform name="ios"> 
     <allow-intent href="itms:*" /> 
     <allow-intent href="itms-apps:*" /> 
    </platform> 
    <feature name="Contacts"> 
    <param name="android-package" value="org.apache.cordova.contacts.ContactManager" /> 
</feature> 
<feature name="Camera"> 
<param name="android-package" value="org.apache.cordova.CameraLauncher" /> 
</feature> 
</widget> 
+2

如果您更具體地說明您更改了哪些行,對其他人會有用 –

1

,你是否嘗試添加到您的選項旁邊的品質:

destinationType: Camera.DestinationType.DATA_URL 

File_uri默認是不是爲我工作,直到我改變了它。

另外我的科爾多瓦相機插件不知何故死了一次。卸載插件並重新安裝,立即解決了我的相機問題。

+0

我試過了上面提到的所有東西,但仍然不起作用。 –

+0

我剛碰到一個問題,相機imageData沒有被保存,因爲我沒有在上面相同的地方在相機選項行allowEdit:true。有了allowEdit:false或沒有任何東西,相機就完全打破了。 – daniel

+0

感謝您的幫助,但我的問題仍然存在。我不想要任何圖像數據,我只是想打開一個攝像頭,並沒有打開。 –