Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a programmatic way to detect if the camera has an optical zoom?

There seem to be some Android devices out there with optical zooms, e.g.

  • Samsung S4 Zoom (OS 4.2)
  • Altek A14 & A16 (OS 2.3.5)

Is there a way to detect this programmatically?

Since the camera often takes a few seconds to initialize, in my app there are some flows where I launch the camera in anticipation that the user is about to use it (so the app feels faster when they actually press my in-app camera button). If the camera has an optical zoom then I don't want to do this, as the lens slides out and annoys the user.

If I have to blacklist these devices, does anybody know a list of all the Android devices out there with optical zooms, preferably with their Build.MANUFACTURER and Build.PRODUCT strings?

In case it helps, here are the Camera.Parameters for an S4 Zoom that I bought recently:

{preferred-preview-size-for-video=704x528, factory-af-led-lv-limit=-1,-1, zoom=0, factory-af-scan-limit=-1,-1, max-num-detected-faces-hw=0, continuous-mode=off, zoom-supported=true, metering=center, whitebalance=auto, scene-mode=auto, jpeg-quality=1, factory-testno=0, factory-af-diff-check=-1,-1, preview-format-values=yuv420sp,yuv420p, best-mode=off, red-eye-fix=fail, jpeg-thumbnail-quality=100, preview-format=yuv420sp, low-light-mode=off, zoom-action=zoom-stop, face-detection=off, video-size-values=1920x1080,1280x720,800x450,768x512,640x480,320x240,176x144, factory-zoom-slope-check-data=-1,-1, preview-size=960x540, focal-length=4.300000, flash-charging=0, factory-cap-range=-1,-1, factory-iris-range=-1,-1, flash-mode-values=off,auto,red-eye,on,fillin,slow,red-eye-fix, preview-frame-rate-values=30,15, factory-af-scan-range=-1,-1, max-num-metering-areas=0, preview-frame-rate=30, focus-mode-values=auto,infinity,macro,fixed,face-detection,continuous,continuous-picture,continuous-video,manual,multi,touch,object-tracking, jpeg-thumbnail-width=224, video-size=0x0, scene-mode-values=auto,portrait,landscape,night,beach,snow,sunset,fireworks,sports,party,candlelight,dusk-dawn,fall-color,back-light,text, preview-fps-range-values=(7000,30000), jpeg-thumbnail-size-values=224x126,160x120,192x128,0x0, zoom-ratios=100,120,140,160,180,220,310,420,560,790,1000, preview-size-values=960x540,768x512,704x576,704x528,640x524,640x480,320x240, smart-scene-detection=0, factory-zoom-range-check-data=-1,-1, factory-af-led-range=-1,-1,-1,-1, picture-size-values=4608x2592,3264x2448,4608x3456,4608x3072,4096x2304,3960x2640,3648x2736,2592x1944,2304x1728,1984x1488,1920x1080,1024x768,960x720,640x480, preview-fps-range=7000,30000, auto-whitebalance-lock=false, min-exposure-compensation=-6, antibanding=off, max-num-focus-areas=1, vertical-view-angle=46.3, factory-wb-value=-1,-1,-1,-1, zoom-ring=-1, horizontal-view-angle=67, video-stabilization-supported=false, jpeg-thumbnail-height=126, continuous-fps=, focus-mode=auto, factory-sc-speedtime=-1,-1, factory-gyro-range-data=-1,-1,-1,-1, auto-whitebalance-lock-supported=true, video-frame-format=yuv420sp, max-num-detected-faces-sw=0, picture-format-values=jpeg, wb-k=-1, max-exposure-compensation=6, factory-ois-range-data=-1,-1,-1,-1,-1,-1,-1, focus-areas=(0,0,0,0,0), exposure-compensation=0, exposure-compensation-step=0.33, flash-mode=off, flash-standby=off, auto-exposure-lock=false, wb-custom=-1,-1, effect-values=none,mono,negative,sepia,antique,point-blue,point-red,point-yellow,warm,cold, factory-punt-range-data=-1,-1,-1, factory-vib-range-data=-1,-1,-1,-1,-1,-1, picture-size=4608x2592, max-zoom=10, factory-gain-liveview-range=-1,-1, effect=none, blink=fail, whitebalance-values=auto,fluorescent-h,fluorescent-l,daylight,cloudy-daylight,custom,temperature,incandescent,prohibition,horizon,ledlight, picture-format=jpeg, focus-distances=0.15,1.20,Infinity, factory-flash-range=-1,-1, raw-save=0, auto-exposure-lock-supported=true, curr_zoom_level=0, hdr-mode=0, antibanding-values=60hz,off}

FYI, it reports its Build.PRODUCT as mproject3gub.

like image 642
Dan J Avatar asked Sep 17 '13 17:09

Dan J


1 Answers

Is there a way to detect this programmatically?

Not through public APIs, like Camera.Parameters.

It is theoretically possible that all such manufacturers have standardized on some undocumented API, such as some undocumented value in Camera.Parameters. It is also theoretically possible that I will spontaneously regrow my missing hair. I would not count on either of these being true.

does anybody know a list of all the Android devices out there with optical zooms, preferably with their Build.MANUFACTURER and Build.PRODUCT strings

I doubt that there is one, considering that one device that I know of with optical zoom (Samsung Galaxy Camera) has its reported Build.PRODUCT value (gd1wifiue) show up on a total of five pages on the entire Internet indexed by Google, as of the time of this writing, and including this page. Note that I have not gotten my hands on a Galaxy Camera yet, and so it is possible that the value that was reported to me is incorrect.

like image 89
CommonsWare Avatar answered Nov 15 '22 17:11

CommonsWare