package Ġcom . ver iff . sdk . identity . live . ml kit . vision . face _ detection Ċ Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . util . Log Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcom . google . ml kit . vision . common . Input Image Ċ import Ġcom . google . ml kit . vision . face . Face Ċ import Ġcom . google . ml kit . vision . face . Face Detection Ċ import Ġcom . google . ml kit . vision . face . Face Detector Options Ċ import Ġcom . ver iff . sdk . cam er ax . Base Image Analyzer Ċ import Ġcom . ver iff . sdk . cam er ax . Graphic Overlay Ċ import Ġcom . ver iff . sdk . identity . callback . Identity Callback Ċ import Ġjava . io . IOException Ċ Ċ /** Ċ Ġ* ĠFace Ġcontour Ġdetection Ġprocessor Ċ Ġ* Ċ Ġ* Ġ@ property Ġview Ċ Ġ* Ġ@ property Ġidentity Callback Ċ Ġ* Ġ@ constructor ĠCreate Ġempty ĠFace Ġcontour Ġdetection Ġprocessor Ċ Ġ*/ Ċ class ĠFace Contour Detection Processor ( private Ġval Ġview : ĠGraph ic Overlay , Ġprivate Ġval Ġidentity Callback : ĠIdentity Callback < List < Face >>) Ġ: ĊĠĠĠ ĠBase Image Analyzer < List < Face >>() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġreal Time Opts Ġ= ĠFace Detector Options . Builder () ĊĠĠĠĠĠĠĠ Ġ. set Performance Mode ( Face Detector Options . PER FORMANCE _ MODE _ FAST ) ĊĠĠĠĠĠĠĠ Ġ. set Contour Mode ( Face Detector Options . CON TO UR _ MODE _ ALL ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġoverride Ġval Ġgraphic Overlay : ĠGraph ic Overlay ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġview ĊĊĠĠĠ Ġprivate Ġval Ġdetector Ġ= ĠFace Detection . getClient ( real Time Opts ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDetect Ġin Ġimage ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġimage ĊĠĠĠĠ Ġ* Ġ@ return ĠTask < List < Face >> ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdetect In Image ( image : ĠInput Image ): ĠTask < List < Face >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdetector . process ( image ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetector . close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Exception Ġthrown Ġwhile Ġtrying Ġto Ġclose ĠFace ĠDetector : Ġ$ e ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOn Ġsuccess ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġresults ĊĠĠĠĠ Ġ* Ġ@ param Ġgraphic Overlay ĊĠĠĠĠ Ġ* Ġ@ param Ġrect ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonSuccess ( ĊĠĠĠĠĠĠĠ Ġresults : ĠList < Face >, ĊĠĠĠĠĠĠĠ Ġgraphic Overlay : ĠGraph ic Overlay , ĊĠĠĠĠĠĠĠ Ġrect : ĠRect ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġidentity Callback . on Success ( results ) ĊĠĠĠĠĠĠĠ Ġgraphic Overlay . clear () ĊĠĠĠĠĠĠĠ Ġresults . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġface Graphic Ġ= ĠFace Contour Graphic ( graphic Overlay , Ġit , Ġrect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraphic Overlay . add ( face Graphic ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgraphic Overlay . post Invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOn Ġfailure ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġexception ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġidentity Callback . on Failure ( e ) ĊĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" Face ĠDetector Ġfailed .$ e ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Face Detector Processor " ĊĠĠĠ Ġ} Ċ Ċ }