java - Camera2BasicFragment - problems modifying to switch front/back cameras -
i'm trying modify camera2basicfragment sample project support switching between front , cameras. added switch button overlay on preview screen, , following code handle click. class variable cameradirection remember camera in use:
@override public void onclick(view view) { switch (view.getid()) { case r.id.button_take_photo: takepicture(); break; case r.id.button_reverse_camera: cameramanager manager = (cameramanager) getactivity().getsystemservice(context.camera_service); try { string[] cameraids = manager.getcameraidlist(); cameracharacteristics cameracharacteristics = manager.getcameracharacteristics(mcameraid); (string id : cameraids) { if (! id.equals(mcameraid)) { closecamera(); cameradirection = cameradirection == cameracharacteristics.lens_facing_front?cameracharacteristics.lens_facing_back: cameracharacteristics.lens_facing_front; mcameraid = id; opencamera(mpreviewsize.getwidth(), mpreviewsize.getheight()); } } } catch (cameraaccessexception e) { e.printstacktrace(); } break; } } the annoying thing first switch of camera works fine. subsequent switches don't work. happens preview fades little, happening, remains on selected camera. after few more clicks on switch button, application crashes, , more annoying there's no stack trace. i've got no idea problem is. suspect camera lock isn't being released properly, that's guess.
so i'm hoping has modified sample handle camera switching, or can recommend alternative camera2 fragment implementation.
the problem in method setupcameraoutputs(int width, int height) , sets mcameraid=cameraid;, because says in comments
// don't use front facing camera in sample.
i tried with
if(mcameraid==null){ mcameraid=cameraid; } but it's not enough because not set preview size corrrectly me.
you modify method setupcameraoutputs(int width, int height, string cameraid) , setup correctly.
Comments
Post a Comment