package Ġcom . private gallery . ak sc orp . private gallery android . Services Ċ Ċ import Ġandroid . app . Intent Service Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context Wrapper Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . os . Messenger Ċ import Ġandroid . util . Log Ċ import Ġandroid . webkit . MimeType Map Ċ import Ġcom . private gallery . ak sc orp . private gallery android . Adapters . holder Width Ċ import Ġcom . private gallery . ak sc orp . private gallery android . Database . Local Database API Ċ import Ġcom . private gallery . ak sc orp . private gallery android . Dialog s . CURRENT _ PROGRESS _ BRO ADCAST _ RECE IVER Ċ import Ġcom . private gallery . ak sc orp . private gallery android . Dialog s . PROGRESS _ BRO ADCAST _ RECE IVER _ TAG Ċ import Ġcom . private gallery . ak sc orp . private gallery android . Ess entials . Image Ċ import Ġcom . private gallery . ak sc orp . private gallery android . P Hash . Similar Photo . getF inger Print Ċ import Ġcom . private gallery . ak sc orp . private gallery android . Utilities . Utilities Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . File Ċ import Ġjava . io . FileNotFoundException Ċ Ċ class ĠLock Images Service Ġ: ĠIntent Service ("") Ġ{ ĊĊĠĠĠ Ġval Ġdb Ġ= ĠLocal Database API ( this ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ?) Ġ= ĠMess enger ( Handler ()). binder ĊĊĠĠĠ Ġoverride Ġfun Ġon Handle Intent ( intent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġused Ġ= Ġintent !!. get Serializable Extra (" images ") Ġas ĠMutable Set < String > ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Album Id Ġ= Ġintent . getLong Extra (" album Id ", Ġ- 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmess enger Ġ= Ġintent . get Parcelable Extra (" messenger ") Ġas ĠMess enger ĊĊĠĠĠĠĠĠĠ Ġval Ġlog File Ġ= ĠFile ( Context Wrapper ( base Context ). files Dir . path Ġ+ Ġ"/ Images ") ĊĠĠĠĠĠĠĠ Ġlog File . mkdir () ĊĊĠĠĠĠĠĠĠ Ġval Ġfiles Count Ġ= Ġused . size . toDouble () ĊĠĠĠĠĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġis Success Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( el Ġin Ġused ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbm Options Ġ= ĠBitmap Factory . Options () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// options . in Just Decode Bounds Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse ( el ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Factory . decode Stream ( content Resolver . open InputStream ( uri )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextension Ġ= ĠgetFile Extension ( this , Ġuri ) Ġ?: Ġthrow ĠException (" Cannot Ġdefine Ġfile Ġextension ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġbitmap Ġ= ĠBitmap Factory . decode File ( el , Ġoptions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Height Ġ= Ġbitmap . height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Width Ġ= Ġbitmap . width ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbm Options . in Sample Size Ġ= ĠUtilities (). calculate In Sample Size ( image Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder Width ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . JPEG , Ġ 7 0 , Ġout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcover Ġ= ĠBitmap Factory . decode Stream ( ByteArray InputStream ( out . toByteArray ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbm Options ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġdb . insert Image In Database ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( local Path Ġ= Ġel , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Id Ġ= Ġcurrent Album Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextension Ġ= Ġextension , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġimage Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġimage Width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Time Ġ= ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinger Print Ġ= Ġget F inger Print ( bitmap ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtilities . write Bitmap ( Context Wrapper ( base Context ). files Dir . path Ġ+ Ġ"/ Cover s /", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcover !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ id .$ extension ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUtilities . move File ( this , Ġuri , Ġlog File . absolute Path , Ġ"$ id .$ extension ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ("", Ġe . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Success Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsent Progress To Receiver (( counter Ġ/ Ġfiles Count Ġ* Ġ 1 0 0 . 0 ). toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĠMessage . obtain () ĊĠĠĠĠĠĠĠ Ġmsg . arg 1 Ġ= Ġcurrent Album Id . toInt () ĊĠĠĠĠĠĠĠ Ġmsg . arg 2 Ġ= Ġis Success ĊĠĠĠĠĠĠĠ Ġmess enger . send ( msg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetFile Extension ( context : ĠContext , Ġuri : ĠUri ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( uri . scheme . equals ( Content Resolver . SCHEME _ CONTENT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmime Ġ= ĠMime TypeMap . get Singleton () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmime . getExtension From MimeType ( context . content Resolver . getType ( uri )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMime TypeMap . getFile Extension From Url ( Uri . from File ( File ( uri . path Ġ?: Ġthrow ĠException (" Cannot Ġdefine Ġfile Ġextension ")) ). toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsent Progress To Receiver ( progress : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠPROG RESS _ BRO ADCAST _ RECE IVER _ TAG ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( CURRENT _ PROGRESS _ BRO ADCAST _ RECE IVER , Ġprogress ) ĊĠĠĠĠĠĠĠ Ġsend Broadcast ( intent ) ĊĠĠĠ Ġ} Ċ Ċ }