package Ġcom . m ro us avy . camera . utils Ċ Ċ import Ġandroid . hardware . camera 2 . Camera Character istics Ċ import Ġandroid . util . Size Ċ import Ġcom . facebook . react . bridge . Arguments Ċ import Ġcom . facebook . react . bridge . Readable Array Ċ import Ġcom . m ro us avy . camera . parsers . big ger Ċ import Ġkotlin . math . PI Ċ import Ġkotlin . math . atan Ċ Ċ // Ġ 3 5 mm Ġis Ġ 1 3 5 Ġfilm Ġformat , Ġa Ġstandard Ġin Ġwhich Ġf ocal Ġlengths Ġare Ġusually Ġmeasured Ċ val ĠSize 3 5 mm Ġ= ĠSize ( 3 6 , Ġ 2 4 ) Ċ Ċ /** Ċ Ġ* ĠConvert Ġa Ġgiven Ġarray Ġof Ġf ocal Ġlengths Ġto Ġthe Ġcorresponding ĠTypeScript Ġunion Ġtype Ġname . Ċ Ġ* Ċ Ġ* ĠPossible Ġvalues Ġfor Ġsingle Ġcameras : Ċ Ġ* Ġ* Ġ`" wide - angle - camera "` Ċ Ġ* Ġ* Ġ`" ul tra - wide - angle - camera "` Ċ Ġ* Ġ* Ġ`" tele photo - camera "` Ċ Ġ* Ċ Ġ* ĠS ources Ġfor Ġthe Ġf ocal Ġlength Ġcategories : Ċ Ġ* Ġ* Ġ[ Tele photo ĠLens Ġ( wikipedia )]( https :// en . wikipedia . org / wiki / Tele photo _ lens ) Ċ Ġ* Ġ* Ġ[ Normal ĠLens Ġ( wikipedia )]( https :// en . wikipedia . org / wiki / Normal _ lens ) Ċ Ġ* Ġ* Ġ[ Wide - Angle ĠLens Ġ( wikipedia )]( https :// en . wikipedia . org / wiki / Wide - angle _ lens ) Ċ Ġ* Ġ* Ġ[ Ul tra - Wide - Angle ĠLens Ġ( wikipedia )]( https :// en . wikipedia . org / wiki / Ul tra _ wide _ angle _ lens ) Ċ Ġ*/ Ċ fun ĠCamera Character istics . getDevice Types (): ĠRead able Array Ġ{ ĊĠ Ġ// ĠTODO : ĠCheck Ġif Ġget DeviceType () Ġworks Ġcorrectly , Ġeven Ġfor Ġlogical Ġmulti - cam eras ĊĠ Ġval Ġf ocal Lengths Ġ= Ġthis . get ( Camera Character istics . LEN S _ INFO _ AVAILABLE _ FO CAL _ LENGTH S ) !! ĊĠ Ġval Ġsensor Size Ġ= Ġthis . get ( Camera Character istics . SENSOR _ INFO _ PHYSICAL _ SIZE ) !! ĊĊĠ Ġ// ĠTo Ġget Ġvalid Ġf ocal Ġlength Ġstandards Ġwe Ġhave Ġto Ġup scale Ġto Ġthe Ġ 3 5 mm Ġmeasurement Ġ( film Ġstandard ) ĊĠ Ġval Ġcrop Factor Ġ= ĠSize 3 5 mm . big ger Ġ/ Ġsensor Size . big ger ĊĊĠ Ġval Ġdevice Types Ġ= ĠArguments . create Array () ĊĊĠ Ġval Ġcontains Tele photo Ġ= Ġf ocal Lengths . any Ġ{ Ġl Ġ-> Ġ( l Ġ* Ġcrop Factor ) Ġ> Ġ 3 5 Ġ} Ġ// ĠTODO : ĠTele photo Ġl enses Ġare Ġ> Ġ 8 5 mm , Ġbut Ġwe Ġdon 't Ġhave Ġanything Ġbetween Ġthat Ġrange .. ĊĠ Ġ// Ġval Ġcontains Normal Lens Ġ= Ġf ocal Lengths . any Ġ{ Ġl Ġ-> Ġ( l Ġ* Ġcrop Factor ) Ġ> Ġ 3 5 Ġ&& Ġ( l Ġ* Ġcrop Factor ) Ġ<= Ġ 5 5 Ġ} ĊĠ Ġval Ġcontains Wide Angle Ġ= Ġf ocal Lengths . any Ġ{ Ġl Ġ-> Ġ( l Ġ* Ġcrop Factor ) Ġ>= Ġ 2 4 Ġ&& Ġ( l Ġ* Ġcrop Factor ) Ġ<= Ġ 3 5 Ġ} ĊĠ Ġval Ġcontains Ul tra Wide Angle Ġ= Ġf ocal Lengths . any Ġ{ Ġl Ġ-> Ġ( l Ġ* Ġcrop Factor ) Ġ< Ġ 2 4 Ġ} ĊĊĠ Ġif Ġ( contains Tele photo ) ĊĠĠĠ Ġdevice Types . push String (" tele photo - camera ") ĊĠ Ġif Ġ( contains Wide Angle ) ĊĠĠĠ Ġdevice Types . push String (" wide - angle - camera ") ĊĠ Ġif Ġ( contains Ul tra Wide Angle ) ĊĠĠĠ Ġdevice Types . push String (" ul tra - wide - angle - camera ") ĊĊĠ Ġreturn Ġdevice Types Ċ } Ċ Ċ fun ĠCamera Character istics . getField Of View (): ĠDouble Ġ{ ĊĠ Ġval Ġf ocal Lengths Ġ= Ġthis . get ( Camera Character istics . LEN S _ INFO _ AVAILABLE _ FO CAL _ LENGTH S ) !! ĊĠ Ġval Ġsensor Size Ġ= Ġthis . get ( Camera Character istics . SENSOR _ INFO _ PHYSICAL _ SIZE ) !! ĊĊĠ Ġreturn Ġ 2 Ġ* Ġatan ( sensor Size . big ger Ġ/ Ġ( focal Lengths [ 0 ] Ġ* Ġ 2 )) Ġ* Ġ( 1 8 0 Ġ/ ĠPI ) Ċ } Ċ Ċ fun ĠCamera Character istics . supports F ps ( fps : ĠInt ): ĠBoolean Ġ{ ĊĠ Ġreturn Ġthis . get ( Camera Character istics . CONTROL _ AE _ AVAILABLE _ TARGET _ FPS _ RAN GES ) !! ĊĠĠĠ Ġ. any Ġ{ Ġit . upper Ġ>= Ġfps Ġ&& Ġit . lower Ġ<= Ġfps Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġvalue Ġat Ġwhich Ġthe ĠZoom Ġis Ġat Ġneutral Ġstate Ġ( wide - angle Ġcamera Ġzoom Ġ 0 ) Ġ( in Ġpercent , Ġbetween Ġ 0 . 0 - 1 . 0 ) Ċ Ġ* Ċ Ġ* Ġ* ĠOn Ġsingle - camera Ġphysical Ġdevices Ġthis Ġvalue Ġwill Ġalways Ġbe Ġ 0 Ċ Ġ* Ġ* ĠOn Ġdevices Ġwith Ġmultiple Ġcameras , Ġe . g . Ġtriple - camera , Ġthis Ġvalue Ġwill Ġbe Ġa Ġvalue Ġbetween Ġ 0 . 0 Ġand Ġ 1 . 0 , Ġwhere Ġthe Ġfield - of - view Ġand Ġzoom Ġlooks Ġ" neutral " Ċ Ġ*/ Ċ val ĠCamera Character istics . neutral Zoom Percent : ĠFloat ĊĠ Ġget () Ġ{ ĊĠĠĠ Ġval Ġzoom Range Ġ= Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ>= Ġandroid . os . Build . VERSION _ CODES . R ) ĊĠĠĠĠĠ Ġthis . get ( Camera Character istics . CONTROL _ ZO OM _ RATIO _ RANGE ) ĊĠĠĠ Ġelse Ġnull ĊĠĠĠ Ġreturn Ġif Ġ( zoom Range Ġ!= Ġnull ) ĊĠĠĠĠĠ Ġ(( 1 . 0 f Ġ- Ġzoom Range . lower ) Ġ/ Ġ( zoom Range . upper Ġ- Ġzoom Range . lower )) ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠ 0 . 0 f ĊĠ Ġ} Ċ