Android Custom Camera Zoom Not Working -
i have seen several other questions on subject none seem solve problem. have custom camera app working fine, zoom buttons. code using sdk min 8 target 14:
@override public void surfacechanged(surfaceholder holder, int format, int width, int height) { if (ispreviewing){ camera.stoppreview(); } camera.parameters p = camera.getparameters(); p.setpreviewsize(sizes.get(0).width, sizes.get(0).height); p.setcoloreffect(effect); zoomcontrols = (zoomcontrols) findviewbyid(r.id.zoomcontrols); if (p.iszoomsupported()) { maxzoomlevel = p.getmaxzoom(); toast.maketext(picturetaker.this, string.valueof(maxzoomlevel),toast.length_long).show(); zoomcontrols.setiszoominenabled(true); zoomcontrols.setiszoomoutenabled(true); zoomcontrols.setonzoominclicklistener(new onclicklistener() { public void onclick(view v) { if (currentzoomlevel < maxzoomlevel) { currentzoomlevel++; camera.startsmoothzoom(currentzoomlevel); //toast.maketext(picturetaker.this, string.valueof(currentzoomlevel),toast.length_long).show(); } } }); zoomcontrols.setonzoomoutclicklistener(new onclicklistener() { public void onclick(view v) { if (currentzoomlevel > 0) { currentzoomlevel--; camera.startsmoothzoom(currentzoomlevel); } } }); } else { zoomcontrols.setvisibility(view.gone); } camera.setparameters(p); try { camera.setpreviewdisplay(holder); } // end try catch (ioexception e) { log.v(tag, e.tostring()); } // end catch camera.startpreview(); // begin preview ispreviewing = true; } the setcoloreffect coming options menu , works perfectly. know iszoomsupported , getmaxzoom working because toast displays "59" when code runs, zoom buttons nothing. zoomcontrol xml
<zoomcontrols android:id="@+id/zoomcontrols" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_centerhorizontal="true" android:layout_marginbottom="17dp" android:baselinealigned="false" android:gravity="center_horizontal" android:orientation="horizontal" /> i have necessary permissions in manifest , no errors showing in logcat. not sure i'm doing wrong. added second toast report if currentzoomlevel being changed when button pressed , shows value getting incremented 1 each time. tried not using startsmoothzoom , setting zoom
p.setzoom(currentzoomlevel); or p.setzoomlevel(15); and neither 1 works either. phone, htc incredible have working zoom on native camera app. if comment out zoomcontrol parts of code, works fine , other features of custom camera work fine zoomcontrol code in there, doesn't zoom.
figured out , maybe can of other people have been having similar problems. smoothzoom. guess htc doesn't support this.
@override public void surfacechanged(surfaceholder holder, int format, int width, int height) { if (ispreviewing){ camera.stoppreview(); } p = camera.getparameters(); p.setpreviewsize(sizes.get(0).width, sizes.get(0).height); p.setcoloreffect(effect); if (p.iszoomsupported() && p.issmoothzoomsupported()) { //most phones maxzoomlevel = p.getmaxzoom(); zoomcontrols.setiszoominenabled(true); zoomcontrols.setiszoomoutenabled(true); zoomcontrols.setonzoominclicklistener(new onclicklistener() { public void onclick(view v) { if (currentzoomlevel < maxzoomlevel) { currentzoomlevel++; camera.startsmoothzoom(currentzoomlevel); } } }); zoomcontrols.setonzoomoutclicklistener(new onclicklistener() { public void onclick(view v) { if (currentzoomlevel > 0) { currentzoomlevel--; camera.startsmoothzoom(currentzoomlevel); } } }); } else if (p.iszoomsupported() && !p.issmoothzoomsupported()){ //stupid htc phones maxzoomlevel = p.getmaxzoom(); zoomcontrols.setiszoominenabled(true); zoomcontrols.setiszoomoutenabled(true); zoomcontrols.setonzoominclicklistener(new onclicklistener() { public void onclick(view v) { if (currentzoomlevel < maxzoomlevel) { currentzoomlevel++; p.setzoom(currentzoomlevel); camera.setparameters(p); } } }); zoomcontrols.setonzoomoutclicklistener(new onclicklistener() { public void onclick(view v) { if (currentzoomlevel > 0) { currentzoomlevel--; p.setzoom(currentzoomlevel); camera.setparameters(p); } } }); }else{ //no zoom on phone zoomcontrols.setvisibility(view.gone); } camera.setparameters(p); try { camera.setpreviewdisplay(holder); } // end try catch (ioexception e) { log.v(tag, e.tostring()); } // end catch camera.startpreview(); // begin preview ispreviewing = true; } // end method surfacechanged this lets htc zoom in steps. key setting camera's parameters after each button click. set currentzoomlevel number want, based on maxzoomlevel, (my htc 59 droid 4 15), during clicks of zoomcontrols make device zoom in , out faster. might tidier way code this, should put checks in make sure maxzoomsize doesn't return null or something, it's working on multiple devices.
Comments
Post a Comment