package Ġcom . google . firebase . example . test lab . kotlin Ċ Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġcom . google . android . libraries . cloud testing . screenshots . Screen Shot ter Ċ import Ġjava . io . FileNotFoundException Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Environment () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġf tl _ check _ env ] ĊĠĠĠĠĠĠĠ Ġval Ġtest Lab Setting Ġ= ĠSettings . System . getString ( content Resolver , Ġ" firebase . test . lab ") ĊĠĠĠĠĠĠĠ Ġif Ġ(" true " Ġ== Ġtest Lab Setting ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġsomething Ġwhen Ġrunning Ġin ĠTest ĠLab ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġf tl _ check _ env ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgame Check Intent () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġf tl _ game _ check _ intent ] ĊĠĠĠĠĠĠĠ Ġval Ġlaunch Intent Ġ= Ġintent ĊĠĠĠĠĠĠĠ Ġif Ġ( launch Intent . action Ġ== Ġ" com . google . intent . action . TEST _ LOOP ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscenario Ġ= Ġlaunch Intent . getInt Extra (" scenario ", Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCode Ġto Ġhandle Ġyour Ġgame Ġloop Ġhere ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġf tl _ game _ check _ intent ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgame Finish () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġyour Activity Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġf tl _ game _ finish ] ĊĠĠĠĠĠĠĠ Ġyour Activity . finish () ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġf tl _ game _ finish ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgame OutputFile () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġf tl _ game _ output _ file ] ĊĠĠĠĠĠĠĠ Ġval Ġlaunch Intent Ġ= Ġintent ĊĠĠĠĠĠĠĠ Ġval Ġlog File Ġ= Ġlaunch Intent . data ĊĠĠĠĠĠĠĠ Ġlog File ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Log Ġfile Ġ${ it . encoded Path }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġf tl _ game _ output _ file ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( FileNotFoundException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġgame Output FileDescriptor () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġf tl _ game _ output _ fd ] ĊĠĠĠĠĠĠĠ Ġval Ġlaunch Intent Ġ= Ġintent ĊĠĠĠĠĠĠĠ Ġval Ġlog File Ġ= Ġlaunch Intent . data ĊĠĠĠĠĠĠĠ Ġvar Ġfd Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġlog File ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Log Ġfile Ġ${ it . encoded Path }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfd Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Resolver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Asset FileDescriptor ( log File , Ġ" w ") !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. parcel FileDescriptor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠC ++ Ġcode Ġinvoked Ġhere . ĊĠĠĠĠĠĠĠ Ġ// Ġnative _ function ( fd ); ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġf tl _ game _ output _ fd ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgame Scenario () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġf tl _ game _ scenario ] ĊĠĠĠĠĠĠĠ Ġval Ġlaunch Intent Ġ= Ġintent ĊĠĠĠĠĠĠĠ Ġval Ġscenario Ġ= Ġlaunch Intent . getInt Extra (" scenario ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġf tl _ game _ scenario ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtake Screenshot () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġf tl _ take _ screenshot ] ĊĠĠĠĠĠĠĠ ĠScreen Shot ter . take Screenshot (" main _ screen _ 2 ", Ġthis Ġ/* Ġactivity Ġ*/) ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġf tl _ take _ screenshot ] ĊĠĠĠ Ġ} Ċ } Ċ