package Ġ` in `. the tech guru . music logger . music logger . data . model _ classes Ċ Ċ import Ġandroid . media . Media Metadata Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġab ami Ġon Ġ 2 3 - Feb - 1 8 . Ċ Ġ* Ġcustom Ġmodel Ġclass Ġwhich Ġwill Ġbe Ġused Ġto Ġkeep Ġtrack Ġof Ġcurrently Ġplaying Ġmedia Ċ Ġ*/ Ċ data Ġclass ĠMedia Session MetaData ( var Ġpackage _ name : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, var Ġtitle : String Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġvar Ġartist : String Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġvar Ġalbum : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġvar Ġgenre : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġvar Ġtotal _ duration : ĠLong Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġvar Ġstarted _ playing _ at : ĠLong Ġ= Ġ 0 L // custom Ġfield Ġtried Ġto Ġgenerate Ġfrom Ġmedia Ġsession Ġcallbacks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġvar Ġapprox _ play ed _ for : ĠLong Ġ= Ġ 0 L Ġ// custom Ġfield Ġtried Ġto Ġgenerate Ġfrom Ġmedia Ġsession Ġcallbacks ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ { ĊĊĠĠĠ Ġval ĠMIN IMUM _ DURATION _ FOR _ VALID _ RECORD : ĠLong Ġ= Ġ 2 0 0 0 0 ĠĠ Ġ// Ġrecords Ġless Ġthan Ġ 2 0 Ġseconds Ġinvalid ĊĠĠĠ Ġ/* ĊĠĠĠ ĠInit ially Ġbuild Ġthe Ġobject Ġby Ġ Ġraw Ġmedi amet adata Ġobject ĊĠĠĠ ĠAfter Ġthat Ġstart Ġtime Ġand Ġtime Ġfor Ġwhich Ġmedia Ġwas Ġplayed Ġwill Ġbe Ġde duced Ġby Ġnotification Ġlistener Ġand Ġsc ro bb ler Ġservice ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( meta _ data : ĠMedia Metadata , Ġpackage _ name : ĠString ): this (){ ĊĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġmeta _ data . getString ( Media Metadata . METADATA _ KEY _ TITLE )+ "" ĊĠĠĠĠĠĠĠ Ġthis . artist Ġ= Ġmeta _ data . getString ( Media Metadata . METADATA _ KEY _ AR TI ST )+ "" ĊĠĠĠĠĠĠĠ Ġif ( artist . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . artist Ġ= Ġmeta _ data . getString ( Media Metadata . METADATA _ KEY _ AL BU M _ AR TI ST ) Ġ+ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . album Ġ= Ġmeta _ data . getString ( Media Metadata . METADATA _ KEY _ AL BU M )+ "" ĊĠĠĠĠĠĠĠ Ġthis . genre Ġ= Ġmeta _ data . getString ( Media Metadata . METADATA _ KEY _ GEN RE )+ "" ĊĠĠĠĠĠĠĠ Ġthis . total _ duration Ġ= Ġmeta _ data . getLong ( Media Metadata . METADATA _ KEY _ DURATION ) ĊĠĠĠĠĠĠĠ Ġthis . started _ playing _ at Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġthis . package _ name Ġ= Ġpackage _ name + "" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġset Ġapproximate Ġplay Ġtime Ġbefore Ġpushing Ġrecord Ġto ĠDB ĊĠĠĠĠ Ġ* ĠIts Ġdone Ġby Ġsubtract ing Ġcurrent Ġtime Ġfrom Ġthe Ġtime Ġwhen Ġmedia Ġwas Ġstarted ĊĠĠĠĠ Ġ* ĠIt Ġis Ġapproximate Ġand ĠI Ġneed Ġto Ġfigure Ġout Ġway Ġto Ġincrease Ġits Ġaccuracy ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Approx Play Time (){ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent _ time Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( current _ time . minus ( started _ playing _ at )) Ġ>= Ġtotal _ duration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapprox _ play ed _ for Ġ= Ġtotal _ duration ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapprox _ play ed _ for Ġ= Ġcurrent _ time . minus ( started _ playing _ at ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġsimple Ġsanit ary Ġcheck Ġto Ġmake Ġsure ĠArtist Data Ġis Ġgood Ġenough Ġto Ġbe Ġput Ġin Ġdb ĊĠĠĠ Ġ@ todo Ġref ine Ġthis Ġlater ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠisValid Record (): ĠBoolean { ĊĠĠĠĠĠĠĠ Ġset Approx Play Time () ĊĠĠĠĠĠĠĠ Ġreturn Ġ!( artist . isEmpty () Ġ|| Ġ( total _ duration <= 0 Ġ&& Ġapprox _ play ed _ for Ġ< ĠMIN IMUM _ DURATION _ FOR _ VALID _ RECORD )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ title Ġ: Ġ$ artist Ġ: ĠAppro x Ġplayed Ġfor Ġ: Ġ$ approx _ play ed _ for " ĊĠĠĠ Ġ} Ċ }