2011-10-13 13 views
6

--------------- अद्यतन ---------------Phonegap कैमरा विफलता जब डेटा पुन: प्राप्त

लगता है कि there' एचटीसी डिजायर कैमरा और फोनगैप के इस संस्करण के साथ किसी तरह की समस्या है। ऐसा लगता है कि एचटीसी एंड्रॉइड पर कैमरा चश्मा लौटाता है।

--------------- अद्यतन ---------------

मैंने phonegap का उपयोग किया गया पुनर्लेखन के लिए मेरे पिछले एप्लिकेशन का कोड लेकिन मुझे कैमरा एपीआई का उपयोग करने की आवश्यकता नहीं है। जब मैंने इसे वास्तविक फोन पर इस्तेमाल किया तो यह तस्वीर लेने के बाद दुर्घटनाग्रस्त हो गया और मुझे यह त्रुटि SendLog के साथ मिली।

10-07 09:44:46.980 D/AndroidRuntime(1626): Shutting down VM 
10-07 09:44:46.980 W/dalvikvm(1626): threadid=1: thread exiting with uncaught exception (group=0x400259f8) 
10-07 09:44:46.989 W/CameraThread(1159): Release Camera - set mIsLastCameraClosed to true 
10-07 09:44:46.989 W/CameraThread(1159): CameraHandler Message - CLOSE_CAMERA end 
10-07 09:44:46.989 E/AndroidRuntime(1626): FATAL EXCEPTION: main 
10-07 09:44:46.989 E/AndroidRuntime(1626): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=33, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.theinit.example/com.theinit.example.TestPhoneGapActivity}: java.lang.NullPointerException 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3734) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:3776) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at android.app.ActivityThread.access$2800(ActivityThread.java:135) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2166) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at android.os.Looper.loop(Looper.java:144) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at android.app.ActivityThread.main(ActivityThread.java:4937) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at java.lang.reflect.Method.invoke(Method.java:521) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at dalvik.system.NativeStart.main(Native Method) 
10-07 09:44:46.989 E/AndroidRuntime(1626): Caused by: java.lang.NullPointerException 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at android.content.ContentResolver.openInputStream(ContentResolver.java:286) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at com.phonegap.CameraLauncher.onActivityResult(CameraLauncher.java:248) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at com.phonegap.DroidGap.onActivityResult(DroidGap.java:1346) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at android.app.Activity.dispatchActivityResult(Activity.java:3931) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  at android.app.ActivityThread.deliverResults(ActivityThread.java:3730) 
10-07 09:44:46.989 E/AndroidRuntime(1626):  ... 11 more 

क्या कोई जानता है कि ऐसा क्यों होता है?

यह मेरा Camera.js

है यह मेरा Camera.js

var options = { quality : 75, 
     destinationType : Camera.DestinationType.DATA_URL, 
     sourceType : Camera.PictureSourceType.CAMERA, 
     allowEdit : true, 
     targetWidth: 100, 
     targetHeight: 100 }; 

function capturePhoto() { 
    // Take picture using device camera and retrieve image as base64-encoded string 
    navigator.camera.getPicture(onPhotoDataSuccess, onFail, options); 
} 

function onPhotoDataSuccess() { 
    // Uncomment to view the base64 encoded image data 
    var theHTML = ''; 
    theHTML = '<div id="info">CameraSuccess</div>'; 
    document.getElementById('main').innerHTML = theHTML; 
} 

function onFail(message) { 
    // Called if something bad happens. 
    alert('Failed because: ' + message); 
} 
है

आशा है कि यह मदद करता है

धन्यवाद सभी तरह

उत्तर

1

द्वारा ------ --------- अद्यतन ---------------

लगता है कि एचटीसी डिजायर कैमरा और फोनगैप के इस संस्करण के साथ कुछ प्रकार की समस्या है। ऐसा लगता है कि एचटीसी एंड्रॉइड पर कैमरा चश्मा लौटाता है।

--------------- अद्यतन ---------------

इस कोड मेरे लिए ठीक काम करता है, मुझे इंडेक्स पर इस कोड का संदर्भ केवल .js और कैप्चरफोटो() फ़ंक्शन वाला बटन मिला है।

आशा है कि इससे किसी को भी अपनी समस्याओं को ठीक करने में मदद मिलेगी।

var pictureSource; // picture source 
var destinationType; // sets the format of returned value 

// Wait for PhoneGap to connect with the device 
// 
document.addEventListener("deviceready",onDeviceReady,false); 

// PhoneGap is ready to be used! 
// 
function onDeviceReady() { 
    pictureSource=navigator.camera.PictureSourceType; 
    destinationType=navigator.camera.DestinationType; 
} 

// Called when a photo is successfully retrieved 
// 
function onPhotoDataSuccess(imageData) { 
    // Uncomment to view the base64 encoded image data 
    // console.log(imageData); 

    // Get image handle 
    // 
    var smallImage = document.getElementById('smallImage'); 

    // Unhide image elements 
    // 
    smallImage.style.display = 'block'; 

    // Show the captured photo 
    // The inline CSS rules are used to resize the image 
    // 
    smallImage.src = "data:image/jpeg;base64," + imageData; 
} 

// Called when a photo is successfully retrieved 
// 
function onPhotoURISuccess(imageURI) { 
    // Uncomment to view the image file URI 
    // console.log(imageURI); 

    // Get image handle 
    // 
    var largeImage = document.getElementById('largeImage'); 

    // Unhide image elements 
    // 
    largeImage.style.display = 'block'; 

    // Show the captured photo 
    // The inline CSS rules are used to resize the image 
    // 
    largeImage.src = imageURI; 
} 

// A button will call this function 
// 
function capturePhoto() { 
    // Take picture using device camera and retrieve image as base64-encoded string 
    navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50 }); 
} 

// A button will call this function 
// 
function capturePhotoEdit() { 
    // Take picture using device camera, allow edit, and retrieve image as base64-encoded string 
    navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true }); 
} 

// A button will call this function 
// 
function getPhoto(source) { 
    // Retrieve image file location from specified source 
    navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
    destinationType: destinationType.FILE_URI, 
    sourceType: source }); 
} 

// Called if something bad happens. 
// 
function onFail(message) { 
    alert('Failed because: ' + message); 
} 
+0

यह कोड का एक पूरा समूह है .. समस्या को ठीक करने के लिए आप किस विशिष्ट भाग को जोड़ते हैं? – Roel

4

मैंने फ़ोनगैप समस्या सूची में एक ही त्रुटि वाले व्यक्ति की मदद की। मेरा मानना ​​है कि आपको अनुमति याद आ रही है:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

आपकी AndroidManifest.xml फ़ाइल से। हमें कैप्चर की गई छवि को .jpg फ़ाइल में लिखने में सक्षम होना चाहिए।

+0

मैंने शुरुआत में ऐसा सोचा था, लेकिन फोनगैप वेबसाइट पर मेरे जैसी सभी अनुमतियां थीं। मैंने अभी परियोजना को दोबारा कॉपी किया है और ऊपर से उस कोड को चिपकाया है, पता नहीं क्यों यह काम करना शुरू कर दिया :) – axierjhtjz

2

मुझे वही समस्या थी जब मैंने अपने minSdkVersion को AndroidManifest.xml में 7 पर सेट किया था। जब मैं minSdkVersion = "2" का उपयोग करता हूं तो मुझे इस समस्या का अनुभव नहीं होता है।

+0

मेरे लिए काम नहीं कर रहा है :( – ghostCoder

1

संपादित

मूल रूप से मैंने सोचा था कि मेरे फोन और पुन: स्थापित करने के लिए यह समस्या का समाधान हो गया था पर अपने आवेदन साफ ​​हो गया। यह पता चला कि यह मामला नहीं था। मुझे पता चला कि एक मुद्दा है जहां कैमरे से छवि को पकड़ने की कोशिश करते समय एंड्रॉइड कचरा संग्रह के साथ फोनगैप ऐप हटा दिया जाता है। घंटों की खोज करने के बाद जिस समाधान के साथ मैं समाप्त हुआ, foreground camera plugin का उपयोग कर रहा था।यह प्लगइन अपने स्वयं के कैमरे को एप्लिकेशन के अंदर ही बनाता है इस तरह आपको इसे कचरा संग्रह के बारे में चिंता करने की ज़रूरत नहीं है।

दुर्भाग्यवश, यह पूरी तरह से फीचर्ड नहीं है और अधिकांश कैमरा विकल्प उपयोगकर्ता के लिए उपलब्ध नहीं हैं। यह केवल कॉर्डोवा 2.4.0 का समर्थन करता है जिसका अर्थ है कि मुझे 2.7.0 से डाउनग्रेड करना पड़ा। यह समाधान मेरे वर्तमान एप्लिकेशन के लिए काम करेगा, उम्मीद है कि अगले लिखने के बाद मैं एक बेहतर समाधान होगा। उम्मीद है कि यह किसी की मदद करता है!

+0

क्या आप फोनगैप के संस्करण के बारे में जानकारी जोड़ सकते हैं जिसका उपयोग आप कर रहे थे? बस थ्रेड में अधिक जानकारी जोड़ने के लिए और समाधान। धन्यवाद – axierjhtjz

संबंधित मुद्दे