Android camera capture activity error on nexus devices -
Android camera capture activity error on nexus devices -
this demo application utilize capture image phone photographic camera app, compression , display on imageview. works on other devices except on nexus devices. tested on lg e975, samsung s3 mini, samsung note 2 , works fine. seek search no luck finding any. here code:
main activity:
public class main extends activity { protected imageview img_pic; protected button btn_capture; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); img_pic = (imageview) findviewbyid(r.id.imageview); btn_capture = (button) findviewbyid(r.id.button); btn_capture.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent cameraintent = new intent(mediastore.action_image_capture); startactivityforresult(cameraintent, 1); } }); } public static string getbitmapfromcameradata(intent data, context context) { uri selectedimage = data.getdata(); string[] filepathcolumn = {mediastore.images.media.data}; cursor cursor = context.getcontentresolver().query(selectedimage, filepathcolumn, null, null, null); cursor.movetofirst(); int columnindex = cursor.getcolumnindexorthrow(filepathcolumn[0]); string picturepath = cursor.getstring(columnindex); cursor.close(); homecoming picturepath; } @override public void onactivityresult(int requestcode, int resultcode, intent data) { if (resultcode != activity.result_ok) return; bitmapfactory.options options = new bitmapfactory.options(); options.insamplesize = 8; bytearrayoutputstream stream = new bytearrayoutputstream(); if (data != null && requestcode == 1) { bitmap bitmap_camera_1 = bitmapfactory.decodefile(getbitmapfromcameradata(data, this)); int height_1 = bitmap_camera_1.getheight(), width_1 = bitmap_camera_1.getwidth(); if (height_1 > 1280 && width_1 > 960) { bitmap image_1 = bitmapfactory.decodefile(getbitmapfromcameradata(data, this), options); image_1.compress(bitmap.compressformat.jpeg, 100, stream); img_pic.setimagebitmap(image_1); system.out.println("need resize camera"); } else { bitmap_camera_1.compress(bitmap.compressformat.jpeg, 100, stream); img_pic.setimagebitmap(bitmap_camera_1); system.out.println("works camera"); } } else { toast.maketext(this, "something went wrong, please seek again", toast.length_long).show(); } } }
log:
10-08 10:34:32.662 2998-2998/com.gilbert.apptastic.picturetest e/androidruntime﹕ fatal exception: main process: com.gilbert.apptastic.picturetest, pid: 2998 java.lang.runtimeexception: failure delivering result resultinfo{who=null, request=1, result=-1, data=intent { act=inline-data (has extras) }} activity {com.gilbert.apptastic.picturetest/com.gilbert.apptastic.picturetest.main}: java.lang.nullpointerexception @ android.app.activitythread.deliverresults(activitythread.java:3351) @ android.app.activitythread.handlesendresult(activitythread.java:3394) @ android.app.activitythread.access$1300(activitythread.java:135) @ android.app.activitythread$h.handlemessage(activitythread.java:1244) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:136) @ android.app.activitythread.main(activitythread.java:5001) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601) @ dalvik.system.nativestart.main(native method) caused by: java.lang.nullpointerexception @ android.content.contentresolver.acquireunstableprovider(contentresolver.java:1420) @ android.content.contentresolver.query(contentresolver.java:445) @ android.content.contentresolver.query(contentresolver.java:404) @ com.gilbert.apptastic.picturetest.main.getbitmapfromcameradata(main.java:44) @ com.gilbert.apptastic.picturetest.main.onactivityresult(main.java:61) @ android.app.activity.dispatchactivityresult(activity.java:5423) @ android.app.activitythread.deliverresults(activitythread.java:3347) at android.app.activitythread.handlesendresult(activitythread.java:3394) at android.app.activitythread.access$1300(activitythread.java:135) at android.app.activitythread$h.handlemessage(activitythread.java:1244) at android.os.handler.dispatchmessage(handler.java:102) at android.os.looper.loop(looper.java:136) at android.app.activitythread.main(activitythread.java:5001) at java.lang.reflect.method.invokenative(native method) at java.lang.reflect.method.invoke(method.java:515) at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785) at com.android.internal.os.zygoteinit.main(zygoteinit.java:601) at dalvik.system.nativestart.main(native method)
thanks.
see https://code.google.com/p/android/issues/detail?id=57996 - it's reported bug 4 nexus devices. workaround suggested there,
intent.putextra(mediastore.extra_output, originaluri);
should used care, because not compatible other devices.
see http://kevinpotgieter.wordpress.com/2011/03/30/null-intent-passed-back-on-samsung-galaxy-tab/.
android android-activity android-camera android-bitmap
Comments
Post a Comment