/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . example . android . camera 2 . slow mo Ċ Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ Ċ class ĠCamera Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontainer : ĠFrame Layout ĊĠĠĠ Ġlateinit Ġvar Ġserver Handler : ĠServer Handler ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ camera ) ĊĠĠĠĠĠĠĠ Ġcontainer Ġ= ĠfindViewById ( R . id . fragment _ container ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġintent !!. extras ĊĠĠĠĠĠĠĠ Ġval Ġlaptop Port Ġ= Ġbundle ?. getString (" port ") ?. toInt () Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( laptop Port Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Handler Ġ= ĠServer Handler ( laptop Port ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠAdd Ġretry Ġor Ġapp Ġfail Ġif Ġno Ġconnection Ġestablished ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Handler . start Connection () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( Content Values . TAG , Ġ" No Ġport Ġinformation Ġreceived Ġform Ġserver . ĠUnable Ġto Ġestablish Ġconnection .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġ// ĠBefore Ġsetting Ġfull Ġscreen Ġflags , Ġwe Ġmust Ġwait Ġa Ġbit Ġto Ġlet ĠUI Ġset tle ; Ġotherwise , Ġwe Ġmay ĊĠĠĠĠĠĠĠ Ġ// Ġbe Ġtrying Ġto Ġset Ġapp Ġto Ġimm ers ive Ġmode Ġbefore Ġit 's Ġready Ġand Ġthe Ġflags Ġdo Ġnot Ġstick ĊĠĠĠĠĠĠĠ Ġcontainer . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . system Ui Visibility Ġ= ĠFLAGS _ FULL SCREEN ĊĠĠĠĠĠĠĠ Ġ}, ĠI MM ER SIVE _ FLAG _ TIMEOUT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO : ĠAs Ġthis Ġget 's Ġcalled Ġafter Ġcamera Ġinterface Ġis Ġfinished Ġcapturing , Ġthe ĠUI Ġof Ġapp Ġfinishes . ĊĠĠĠ Ġ// ĠThe Ġresults Ġare Ġcalculated Ġwhile Ġthe Ġapp ĠUI Ġcloses . ĠAdd Ġa ĠUI Ġuntil Ġthe Ġprocessing Ġcompletes . ĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . P ) ĊĠĠĠ Ġinternal Ġfun Ġanalyze ( file Uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvideo Processor Ġ= ĠVideo Processor () ĊĠĠĠĠĠĠĠ Ġval Ġlag Calculator Ġ= ĠL ag Calculator () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! video Processor . create Video Reader ( application Context , Ġfile Uri )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġserver Timestamp s Ġ= Ġserver Handler . download Server TimeStamp s () ĊĊĠĠĠĠĠĠĠ Ġval Ġresults O cr Ġ= Ġvideo Processor . do O cr () ĊĊĠĠĠĠĠĠĠ Ġlag Calculator . calculate Lag ( server Timestamp s , Ġvideo Processor . video Frames Timestamp , Ġresults O cr , Ġserver Handler . get Sync Offset ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĠCombin ation Ġof Ġall Ġflags Ġrequired Ġto Ġput Ġactivity Ġinto Ġimm ers ive Ġmode Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFLAGS _ FULL SCREEN Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LOW _ PROFILE Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView . SYSTEM _ UI _ FLAG _ IM MER SIVE _ STICK Y ĊĊĠĠĠĠĠĠĠ Ġ/** ĠM illiseconds Ġused Ġfor ĠUI Ġanimations Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAN IM ATION _ FAST _ M ILL IS Ġ= Ġ 5 0 L ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAN IM ATION _ S LOW _ M ILL IS Ġ= Ġ 1 0 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠI MM ER SIVE _ FLAG _ TIMEOUT Ġ= Ġ 5 0 0 L ĊĠĠĠ Ġ} Ċ } Ċ