package Ġkr . ac . sn u . hc il . om n itr ack . ui . components . common . sound Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġkr . ac . sn u . hc il . android . common . dip Size Ċ import Ġkr . ac . sn u . hc il . om n itr ack . R Ċ import Ġkr . ac . sn u . hc il . om n itr ack . ui . components . visualization . components . scales . Numeric Scale Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġyo un gh ok im Ġon Ġ 2 0 1 6 . Ġ 9 . Ġ 2 8 .. Ċ Ġ*/ Ċ class ĠAudio Recorder ProgressBar Ġ: ĠView Ġ{ ĊĊĠĠĠ Ġinterface ĠAmp litude Timeline Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġamplitude Timeline : ĠList < Pair < Float , ĠInt >> ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġamplitude Timeline Provider : ĠAmp litude Timeline Provider ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġscale : ĠNumeric Scale ĊĊĠĠĠ Ġprivate Ġval Ġrender Area Rect : ĠRect F Ġ= ĠRect F () ĊĠĠĠ Ġprivate Ġval Ġprog ressed Area Rect : ĠRect F Ġ= ĠRect F () ĊĊĠĠĠ Ġprivate Ġval Ġbackground Paint : ĠPaint ĊĊĠĠĠ Ġprivate Ġval Ġcenter Line Paint : ĠPaint ĊĊĠĠĠ Ġprivate Ġval Ġvolume Line Paint : ĠPaint ĊĊĠĠĠ Ġprivate Ġval Ġprog ressed Area Paint : ĠPaint ĊĊĠĠĠ Ġvar Ġcurrent Progress Ratio : ĠFloat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Progress Area Rect Size () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) ĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġscale Ġ= ĠNumeric Scale (). set Domain ( 0 f , Ġ 1 f , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġbackground Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġbackground Paint . color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠ Ġbackground Paint . alpha Ġ= Ġ 1 5 ĊĊĠĠĠĠĠĠĠ Ġcenter Line Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠĠĠĠĠ Ġcenter Line Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġcenter Line Paint . alpha Ġ= Ġ 5 0 ĊĊĊĠĠĠĠĠĠĠ Ġprog ressed Area Paint Ġ= ĠPaint () ĊĠĠĠĠĠĠĠ Ġprog ressed Area Paint . style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ Ġprog ressed Area Paint . color Ġ= ĠContext Compat . getColor ( context , ĠR . color . color Point ed ) ĊĠĠĠĠĠĠĠ Ġprog ressed Area Paint . alpha Ġ= Ġ 1 5 0 ĊĊĠĠĠĠĠĠĠ Ġvolume Line Paint Ġ= ĠPaint ( Paint . ANTI _ ALIAS _ FLAG ) ĊĠĠĠĠĠĠĠ Ġvolume Line Paint . style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ Ġvolume Line Paint . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠ Ġvolume Line Paint . alpha Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġvolume Line Paint . stroke Width Ġ= Ġdip Size ( context , Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( render Area Rect , Ġbackground Paint ) ĊĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( prog ressed Area Rect , Ġprog ressed Area Paint ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġx : ĠFloat ĊĠĠĠĠĠĠĠ Ġvar Ġvolume Length : ĠFloat ĊĠĠĠĠĠĠĠ Ġif Ġ( amplitude Timeline Provider Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( volume Point Ġin Ġamplitude Timeline Provider !!. amplitude Timeline ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġscale [ volume Point . first ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvolume Length Ġ= Ġrender Area Rect . height () Ġ/ Ġ 2 Ġ* ĠMath . min ( 0 . 9 f , Ġ( volume Point . second . toFloat () Ġ/ Ġ 8 0 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( x , Ġrender Area Rect . center Y () Ġ- Ġvolume Length , Ġx , Ġrender Area Rect . center Y () Ġ+ Ġvolume Length , Ġvolume Line Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( render Area Rect . left , Ġrender Area Rect . center Y (), Ġrender Area Rect . right , Ġrender Area Rect . center Y (), Ġcenter Line Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Progress Area Rect Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġprog ressed Area Rect . set ( render Area Rect . left , Ġrender Area Rect . top , Ġscale [ current Progress Ratio ], Ġrender Area Rect . bottom ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Layout ( changed , Ġleft , Ġtop , Ġright , Ġbottom ) ĊĠĠĠĠĠĠĠ Ġif Ġ( changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale . set Real Coord Range ( padding Left . toFloat (), Ġ( right Ġ- Ġleft Ġ- Ġpadding Right ). toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Area Rect . set ( padding Left . toFloat (), Ġpadding Top . toFloat (), Ġ( right Ġ- Ġleft Ġ- Ġpadding Right ). toFloat (), Ġ( bottom Ġ- Ġtop Ġ- Ġpadding Bottom ). toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Progress Area Rect Size () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġamplitude Timeline Provider Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġcurrent Progress Ratio Ġ= Ġ 0 f ĊĠĠĠ Ġ} Ċ }