2011-08-11 13 views
10

पर कैप्चर Intent सैमसंग फोन पर NullPointerException का कारण बनता है।फोटो कैप्चर इरादा सैमसंग फोन पर केवल

नीचे कार्यान्वयन।

final Button capture = (Button)findViewById(R.id.capture_button); 
capture.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); 

    } 
}); 


protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == CAMERA_PIC_REQUEST) { 

     Bitmap thumbnail = (Bitmap)data.getExtras().get("data"); 
     ImageView image = (ImageView)findViewById(R.id.photoResultView); 
     image.setImageBitmap(thumbnail); 
    } 
} 
+0

कौन सा लाइन एनपीई वजह से? – Matt

+0

@Matt image.setImageBitmap (थंबनेल); थंबनेल के रूप में लाइन –

उत्तर

13

मुझे एक फिक्स मिला (मेरा काम नहीं) जो इसे सैमसंग उपकरणों के लिए काम करता है। स्पष्टीकरण वाला ब्लॉग here पाया जा सकता है।

हालांकि, गैर-सैमसंग फोन पर यह सुधार का उपयोग कर गलत छवि देता है, तो मैं का उपयोग एक

if(imageURI != null) { 
    // do it the normal way 
else { 
    // do it the "Samsung" way 
} 
+4

के रूप में @Pyrodante के रूप में सुझाव दिया गया था "हालांकि, गैर-सैमसंग फोन पर इस फिक्स का उपयोग गलत छवि देता है, इसलिए मैं इसका उपयोग करूंगा" क्या कोई भी पूरा कोड पोस्ट कर सकता है, जो सैमसंग और गैर सैमसंग दोनों पर काम करना चाहिए – LMK

2

तुम यहाँ से कुछ ज्यादा आसान तरीका जाँच उरी प्राप्त करने के लिए कर सकते हैं।

प्राप्त एंड्रॉयड

कैमरे पर कब्जा छवि पथ बुला परिणाम गतिविधि पर कैमरे

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(Intent.createChooser(cameraIntent,"Select Picture"), CAMERA_PIC_REQUEST1); 

final ContentResolver cr = getContentResolver();  
final String[] p1 = new String[] { 
    MediaStore.Images.ImageColumns._ID, 
    MediaStore.Images.ImageColumns.DATE_TAKEN 
}; 
Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC");  
if (c1.moveToFirst()) { 
    String uristringpic = "content://media/external/images/media/" +c1.getInt(0); 
    Uri newuri = Uri.parse(uristringpic); 
    Log.i("TAG", "newuri "+newuri);      
} 
c1.close(); 
} 

तो फिर तुम प्राप्त कर सकते हैं उरी पथ पर कब्जा छवि

एंड्रॉयड

में

Get camera capture image path in android

-2

प्राप्त कैमरा कब्जा छवि पथ बुला कैमरा

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(Intent.createChooser(cameraIntent,"Select Picture"), CAMERA_PIC_REQUEST1); 

परिणाम गतिविधि पर

final ContentResolver cr = getContentResolver();  
final String[] p1 = new String[] { 
    MediaStore.Images.ImageColumns._ID, 
    MediaStore.Images.ImageColumns.DATE_TAKEN 
}; 

Cursor c1 = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null, null, p1[1] + " DESC");  
if (c1.moveToFirst()) { 
    String uristringpic = "content://media/external/images/media/" +c1.getInt(0); 
    Uri newuri = Uri.parse(uristringpic); 
    Log.i("TAG", "newuri "+newuri); 
} 
c1.close(); 

तो यू प्राप्त कर सकते हैं उरी पथ पर कब्जा छवि

(source)

+0

लोन लिंक [एक खराब जवाब माना जाता है] (http://stackoverflow.com/faq#deletion) क्योंकि यह स्वयं द्वारा व्यर्थ है और भविष्य में लक्षित संसाधन को जीवित रहने की गारंटी नहीं है। कृपया उस जानकारी का कम से कम सारांश शामिल करने का प्रयास करें जिसे आप लिंक कर रहे हैं। – j0k

3

बस एक सैमसंग एस 4 पर एक ही मुद्दा हो गया और पता चला कि AndroidManifest.xml को configChanges जोड़ने समस्या हल:

<activity 
    android:name=".YourActivity" 
    android:configChanges="orientation|keyboardHidden|screenSize" 
    android:screenOrientation="portrait" > 
</activity> 
+0

मेरे लिए काम करता है! अजीब सैमसंग! – Steven

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