package Ġapp . graph ene os . camera Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Content U ris Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . media . Media Metadata Retriever Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Size Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Alpha Animation Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Linear Interpolator Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . camera . core . AspectRatio Ċ import Ġandroidx . camera . core . Camera Ċ import Ġandroidx . camera . core . Camera Selector Ċ import Ġandroidx . camera . core . Image Analysis Ċ import Ġandroidx . camera . core . Image Capture Ċ import Ġandroidx . camera . core . Preview Ċ import Ġandroidx . camera . core . UseCase Group Ċ import Ġandroidx . camera . extensions . Extension Mode Ċ import Ġandroidx . camera . extensions . Extensions Manager Ċ import Ġandroidx . camera . lifecycle . Process Camera Provider Ċ import Ġandroidx . camera . video . Quality Selector Ċ import Ġandroidx . camera . video . Recorder Ċ import Ġandroidx . camera . video . Video Capture Ċ import Ġandroidx . camera . view . Preview View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġapp . graph ene os . camera . analyzer . QR Analyzer Ċ import Ġapp . graph ene os . camera . capt urer . Video Capt urer . Companion . is Video Ċ import Ġapp . graph ene os . camera . ui . activities . MainActivity Ċ import Ġapp . graph ene os . camera . ui . activities . Secure Capture Activity Ċ import Ġapp . graph ene os . camera . ui . activities . Secure MainActivity Ċ import Ġapp . graph ene os . camera . ui . activities . Video Capture Activity Ċ import Ġapp . graph ene os . camera . ui . activities . Video Only Activity Ċ import Ġjava . util . concurrent . Executors Ċ import Ġkotlin . math . round ToInt Ċ Ċ @ Suppress Lint (" Apply Shared Pref ") Ċ class ĠCam Config ( private Ġval Ġm Activity : ĠMainActivity ) Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠGrid Type Ġ{ ĊĠĠĠĠĠĠĠ ĠNONE , ĊĠĠĠĠĠĠĠ ĠTHREE _ BY _ TH REE , ĊĠĠĠĠĠĠĠ ĠFO UR _ BY _ FO UR , ĊĠĠĠĠĠĠĠ ĠG OLD EN _ RATIO ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġobject ĠCamera Modes Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCAM ERA Ġ= ĠR . string . camera ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠV IDE O Ġ= ĠR . string . video ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP OR TRA IT Ġ= ĠR . string . portrait _ mode ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠH DR Ġ= ĠR . string . hdr _ mode ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠN IGHT _ S IGHT Ġ= ĠR . string . night _ sight _ mode ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFACE _ RE TO UCH Ġ= ĠR . string . face _ re touch _ mode ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAUTO Ġ= ĠR . string . auto _ mode ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠQR _ SCAN Ġ= ĠR . string . qr _ scan _ mode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġobject ĠSetting Values Ġ{ ĊĊĠĠĠĠĠĠĠ Ġobject ĠKey Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠS ELF _ ILL UM INATION Ġ= Ġ" self _ illum ination " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠGEO _ TAG GING Ġ= Ġ" geo _ tag ging " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠFL ASH _ MODE Ġ= Ġ" flash _ mode " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠGR ID Ġ= Ġ" grid " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠEMP HAS IS _ ON _ QUAL ITY Ġ= Ġ" emp hasis _ on _ quality " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠF OC US _ TIMEOUT Ġ= Ġ" focus _ timeout " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠCAM ERA _ SO UN DS Ġ= Ġ" camera _ sounds " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠV IDE O _ QUAL ITY Ġ= Ġ" video _ quality " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠAS PECT _ RATIO Ġ= Ġ" aspect _ ratio " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġobject ĠDefault Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠGR ID _ TYPE Ġ= ĠGrid Type . NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠGR ID _ TYPE _ INDEX Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠAS PECT _ RATIO Ġ= ĠAs pect Ratio . RATIO _ 4 _ 3 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠV IDE O _ QUAL ITY Ġ= ĠQuality Selector . QUAL ITY _ F HD ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠS ELF _ ILL UM INATION Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠGEO _ TAG GING Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠFL ASH _ MODE Ġ= ĠImage Capture . FLASH _ MODE _ OFF ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠEMP HAS IS _ ON _ QUAL ITY Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠF OC US _ TIMEOUT Ġ= Ġ" 5 s " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠCAM ERA _ SO UN DS Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Cam Config " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPRE VIEW _ SNAP _ DURATION Ġ= Ġ 2 0 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPRE VIEW _ SL _ OVER LAY _ D UR Ġ= Ġ 2 0 0 L ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ LEN S _ F ACING Ġ= ĠCamera Selector . LEN S _ F ACING _ BACK ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ EXTENSION _ MODE Ġ= ĠExtension Mode . NONE ĊĊĠĠĠĠĠĠĠ Ġval Ġextension Modes Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera Modes . CAMERA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera Modes . POR TRA IT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera Modes . HDR , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera Modes . N IGHT _ S IGHT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera Modes . FACE _ RE TO UCH , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera Modes . AUTO , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġimage Collection Uri : ĠUri Ġ= ĠMedia Store . Images . Media . getContent Uri ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . VOLUME _ EXTERNAL _ PRIMARY ) !! ĊĊĠĠĠĠĠĠĠ Ġval Ġvideo Collection Uri : ĠUri Ġ= ĠMedia Store . Video . Media . getContent Uri ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . VOLUME _ EXTERNAL _ PRIMARY ) !! ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Collection Uri : ĠUri Ġ= ĠMedia Store . Files . getContent Uri ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . VOLUME _ EXTERNAL _ PRIMARY ) !! ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ CAMERA _ MODE Ġ= ĠCamera Modes . CAMERA ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCOMMON _ SP _ NAME Ġ= Ġ" commons " ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( Throwable :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġget Video Thumbnail ( context : ĠContext , Ġuri : ĠUri ?): ĠBitmap Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Bitmap : ĠBitmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġm Media Metadata Retriever : ĠMedia Metadata Retriever ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Media Metadata Retriever Ġ= ĠMedia Metadata Retriever () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Media Metadata Retriever . set DataSource ( context , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Bitmap Ġ= Ġm Media Metadata Retriever . frame At Time !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( m _ e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Exception Ġin Ġretrieve Video Frame From Video ( String Ġp _ video Path )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġm _ e . message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Media Metadata Retriever Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Media Metadata Retriever . release () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Media Metadata Retriever . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Bitmap ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġcamera : ĠCamera ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġcamera Provider : ĠProcess Camera Provider ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġextensions Manager : ĠExtensions Manager ĊĊĠĠĠ Ġvar Ġimage Capture : ĠImage Capture ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprivate Ġvar Ġpreview : ĠPreview ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġcamera Executor Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠExec utors . new Single Thread Executor () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġvideo Capture : ĠVideo Capture < Recorder >? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġqr Analyzer : ĠQR Analyzer ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġi Analyzer : ĠImage Analysis ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġlatest Uri : ĠUri ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġm Player : ĠT une Player Ġ= ĠT une Player ( m Activity ) ĊĊĠĠĠ Ġprivate Ġval Ġcommon Pref Ġ= Ġwhen Ġ( m Activity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSecure MainActivity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . get SharedPreferences ( COMMON _ SP _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġm Activity . opened Activity At , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠSecure Capture Activity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . get SharedPreferences ( COMMON _ SP _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġm Activity . opened Activity At , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . get SharedPreferences ( COMMON _ SP _ NAME , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmode Pref : ĠSharedPreferences ĊĊĊĠĠĠ Ġvar Ġis Video Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfield Ġ|| Ġm Activity Ġis ĠVideo Capture Activity Ġ|| Ġm Activity Ġis ĠVideo Only Activity ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġis QR Mode Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġval Ġis Flash Available : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcamera !!. camera Info . has Flash Unit () ĊĊĠĠĠ Ġprivate Ġvar Ġmode Text : ĠInt Ġ= ĠDEFAULT _ CAMERA _ MODE ĊĊĠĠĠ Ġvar Ġaspect Ratio Ġ: ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Video Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAs pect Ratio . RATIO _ 1 6 _ 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Pref . getInt ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Key . AS PECT _ RATIO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . AS PECT _ RATIO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġcommon Pref . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Int ( Setting Values . Key . AS PECT _ RATIO , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġlens Facing Ġ= ĠDEFAULT _ LEN S _ F ACING ĊĊĠĠĠ Ġprivate Ġvar Ġcamera Mode Ġ= ĠDEFAULT _ EXTENSION _ MODE ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcamera Selector : ĠCamera Selector ĊĊĠĠĠ Ġvar Ġgrid Type : ĠGrid Type Ġ= ĠSetting Values . Default . GRID _ TYPE ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġcommon Pref . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Int ( Setting Values . Key . GRID , ĠGrid Type . values (). indexOf ( value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġvideo Quality : ĠInt Ġ= ĠSetting Values . Default . VIDEO _ QUAL ITY ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( mode Pref . contains ( video Quality Key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . title To Quality ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode Pref . getString ( video Quality Key , Ġ"") !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . VIDEO _ QUAL ITY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoption Ġ= Ġm Activity . settings Dialog . video Quality Spinner . selected Item Ġas ĠString ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmode Pref . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( video Quality Key , Ġoption ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . commit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġvideo Quality Key : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpf Ġ= Ġif Ġ( lens Facing Ġ== ĠCamera Selector . LEN S _ F ACING _ FRONT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FRONT " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" BACK " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"${ Setting Values . Key . VIDEO _ QUAL ITY }_ $ pf " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġflash Mode : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( image Capture Ġ!= Ġnull ) Ġimage Capture !!. flash Mode Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . FLASH _ MODE ĊĠĠĠĠĠĠĠ Ġset ( flash Mode ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(:: mode Pref . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmode Pref . edit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Int ( Setting Values . Key . FLASH _ MODE , Ġflash Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Capture ?. flash Mode Ġ= Ġflash Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . update Flash Mode () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġfocus Timeout Ġ= Ġ 5 L ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoption Ġ= Ġif Ġ( value Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Off " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ value } s " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġcommon Pref . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( Setting Values . Key . FOCUS _ TIMEOUT , Ġoption ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġenable Camera Sounds : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Activity . settings Dialog . cs Switch . isChecked ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġcommon Pref . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Boolean ( Setting Values . Key . CAMERA _ SO UN DS , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . cs Switch . isChecked Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġrequire Location : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Activity . settings Dialog . loc Toggle . isChecked ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġlocation Ġlistener Ġwasn 't Ġpreviously Ġset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! field ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . location Listener . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . location Listener . stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmode Pref . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Boolean ( Setting Values . Key . GEO _ TAG GING , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . commit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . loc Toggle . isChecked Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġself Illuminate : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmode Pref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Key . SELF _ ILL UM INATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . SELF _ ILL UM INATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġlens Facing Ġ== ĠCamera Selector . LEN S _ F ACING _ FRONT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġmode Pref . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Boolean ( Setting Values . Key . SELF _ ILL UM INATION , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . commit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . self I llum ination Toggle . isChecked Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . self I llum ination () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Pref Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmode Text Ġ= ĠgetCurrent Mode Text () ĊĠĠĠĠĠĠĠ Ġmode Pref Ġ= Ġwhen Ġ( m Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSecure Capture Activity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . get SharedPreferences ( mode Text Ġ+ Ġm Activity . opened Activity At , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSecure MainActivity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . get SharedPreferences ( mode Text Ġ+ Ġm Activity . opened Activity At , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . get SharedPreferences ( mode Text , ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreload Settings () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġpref Ġconfig Ġneeds Ġto Ġbe Ġcreated ĊĠĠĠĠĠĠĠ Ġval Ġs Editor Ġ= Ġmode Pref . edit () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! mode Pref . contains ( Setting Values . Key . FLASH _ MODE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Editor . put Int ( Setting Values . Key . FLASH _ MODE , ĠSetting Values . Default . FLASH _ MODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Video Mode ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! mode Pref . contains ( video Quality Key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . reload Qual ities () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoption Ġ= Ġm Activity . settings Dialog . video Quality Spinner . selected Item Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Editor . putString ( video Quality Key , Ġoption ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode Pref . getString ( video Quality Key , Ġnull )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . reload Qual ities ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! mode Pref . contains ( Setting Values . Key . SELF _ ILL UM INATION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lens Facing Ġ== ĠCamera Selector . LEN S _ F ACING _ FRONT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Editor . put Boolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Key . SELF _ ILL UM INATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . SELF _ ILL UM INATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! mode Pref . contains ( Setting Values . Key . GEO _ TAG GING )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lens Facing Ġ== ĠCamera Selector . LEN S _ F ACING _ FRONT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Editor . put Boolean ( Setting Values . Key . GEO _ TAG GING , ĠSetting Values . Default . GEO _ TAG GING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġs Editor . commit () ĊĊĠĠĠĠĠĠĠ Ġflash Mode Ġ= Ġmode Pref . getInt ( Setting Values . Key . FLASH _ MODE , ĠSetting Values . Default . FLASH _ MODE ) ĊĠĠĠĠĠĠĠ Ġrequire Location Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmode Pref . getBoolean ( Setting Values . Key . GEO _ TAG GING , ĠSetting Values . Default . GEO _ TAG GING ) ĊĠĠĠĠĠĠĠ Ġself Illuminate Ġ= Ġmode Pref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Key . SELF _ ILL UM INATION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . SELF _ ILL UM INATION ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . show Only Re levant Settings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Apply Shared Pref ") ĊĠĠĠ Ġfun Ġload Settings () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġcommon Ġconfig . Ġif Ġit 's Ġnot Ġcreated ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġcommon Pref . edit () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! common Pref . contains ( Setting Values . Key . CAMERA _ SO UN DS )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Boolean ( Setting Values . Key . CAMERA _ SO UN DS , ĠSetting Values . Default . CAMERA _ SO UN DS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! common Pref . contains ( Setting Values . Key . GRID )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIndex Ġfor ĠGrid . values () ĠDefault : ĠNONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Int ( Setting Values . Key . GRID , ĠSetting Values . Default . GRID _ TYPE _ INDEX ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! common Pref . contains ( Setting Values . Key . FOCUS _ TIMEOUT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( Setting Values . Key . FOCUS _ TIMEOUT , ĠSetting Values . Default . FOCUS _ TIMEOUT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! common Pref . contains ( Setting Values . Key . EMP HAS IS _ ON _ QUAL ITY )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Boolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Key . EMP HAS IS _ ON _ QUAL ITY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . EMP HAS IS _ ON _ QUAL ITY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! common Pref . contains ( Setting Values . Key . AS PECT _ RATIO )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Int ( Setting Values . Key . AS PECT _ RATIO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . AS PECT _ RATIO ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġeditor . commit () ĊĊĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . cs Switch . isChecked Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommon Pref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Key . CAMERA _ SO UN DS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . CAMERA _ SO UN DS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġgrid Type Ġ= ĠGrid Type . values ()[ common Pref . getInt ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Key . GRID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . GRID _ TYPE _ INDEX ĊĠĠĠĠĠĠĠ Ġ) ] ĊĊĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . update Grid Toggle UI () ĊĊĠĠĠĠĠĠĠ Ġcommon Pref . getString ( Setting Values . Key . FOCUS _ TIMEOUT , ĠSetting Values . Default . FOCUS _ TIMEOUT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . update Focus Timeout ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( emp hasis Quality ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . cm Radio Group . check ( R . id . quality _ radio ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . cm Radio Group . check ( R . id . latency _ radio ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġaspect Ratio Ġ= Ġcommon Pref . getInt ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Key . AS PECT _ RATIO , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . AS PECT _ RATIO ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġemp hasis Quality : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcommon Pref . getBoolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Key . EMP HAS IS _ ON _ QUAL ITY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSetting Values . Default . EMP HAS IS _ ON _ QUAL ITY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġcommon Pref . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Boolean ( Setting Values . Key . EMP HAS IS _ ON _ QUAL ITY , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetCurrent Mode Text (): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġvp Ġ= Ġif Ġ( is Video Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" VIDEO " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" PH OTO " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ mode Text -$ vp " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Preview () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( latest Uri == null ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Video ( latest Uri !! )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . image Preview . setImage Bitmap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Video Thumbnail ( m Activity , Ġlatest Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( throwable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . image Preview . setImage Bitmap ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . image Preview . setImage URI ( latest Uri ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġlatest Media File : ĠUri ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( latest Uri Ġ!= Ġnull ) Ġreturn Ġlatest Uri ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Activity Ġis ĠSecure MainActivity ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Activity . captured FilePath s . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Uri Ġ= ĠUri . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . captured FilePath s . last () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimage Uri Ġ: ĠUri ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimage Added On Ġ: ĠInt Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Activity Ġ! is ĠVideo Only Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Cursor Ġ= Ġm Activity . content Resolver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Collection Uri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns ._ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . DATE _ AD DED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Media Store . Images . Image Columns . DATE _ AD DED } ĠDESC " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Cursor != null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Cursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Uri Ġ= ĠContent U ris ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with App ended Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Collection Uri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Cursor . getInt ( 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Added On Ġ= Ġimage Cursor . getInt ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Cursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo Cursor Ġ= Ġm Activity . content Resolver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Collection Uri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns ._ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Video Columns . DATE _ AD DED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Media Store . Video . Video Columns . DATE _ AD DED } ĠDESC " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvideo Uri Ġ: ĠUri ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvideo Added On Ġ: ĠInt Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( video Cursor != null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( video Cursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Uri Ġ= ĠContent U ris ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with App ended Id ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Collection Uri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Cursor . getInt ( 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Added On Ġ= Ġvideo Cursor . getInt ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Cursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( image Added On Ġ== Ġ 0 Ġ&& Ġvideo Added On Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Uri Ġ= Ġif Ġ( image Added On > video Added On ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Uri ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Uri ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Uri Ġ= Ġmedia Uri ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Preview () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlatest Uri ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle Flash Mode () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( camera !!. camera Info . has Flash Unit ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġflash Mode Ġ= Ġwhen Ġ( flash Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Capture . FLASH _ MODE _ OFF Ġ-> ĠImage Capture . FLASH _ MODE _ ON ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Capture . FLASH _ MODE _ ON Ġ-> ĠImage Capture . FLASH _ MODE _ AUTO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠImage Capture . FLASH _ MODE _ OFF ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . showMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Flash Ġis Ġunavailable Ġfor Ġthe Ġcurrent Ġmode ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle AspectRatio () Ġ{ ĊĠĠĠĠĠĠĠ Ġaspect Ratio Ġ= Ġif Ġ( aspect Ratio Ġ== ĠAs pect Ratio . RATIO _ 1 6 _ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAs pect Ratio . RATIO _ 4 _ 3 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAs pect Ratio . RATIO _ 1 6 _ 9 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstart Camera ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle Camera Selector () Ġ{ ĊĠĠĠĠĠĠĠ Ġlens Facing Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lens Facing Ġ== ĠCamera Selector . LEN S _ F ACING _ BACK ) ĠCamera Selector . LEN S _ F ACING _ FRONT Ġelse ĠCamera Selector . LEN S _ F ACING _ BACK ĊĠĠĠĠĠĠĠ Ġstart Camera ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinitialize Camera () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( camera Provider Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Camera () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcamera Provider Future Ġ= ĠProcess Camera Provider . getInstance ( m Activity ) ĊĠĠĠĠĠĠĠ Ġval Ġextensions Manager Future Ġ= ĠExtensions Manager . getInstance ( m Activity ) ĊĠĠĠĠĠĠĠ Ġcamera Provider Future . addListener ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Provider Ġ= Ġcamera Provider Future . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(:: extensions Manager . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Camera () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextensions Manager Future . addListener ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextensions Manager Ġ= Ġextensions Manager Future . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Camera () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠContext Compat . get Main Executor ( m Activity )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĠContext Compat . get Main Executor ( m Activity )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠStart Ġthe Ġcamera Ġwith Ġlatest Ġhard Ġconfiguration ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġstart Camera ( forced : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ((! forced Ġ&& Ġcamera Ġ!= Ġnull ) Ġ|| Ġcamera Provider == null ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġupdate Pref Mode () ĊĊĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . R ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġm Activity . display ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ?. rotation Ġ?: Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . window Manager . default Display . rotation ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġdon 't Ġreally Ġhave Ġany Ġoption Ġhere , Ġbut Ġthis Ġinitialization ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġensures Ġthat Ġthe Ġapp Ġdoesn 't Ġbreak Ġlater Ġwhen Ġthe Ġbelow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdeprecated Ġoption Ġgets Ġremoved Ġpost ĠAndroid ĠR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . window Manager . default Display . rotation ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Activity . is Destroyed Ġ|| Ġm Activity . is Finish ing ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġcamera Selector Ġ= ĠCamera Selector . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. require Lens Facing ( lens Facing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠImage Capture . Builder () ĊĊĠĠĠĠĠĠĠ Ġ// ĠTo Ġuse Ġthe Ġlast Ġframe Ġinstead Ġof Ġshowing Ġa Ġblank Ġscreen Ġwhen ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġcamera Ġthat Ġis Ġbeing Ġcurrently Ġused Ġgets Ġun bind ĊĠĠĠĠĠĠĠ Ġm Activity . update Last Frame () ĊĊĠĠĠĠĠĠĠ Ġ// ĠU nb ind / close Ġall Ġother Ġcamera ( s ) Ġ[ if Ġany ] ĊĠĠĠĠĠĠĠ Ġcamera Provider !!. unbind All () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( extensions Manager . is Extension Available ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Provider !! , Ġcamera Selector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Selector Ġ= Ġextensions Manager . getExtension Enabled Camera Selector ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Provider !! , Ġcamera Selector , Ġcamera Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" The Ġcurrent Ġmode Ġisn 't Ġavailable Ġfor Ġthis Ġdevice Ġ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġshow Message ( m Activity , Ġ" The Ġcurrent Ġmode Ġisn 't Ġavailable Ġfor Ġthis Ġdevice ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġuse Case Group Builder Ġ= ĠUse Case Group . Builder () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is QR Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġqr Analyzer Ġ= ĠQR Analyzer ( m Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . start Focus Timer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Analyzer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Analysis . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget Resolution ( Size ( 9 6 0 , Ġ 9 6 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi Analyzer !!. set Analyzer ( camera Executor , Ġqr Analyzer !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Selector Ġ= ĠCamera Selector . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. require Lens Facing ( Camera Selector . LEN S _ F ACING _ BACK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Case Group Builder . add UseCase ( i Analyzer !! ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Video Mode Ġ|| Ġm Activity . requires Video Mode Only ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Capture Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Capture . with Output ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRec order . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Quality Selector ( Quality Selector . of ( video Quality )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Case Group Builder . add UseCase ( video Capture !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Activity . requires Video Mode Only ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Capture Ġ= Ġbuilder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Capture Mode ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( emp hasis Quality ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Capture . CAPTURE _ MODE _ MAX IM IZE _ QUAL ITY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Capture . CAPTURE _ MODE _ MIN IM IZE _ LAT ENCY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget Rotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Capture ?. target Rotation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġrotation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget AspectRatio ( aspect Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Flash Mode ( flash Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Case Group Builder . add UseCase ( image Capture !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpreview Ġ= ĠPreview . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget Rotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreview ?. target Rotation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġrotation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget AspectRatio ( aspect Ratio ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġuse Case Group Builder . add UseCase ( preview !! ) ĊĊĠĠĠĠĠĠĠ Ġpreview !!. set Surface Provider ( m Activity . preview View . surface Provider ) ĊĊĠĠĠĠĠĠĠ Ġm Activity . force Update Orientation Sensor () ĊĊĠĠĠĠĠĠĠ Ġcamera Ġ= Ġcamera Provider !!. bind To Lifecycle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity , Ġcamera Selector , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Case Group Builder . build () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġload Tabs () ĊĊĠĠĠĠĠĠĠ Ġcamera !!. camera Info . zoom State . observe ( m Activity , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . linear Zoom Ġ!= Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . zoom Bar . update Thumb () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġm Activity . zoom Bar . update Thumb ( false ) ĊĊĠĠĠĠĠĠĠ Ġm Activity . ex posure Bar . set Exposure Config ( camera !!. camera Info . ex posure State ) ĊĊĠĠĠĠĠĠĠ Ġm Activity . settings Dialog . torch Toggle . isChecked Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠFocus Ġcamera Ġon Ġtouch / tap ĊĠĠĠĠĠĠĠ Ġm Activity . preview View . setOn Touch Listener ( m Activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsnap Preview () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Activity . config . self Illuminate ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . main Overlay . layout Params Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( m Activity . main Overlay . layout Params Ġas ĠFrame Layout . LayoutParams ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . set Margins ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft Margin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , Ġ// Ġtop Margin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Margin , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ// Ġbottom Margin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanimation : ĠAnimation Ġ= ĠAlpha Animation ( 0 f , Ġ 0 . 8 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation . duration Ġ= ĠPRE VIEW _ SL _ OVER LAY _ D UR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation . fill After Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . main Overlay . setImage Resource ( android . R . color . white ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation . set Animation Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠAnimation . Animation Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( p 0 : ĠAnimation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . main Overlay . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( p 0 : ĠAnimation ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( p 0 : ĠAnimation ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . main Overlay . start Animation ( animation ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanimation : ĠAnimation Ġ= ĠAlpha Animation ( 1 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation . duration Ġ= ĠPRE VIEW _ SNAP _ DURATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation . interpol ator Ġ= ĠLinear Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation . repeat Mode Ġ= ĠAnimation . RE VERSE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . main Overlay . setImage Resource ( android . R . color . black ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimation . set Animation Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠAnimation . Animation Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( p 0 : ĠAnimation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . main Overlay . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( p 0 : ĠAnimation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . main Overlay . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . main Overlay . setImage Resource ( android . R . color . transparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . update Last Frame () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( p 0 : ĠAnimation ?) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . main Overlay . start Animation ( animation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Tabs () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġmodes Ġ= Ġget Available Modes () ĊĠĠĠĠĠĠĠ Ġval Ġc Modes Ġ= Ġm Activity . tab Layout . getAll Modes () ĊĊĠĠĠĠĠĠĠ Ġvar Ġm ae Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġif Ġ( modes . size Ġ== Ġc Modes . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġmodes . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( modes [ index ] Ġ!= Ġc Modes [ index ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ae Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġm ae Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ma e ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Refresh ing Ġtabs ...") ĊĊĠĠĠĠĠĠĠ Ġm Activity . tab Layout . removeAll Tabs () ĊĊĠĠĠĠĠĠĠ Ġmodes . forEach Ġ{ Ġmode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . tab Layout . new Tab (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . tab Layout . add Tab ( it . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text ( mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġmode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ== ĠDEFAULT _ CAMERA _ MODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . select () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Available Modes (): ĠArrayList < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodes Ġ= Ġarray ListOf < Int >() ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Activity Ġ! is ĠSecure MainActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodes . add ( Camera Modes . QR _ SCAN ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( extensions Manager . is Extension Available ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Provider !! , Ġcamera Selector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExtension Mode . N IGHT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodes . add ( Camera Modes . N IGHT _ S IGHT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( extensions Manager . is Extension Available ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Provider !! , Ġcamera Selector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExtension Mode . BO KE H ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodes . add ( Camera Modes . POR TRA IT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( extensions Manager . is Extension Available ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Provider !! , Ġcamera Selector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExtension Mode . HDR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodes . add ( Camera Modes . HDR ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( extensions Manager . is Extension Available ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Provider !! , Ġcamera Selector , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExtension Mode . FACE _ RE TO UCH ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodes . add ( Camera Modes . FACE _ RE TO UCH ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodes . add ( Camera Modes . CAMERA ) ĊĊĠĠĠĠĠĠĠ Ġmodes . add ( Camera Modes . VIDEO ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmodes ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġswitch Mode ( mode Text : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( this . mode Text Ġ== Ġmode Text ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġthis . mode Text Ġ= Ġmode Text ĊĊĠĠĠĠĠĠĠ Ġcamera Mode Ġ= Ġextension Modes . indexOf ( mode Text ) ĊĊĠĠĠĠĠĠĠ Ġm Activity . cancel Focus Timer () ĊĊĠĠĠĠĠĠĠ Ġis QR Mode Ġ= Ġmode Text Ġ== ĠCamera Modes . QR _ SCAN ĊĊĠĠĠĠĠĠĠ Ġis Video Mode Ġ= Ġmode Text Ġ== ĠCamera Modes . VIDEO ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is QR Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . qr Overlay . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . three Buttons . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . cancel Button View . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . preview View . scale Type Ġ= ĠPreview View . Scale Type . FIT _ CENTER ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . qr Overlay . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . three Buttons . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . cancel Button View . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . preview View . scale Type Ġ= ĠPreview View . Scale Type . FIT _ START ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Video Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . capture Button . setImage Resource ( R . drawable . recording ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . cb Text . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . capture Button . setImage Resource ( R . drawable . camera _ sh utter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Activity . timer Duration Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity . cb Text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstart Camera ( true ) ĊĠĠĠ Ġ} Ċ } Ċ