2011-08-31 10 views
6

ResultInfo परिणाम पहुंचाने के साथ लौट रहा uri मैं एंड्रॉयड कैमरा तस्वीर एक विफलता

  • एक गैलरी से एक छवि का चयन करने के लिए कैमरे
  • साथ एक नई छवि लेने के लिए दो बटन

    • एक के साथ एक एप्लिकेशन बनाया है

    गैलरी चयन के लिए प्रक्रिया ठीक काम करती है, अगर मैं कैमरे के साथ एक तस्वीर लेता हूं तो यह Failure delivering result ResultInfo त्रुटि प्राप्त करता रहता है। और ऐसा लगता है कि छवि फ़ोल्डर को नहीं लिखा गया है।

    चूंकि दोनों एक ही लौटते हैं मेरे पास परिणाम से निपटने के लिए एक हैंडलर होता है;

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
         if (requestCode == 1) { 
          if (resultCode == RESULT_OK && data.getData() != null){ 
           try { 
            Log.i("YADDA",data.getData().toString()); 
            Uri targetUri = data.getData(); 
            if (targetUri != null) { 
             //Log.i("YADDA",targetUri.toString()); 
             myImage nsi = new myImage(); 
             nsi.ThumbNail = getThumbnail(targetUri); 
             nsi.path = targetUri; 
             nsi.FileName = FileNameBase + "_" +  String.valueOf(1 + photos.size()); 
             photos.add(nsi); 
            } 
    
           } catch (IOException e) { 
            e.printStackTrace(); 
           } 
    
           DrawImageGallery(); 
          } 
         } 
    

    बटन हैंडलर;

    nsbu1.setOnClickListener(new Button.OnClickListener() { 
         public void onClick(View v){ 
          Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
          photoPickerIntent.setType("image/*"); 
          startActivityForResult(photoPickerIntent, 1); 
         } 
        }); 
    
        nsbu2.setOnClickListener(new Button.OnClickListener() { 
         public void onClick(View v){ 
          Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
           // Uri myuri=Uri.fromFile(new  File(Environment.getExternalStorageDirectory().getAbsolutePath(), FileNameBase + ".jpg")); 
           Uri myuri=Uri.fromFile(new File("/mnt/sdcard/tmp/" + FileNameBase + ".jpg")); 
    
           Log.i("YADDA", myuri.toString()); 
           intent.putExtra(MediaStore.EXTRA_OUTPUT, myuri); 
    
           startActivityForResult(cameraIntent, 1); 
          } 
         }); 
    

    बातें मैंने कोशिश की:

    • मैं डबल, प्रकट देख लिया है SDcard
    • अजीब बात पर लिखने की अनुमति है, हैंडलर सही होना चाहिए, क्योंकि गैलरी काम करता है से एक तस्वीर ठीक
    • एंड्रॉइड के कुछ संस्करण में इस कैमरे हैंडलर के साथ एक बग है, लेकिन मैंने जांच की है, मेरे नेक्सस एस उनमें से एक नहीं है।
    • googled/घंटे और घंटे

    Logcat उत्पादन के लिए डिबग;

    09-01 10:02:59.085: ERROR/AndroidRuntime(1898): FATAL EXCEPTION: main 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.android.spot/com.android.spot.newsite}: java.lang.NullPointerException 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2532) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:2574) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at android.app.ActivityThread.access$2000(ActivityThread.java:117) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:961) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at android.os.Handler.dispatchMessage(Handler.java:99) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at android.os.Looper.loop(Looper.java:130) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at java.lang.reflect.Method.invokeNative(Native Method) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at java.lang.reflect.Method.invoke(Method.java:507) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at dalvik.system.NativeStart.main(Native Method) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898): Caused by: java.lang.NullPointerException 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at com.android.spot.newsite.onActivityResult(newsite.java:351) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at android.app.Activity.dispatchActivityResult(Activity.java:3908) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2528) 
    09-01 10:02:59.085: ERROR/AndroidRuntime(1898):  ... 11 more 
    
    +1

    http://www.softwarepassion.com/android-series-taking-photos-with-andorid-built-in-camera/ –

    +0

    आपके सुझाव के लिए धन्यवाद, मैंने कोशिश की है, कोई परिणाम नहीं, एक ही त्रुटि। Thnx annyways! – Lectere

    +0

    क्या आप लॉगकैट पोस्ट कर सकते हैं जहां त्रुटियां हैं? –

    उत्तर

    1

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

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

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

    1

    संपादित

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

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