package Ġcom . google . firebase . samples . apps . ml kit . kotlin . autom l Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcom . google . android . gms . tasks . Tasks Ċ import Ġcom . google . firebase . ml . common . Firebase ML Exception Ċ import Ġcom . google . firebase . ml . common . model download . Firebase Model Download Conditions Ċ import Ġcom . google . firebase . ml . common . model download . Firebase Model Manager Ċ import Ġcom . google . firebase . ml . vision . Firebase Vision Ċ import Ġcom . google . firebase . ml . vision . autom l . Firebase Auto ML Local Model Ċ import Ġcom . google . firebase . ml . vision . autom l . Firebase Auto ML Remote Model Ċ import Ġcom . google . firebase . ml . vision . common . Firebase Vision Image Ċ import Ġcom . google . firebase . ml . vision . label . Firebase Vision Image Label Ċ import Ġcom . google . firebase . ml . vision . label . Firebase Vision Image Label er Ċ import Ġcom . google . firebase . ml . vision . label . Firebase Vision On Device Auto ML Image Label er Options Ċ import Ġcom . google . firebase . samples . apps . ml kit . R Ċ import Ġcom . google . firebase . samples . apps . ml kit . common . Camera Image Graphic Ċ import Ġcom . google . firebase . samples . apps . ml kit . common . Frame Metadata Ċ import Ġcom . google . firebase . samples . apps . ml kit . common . Graphic Overlay Ċ import Ġcom . google . firebase . samples . apps . ml kit . common . preference . Preference Utils Ċ import Ġcom . google . firebase . samples . apps . ml kit . kotlin . Vision Processor Base Ċ import Ġcom . google . firebase . samples . apps . ml kit . kotlin . label detector . Label Graphic Ċ import Ġjava . io . IOException Ċ import Ġjava . util . Collections Ċ Ċ /** Ċ Ġ* ĠAuto ML Ġimage Ġlabel er ĠDemo . Ċ Ġ*/ Ċ class ĠAuto ML Image Label er Processor Ġ@ Throws ( Firebase ML Exception :: class ) Ċ constructor ( private Ġval Ġcontext : ĠContext , Ġprivate Ġval Ġmode : ĠMode ) Ġ: ĊĠĠĠ ĠVision Processor Base < List < Firebase Vision Image Label >>() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdetector : ĠFirebase Vision Image Label er ĊĠĠĠ Ġprivate Ġval Ġmodel Downloading Task : ĠTask < Void >? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġdetection Ġmode Ġof Ġthe Ġprocessor . ĠDifferent Ġmodes Ġwill Ġhave Ġdifferent Ġbehavior Ġon Ġwhether Ġor ĊĠĠĠĠ Ġ* Ġnot Ġwaiting Ġfor Ġthe Ġmodel Ġdownload Ġcomplete . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠMode Ġ{ ĊĠĠĠĠĠĠĠ ĠST ILL _ IMAGE , ĊĠĠĠĠĠĠĠ ĠLI VE _ PRE VIEW ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Choice Ġ= ĠPreference Utils . get Auto ML Remote Model Choice ( context ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( model Choice Ġ== Ġcontext . getString ( R . string . pref _ entries _ autom l _ models _ local )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Local Ġmodel Ġused .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Model Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Auto ML Local Model . Builder (). set Asset FilePath (" autom l / manifest . json "). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetector Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Vision . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get On Device Auto ML Image Label er ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Vision On Device Auto ML Image Label er Options . Builder ( local Model ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Confidence Threshold ( 0 F ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Downloading Task Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Remote Ġmodel Ġused .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremote ModelName Ġ= ĠPreference Utils . get Auto ML Remote ModelName ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremote Model Ġ= ĠFirebase Auto ML Remote Model . Builder ( remote ModelName ). build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdownload Conditions Ġ= ĠFirebase Model Download Conditions . Builder (). require Wifi (). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Downloading Task Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Model Manager . getInstance (). download ( remote Model , Ġdownload Conditions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetector Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Vision . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get On Device Auto ML Image Label er ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Vision On Device Auto ML Image Label er Options . Builder ( remote Model ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Confidence Threshold ( 0 F ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetector . close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Exception Ġthrown Ġwhile Ġtrying Ġto Ġclose Ġthe Ġimage Ġlabel er : Ġ$ e ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdetect In Image ( image : ĠFirebase Vision Image ): ĠTask < List < Firebase Vision Image Label >> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( model Downloading Task Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNo Ġdownload Ġtask Ġmeans Ġonly Ġthe Ġlocally Ġbundled Ġmodel Ġis Ġused . ĠModel Ġcan Ġbe Ġused Ġdirectly . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdetector . process Image ( image ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! model Downloading Task . is Complete ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ== ĠMode . LI VE _ PRE VIEW ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Model Ġdownload Ġis Ġin Ġprogress . ĠSkip Ġdetect ing Ġimage .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTasks . for Result ( Collections . emptyList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Model Ġdownload Ġis Ġin Ġprogress . ĠWaiting ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmodel Downloading Task . continue With Task Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ continue With Task Ġprocess Image On Download Complete ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprocess Image On Download Complete ( image ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonSuccess ( ĊĠĠĠĠĠĠĠ Ġoriginal Camera Image : ĠBitmap ?, ĊĠĠĠĠĠĠĠ Ġlabels : ĠList < Firebase Vision Image Label >, ĊĠĠĠĠĠĠĠ Ġframe Metadata : ĠFrame Metadata , ĊĠĠĠĠĠĠĠ Ġgraphic Overlay : ĠGraph ic Overlay ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgraphic Overlay . clear () ĊĠĠĠĠĠĠĠ Ġif Ġ( original Camera Image Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Graphic Ġ= ĠCamera Image Graphic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraphic Overlay , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Camera Image ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgraphic Overlay . add ( image Graphic ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlabel Graphic Ġ= ĠLabel Graphic ( graphic Overlay , Ġlabels ) ĊĠĠĠĠĠĠĠ Ġgraphic Overlay . add ( label Graphic ) ĊĠĠĠĠĠĠĠ Ġgraphic Overlay . post Invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" Label Ġdetection Ġfailed .$ e ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Image On Download Complete ( image : ĠFirebase Vision Image ): ĠTask < List < Firebase Vision Image Label >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( model Downloading Task Ġ!= Ġnull Ġ&& Ġmodel Downloading Task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetector . process Image ( image ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdownloading Error Ġ= Ġ" Error Ġdownloading Ġremote Ġmodel ." ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġdownloading Error , Ġmodel Downloading Task ?. exception ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġdownloading Error , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTasks . for Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException (" Failed Ġto Ġdownload Ġremote Ġmodel .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Downloading Task ?. exception ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" OD Auto ML IL Processor " ĊĠĠĠ Ġ} Ċ } Ċ