package Ġcom . e ze qu iel j ard im . re cal ibr ated in clin ometer . gauge čĊč Ċ import Ġandroid . content . Content Values č Ċ import Ġandroid . content . Context č Ċ import Ġandroid . content . res . Resources č Ċ import Ġandroid . graphics .* č Ċ import Ġandroid . hardware . Sensor Manager č Ċ import Ġandroid . net . Uri č Ċ import Ġandroid . os . Environment č Ċ import Ġandroid . provider . Media Store č Ċ import Ġandroid . text . Text Paint č Ċ import Ġandroid . util . Attribute Set č Ċ import Ġandroid . util . Log č Ċ import Ġandroid . view . View č Ċ import Ġjava . io . File č Ċ import Ġjava . io . File OutputStream č Ċ import Ġjava . io . OutputStream č Ċ import Ġkotlin . math . abs č Ċ import Ġkotlin . math . pow č Ċ import Ġkotlin . math . sqrt čĊč Ċ class ĠG auge Acceleration Ġ: ĠView Ġ{ čĊĠĠĠ Ġ// Ġholds Ġthe Ġcached Ġstatic Ġpart čĊĠĠĠ Ġprivate Ġvar Ġbackground : ĠBitmap ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġbackground Paint : ĠPaint ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġpoint Paint : ĠPaint ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġri m Paint : ĠPaint ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġtext Paint : ĠText Paint ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġri m Shadow Paint : ĠPaint ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġface Rect : ĠRect F ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġri m Rect : ĠRect F ? Ġ= Ġnull čĊčĊĠĠĠ Ġ// Ġadded Ġby ĠS cott čĊĠĠĠ Ġprivate Ġvar Ġri m Outer Rect : ĠRect F ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġinner R im : ĠRect F ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġinner Face : ĠRect F ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġinner Most Dot : ĠRect F ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġvertical Line : ĠRect F ? Ġ= Ġnull čĊĠĠĠ Ġprivate Ġvar Ġhorizontal Line : ĠRect F ? Ġ= Ġnull čĊčĊĠĠĠ Ġprivate Ġvar Ġx Pos Ġ= Ġ 0 . 0 f čĊĠĠĠ Ġprivate Ġvar Ġy Pos Ġ= Ġ 0 . 0 f čĊĠĠĠ Ġprivate Ġvar Ġdistance Px Ġ= Ġ 0 . 0 f čĊčĊĠĠĠ Ġprivate Ġvar Ġscale X Pos Ġ= Ġ 0 . 0 f čĊĠĠĠ Ġprivate Ġvar Ġscale Y Pos Ġ= Ġ 0 . 0 f čĊĠĠĠ Ġprivate Ġval Ġcolor Ġ= ĠColor . parse Color ("# 2 1 9 6 F 3 ") čĊčĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcurrent Bitmap : ĠBitmap čĊčĊčĊĠĠĠ Ġprivate Ġval Ġseparator Ġ= Ġ"/" čĊĠĠĠ Ġprivate Ġval Ġimage Saved Text Ġ= Ġ" Photo Ġsaved Ġto Ġgallery !" čĊĠĠĠ Ġprivate Ġval Ġdefault Folder Ġ= Ġ" P ictures " čĊčĊĠĠĠ Ġvar Ġis Z oo med In Ġ= Ġtrue čĊčĊĠĠĠ Ġprivate Ġval Ġoriginal Points List : ĠMutable List < Pair < Float , ĠFloat >> Ġ= Ġmutable ListOf () čĊĠĠĠ Ġprivate Ġval Ġscaled Points List : ĠMutable List < Pair < Float , ĠFloat >> Ġ= Ġmutable ListOf () čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġinstance . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġcontext čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) Ġ{ čĊĠĠĠĠĠĠĠ Ġinit () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġinstance . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġcontext čĊĠĠĠĠ Ġ* Ġ@ param Ġattrs čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) Ġ{ čĊĠĠĠĠĠĠĠ Ġinit () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġinstance . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġcontext čĊĠĠĠĠ Ġ* Ġ@ param Ġattrs čĊĠĠĠĠ Ġ* Ġ@ param Ġdef Style čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style ) Ġ{ čĊĠĠĠĠĠĠĠ Ġinit () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġval Ġz oo med Gravity Earth Boundary Ġ= ĠSensor Manager . GR AV ITY _ EAR TH Ġ/ Ġ 8 Ġ// ĠFocus Ġin Ġsmall Ġacceleration Ġchanges čĊĠĠĠ Ġprivate Ġval Ġgravity Earth Boundary Ġ= ĠSensor Manager . GR AV ITY _ EAR TH čĊčĊĠĠĠ Ġprivate Ġfun Ġscale Point ( x : ĠFloat , Ġy : ĠFloat , Ġscale : ĠFloat ): ĠPair < Float , ĠFloat > Ġ{ čĊĠĠĠĠĠĠĠ Ġ// ĠEn force Ġa Ġlimit Ġof Ġ 1 g Ġor Ġ 9 . 8 Ġm / s ^ 2 Ġif Ġz oo med Ġout , Ġor Ġg / 8 Ġif Ġz oo med Ġin čĊĠĠĠĠĠĠĠ Ġvar Ġx S Ġ= Ġx čĊĠĠĠĠĠĠĠ Ġvar Ġy S Ġ= Ġy čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( x S Ġ> Ġscale ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġx S Ġ= Ġscale čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( x S Ġ< Ġ- scale ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġx S Ġ= Ġ- scale čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( y S Ġ> Ġscale ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġy S Ġ= Ġscale čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( y S Ġ< Ġ- scale ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġy S Ġ= Ġ- scale čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġthis . x Pos Ġ= Ġscale X Pos Ġ* Ġ- x S Ġ+ Ġri m Rect !!. center X () čĊĠĠĠĠĠĠĠ Ġthis . y Pos Ġ= Ġscale Y Pos Ġ* Ġy S Ġ+ Ġri m Rect !!. center Y () čĊčĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( this . x Pos , Ġthis . y Pos ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠUpdate Ġthe Ġmeasurements Ġfor Ġthe Ġpoint . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġx čĊĠĠĠĠ Ġ* Ġthe Ġx - axis čĊĠĠĠĠ Ġ* Ġ@ param Ġy čĊĠĠĠĠ Ġ* Ġthe Ġy - axis čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġfun Ġupdate Point ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġoriginal Points List . add ( Pair ( x , Ġy )) čĊĠĠĠĠĠĠĠ Ġval Ġbound Ġ= Ġif Ġ( is Z oo med In ) Ġz oo med Gravity Earth Boundary Ġelse Ġgravity Earth Boundary čĊĠĠĠĠĠĠĠ Ġval Ġscaled Ġ= Ġscale Point ( x , Ġy , Ġbound ) čĊĠĠĠĠĠĠĠ Ġscaled Points List . add ( scaled ) čĊč Ċ // ĠĠĠĠĠĠĠ ĠLog . d (" Es he ", Ġ" Point Ġ(${ this . x Pos }, Ġ${ this . y Pos }") čĊčĊĠĠĠĠĠĠĠ Ġthis . invalidate () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠInitialize Ġthe Ġmembers Ġof Ġthe Ġinstance . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġmetrics Ġ= ĠResources . getSystem (). display Metrics čĊĠĠĠĠĠĠĠ Ġcurrent Bitmap Ġ= ĠBitmap . create Bitmap ( metrics . width Pixels , Ġmetrics . width Pixels , ĠBitmap . Config . ARGB _ 8 8 8 8 ) čĊĠĠĠĠĠĠĠ Ġinit Drawing Tools () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠInitialize Ġthe Ġdrawing Ġrelated Ġmembers Ġof Ġthe Ġinstance . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġinit Drawing Tools () Ġ{ čĊĠĠĠĠĠĠĠ Ġri m Rect Ġ= ĠRect F ( 0 . 1 f , Ġ 0 . 1 f , Ġ 0 . 9 f , Ġ 0 . 9 f ) čĊĠĠĠĠĠĠĠ Ġval Ġbound Ġ= Ġif Ġ( is Z oo med In ) Ġz oo med Gravity Earth Boundary Ġelse Ġgravity Earth Boundary čĊĠĠĠĠĠĠĠ Ġscale X Pos Ġ= Ġ( rim Rect !!. right Ġ- Ġri m Rect !!. left ) Ġ/ Ġ( bound Ġ* Ġ 2 ) čĊĠĠĠĠĠĠĠ Ġscale Y Pos Ġ= Ġ( rim Rect !!. bottom Ġ- Ġri m Rect !!. top ) Ġ/ Ġ( bound Ġ* Ġ 2 ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġinner Ġri m Ġo val čĊĠĠĠĠĠĠĠ Ġinner R im Ġ= ĠRect F ( 0 . 2 5 f , Ġ 0 . 2 5 f , Ġ 0 . 7 5 f , Ġ 0 . 7 5 f ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġinner Ġmost Ġwhite Ġdot čĊĠĠĠĠĠĠĠ Ġinner Most Dot Ġ= ĠRect F ( 0 . 4 9 f , Ġ 0 . 4 9 f , Ġ 0 . 5 1 f , Ġ 0 . 5 1 f ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġlinear Ġgradient Ġis Ġa Ġbit Ġskew ed Ġfor Ġreal ism čĊĠĠĠĠĠĠĠ Ġri m Paint Ġ= ĠPaint () čĊĠĠĠĠĠĠĠ Ġri m Paint !!. flags Ġ= ĠPaint . ANTI _ ALIAS _ FLAG čĊĠĠĠĠĠĠĠ Ġri m Paint !!. color Ġ= ĠColor . GRAY čĊĠĠĠĠĠĠĠ Ġval Ġri m Size Ġ= Ġ 0 . 0 1 f čĊĠĠĠĠĠĠĠ Ġface Rect Ġ= ĠRect F () čĊĠĠĠĠĠĠĠ Ġface Rect ! ![ rim Rect !!. left Ġ+ Ġri m Size , Ġri m Rect !!. top Ġ+ Ġri m Size , Ġri m Rect !!. right Ġ- Ġri m Size ] Ġ= Ġri m Rect !!. bottom Ġ- Ġri m Size čĊčĊĠĠĠĠĠĠĠ Ġtext Paint Ġ= ĠText Paint () čĊĠĠĠĠĠĠĠ Ġtext Paint !!. color Ġ= ĠColor . GRAY čĊĠĠĠĠĠĠĠ Ġtext Paint !!. text Size Ġ= Ġ 0 . 0 3 f čĊĠĠĠĠĠĠĠ Ġtext Paint !!. text Scale X Ġ= Ġ 1 f čĊĠĠĠĠĠĠĠ Ġtext Paint !!. is Linear Text Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġtext Paint !!. is Sub pixel Text Ġ= Ġtrue čĊčĊĠĠĠĠĠĠĠ Ġri m Shadow Paint Ġ= ĠPaint () čĊĠĠĠĠĠĠĠ Ġri m Shadow Paint !!. style Ġ= ĠPaint . Style . FILL čĊĠĠĠĠĠĠĠ Ġri m Shadow Paint !!. is Anti Alias Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġri m Shadow Paint !!. xfer mode Ġ= ĠPort er D uff X fer mode ( Port er D uff . Mode . CLEAR ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġset Ġthe Ġsize Ġof Ġthe Ġoutside Ġwhite Ġwith Ġthe Ġrect angles . čĊĠĠĠĠĠĠĠ Ġ// Ġa Ġ' big ger ' Ġnegative Ġwill Ġincrease Ġthe Ġsize . čĊĠĠĠĠĠĠĠ Ġval Ġri m Outer Size Ġ= Ġ- 0 . 0 4 f čĊĠĠĠĠĠĠĠ Ġri m Outer Rect Ġ= ĠRect F () čĊĠĠĠĠĠĠĠ Ġri m Outer Rect ! ![ rim Rect !!. left Ġ+ Ġri m Outer Size , Ġri m Rect !!. top čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġri m Outer Size , Ġri m Rect !!. right Ġ- Ġri m Outer Size ] Ġ= Ġ( rim Rect !!. bottom čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġri m Outer Size ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġinner Ġri m Ġdeclarations Ġthe Ġblack Ġo val / rect čĊĠĠĠĠĠĠĠ Ġval Ġri m Inner Size Ġ= Ġ 0 . 0 1 f čĊĠĠĠĠĠĠĠ Ġinner Face Ġ= ĠRect F () čĊĠĠĠĠĠĠĠ Ġinner Face ! ![ inner R im !!. left Ġ+ Ġri m Inner Size , Ġinner R im !!. top Ġ+ Ġri m Inner Size , Ġinner R im !!. right Ġ- Ġri m Inner Size ] Ġ= Ġinner R im !!. bottom Ġ- Ġri m Inner Size čĊĠĠĠĠĠĠĠ Ġpoint Paint Ġ= ĠPaint () čĊĠĠĠĠĠĠĠ Ġpoint Paint !!. is Anti Alias Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġpoint Paint !!. color Ġ= ĠColor . RED Ġ// Color . parse Color ("# 2 1 9 6 F 3 ") čĊĠĠĠĠĠĠĠ Ġpoint Paint !!. style Ġ= ĠPaint . Style . FILL _ AND _ ST RO KE čĊčĊĠĠĠĠĠĠĠ Ġbackground Paint Ġ= ĠPaint () čĊĠĠĠĠĠĠĠ Ġbackground Paint !!. is Filter Bitmap Ġ= Ġtrue čĊčĊĠĠĠĠĠĠĠ Ġhorizontal Line Ġ= ĠRect F ( 0 . 1 f , Ġ 0 . 4 9 8 f , Ġ 0 . 9 f , Ġ 0 . 5 0 2 f ) čĊčĊĠĠĠĠĠĠĠ Ġvertical Line Ġ= ĠRect F ( 0 . 4 9 8 f , Ġ 0 . 1 f , Ġ 0 . 5 0 2 f , Ġ 0 . 9 f ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠMeasure Ġthe Ġdevice Ġscreen Ġsize Ġto Ġscale Ġthe Ġcanvas Ġcorrectly . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġwidth Mode Ġ= ĠMeasure Spec . get Mode ( width Measure Spec ) čĊĠĠĠĠĠĠĠ Ġval Ġwidth Size Ġ= ĠMeasure Spec . getSize ( width Measure Spec ) čĊĠĠĠĠĠĠĠ Ġval Ġheight Mode Ġ= ĠMeasure Spec . get Mode ( height Measure Spec ) čĊĠĠĠĠĠĠĠ Ġval Ġheight Size Ġ= ĠMeasure Spec . getSize ( height Measure Spec ) čĊĠĠĠĠĠĠĠ Ġval Ġchosen Width Ġ= Ġchoose Dimension ( width Mode , Ġwidth Size ) čĊĠĠĠĠĠĠĠ Ġval Ġchosen Height Ġ= Ġchoose Dimension ( height Mode , Ġheight Size ) čĊĠĠĠĠĠĠĠ Ġval Ġchosen Dimension Ġ= ĠMath . min ( chosen Width , Ġchosen Height ) čĊĠĠĠĠĠĠĠ Ġset Measured Dimension ( chosen Dimension , Ġchosen Dimension ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠIndic ate Ġthe Ġdesired Ġcanvas Ġdimension . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġmode čĊĠĠĠĠ Ġ* Ġ@ param Ġsize čĊĠĠĠĠ Ġ* Ġ@ return čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġchoose Dimension ( mode : ĠInt , Ġsize : ĠInt ): ĠInt Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( mode Ġ== ĠMeasure Spec . AT _ MO ST Ġ|| Ġmode Ġ== ĠMeasure Spec . EX ACT LY ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// Ġ( mode Ġ== ĠMeasure Spec . UNSPECIFIED ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferred Size čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠIn Ġcase Ġthere Ġis Ġno Ġsize Ġspecified . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ return Ġdefault Ġpreferred Ġsize . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġval Ġpreferred Size : ĠInt čĊĠĠĠĠĠĠĠ Ġprivate Ġget () Ġ= Ġ 3 0 0 čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠDraw Ġthe Ġgauge . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġcanvas čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġdraw Gauge ( canvas : ĠCanvas ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġ// Ġfirst , Ġdraw Ġthe Ġmetal lic Ġbody čĊĠĠĠĠĠĠĠ Ġcanvas . draw O val ( rim Rect !! , Ġri m Paint !! ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġthe Ġri m Ġshadow Ġinside Ġthe Ġface čĊĠĠĠĠĠĠĠ Ġcanvas . draw O val ( face Rect !! , Ġri m Shadow Paint !! ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġthe Ġinner Ġwhite Ġri m Ġcircle čĊĠĠĠĠĠĠĠ Ġcanvas . draw O val ( inner R im !! , Ġri m Paint !! ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġthe Ġinner Ġblack Ġo val čĊĠĠĠĠĠĠĠ Ġcanvas . draw O val ( inner Face !! , Ġri m Shadow Paint !! ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġinner Ġwhite Ġdot čĊĠĠĠĠĠĠĠ Ġcanvas . draw O val ( inner Most Dot !! , Ġri m Paint !! ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġdraw Ġcross čĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( horizontal Line !! , Ġri m Paint !! ) čĊčĊĠĠĠĠĠĠĠ Ġcanvas . draw Rect ( vertical Line !! , Ġri m Paint !! ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġif Ġ( is Z oo med In ) Ġ" G / 8 " Ġelse Ġ" G " čĊĠĠĠĠĠĠĠ Ġcanvas . draw Text ( text , Ġ 0 . 0 4 f , Ġ 0 . 5 1 f , Ġtext Paint !! ) čĊĠĠĠĠĠĠĠ Ġcanvas . draw Text ( text , Ġ 0 . 9 1 f , Ġ 0 . 5 1 f , Ġtext Paint !! ) čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠDraw Ġthe Ġmeasurement Ġpoint . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġcanvas čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġdraw Point ( canvas : ĠCanvas ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġbound Ġ= Ġif Ġ( is Z oo med In ) Ġz oo med Gravity Earth Boundary Ġelse Ġgravity Earth Boundary čĊčĊĠĠĠĠĠĠĠ Ġvar Ġdistance Ġ= Ġ 0 . 0 f čĊĠĠĠĠĠĠĠ Ġval Ġdot Radius Ġ= Ġ 0 . 0 0 4 f čĊčĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġp ) Ġin Ġoriginal Points List . with Index ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . save () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoint Paint !!. color Ġ= Ġcolor čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscaled Ġ= Ġscale Point ( p . first , Ġp . second , Ġbound ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Circle ( scaled . first , Ġscaled . second , Ġdot Radius , Ġpoint Paint !! ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . restore () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprev Point Ġ= Ġscale Point ( original Points List [ index Ġ- Ġ 1 ]. first , Ġoriginal Points List [ index Ġ- Ġ 1 ]. second , Ġbound ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdistance Ġ+= Ġabs ( sqrt (( scaled . first Ġ- Ġprev Point . first ). pow ( 2 ) Ġ+ Ġ( scaled . second Ġ- Ġprev Point . second ). pow ( 2 ))) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġdot Px Value Ġ= Ġ( background ?. width Ġ?: Ġ 0 ) Ġ* Ġdot Radius Ġ// ĠThe Ġsquare Ġis Ġ 1 . 0 f čĊĠĠĠĠĠĠĠ Ġdistance Px Ġ= Ġdistance Ġ/ Ġdot Radius Ġ* Ġdot Px Value čĊčĊĠĠĠĠĠĠĠ Ġ// ĠLog . d (" Es he ", Ġ" Distance : Ġ$ distance , Ġdot Px Value : Ġ$ dot Px Value , Ġdistance Ġin Ġpx : Ġ${ distance Ġ/ Ġdot Radius Ġ* Ġdot Px Value }") čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠDraw Ġthe Ġbackground Ġof Ġthe Ġcanvas . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġcanvas čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġdraw Background ( canvas : ĠCanvas ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ// ĠUse Ġthe Ġcached Ġbackground Ġbitmap . čĊĠĠĠĠĠĠĠ Ġif Ġ( background Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( Companion . tag , Ġ" Background Ġnot Ġcreated ") čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( background !! , Ġ 0 f , Ġ 0 f , Ġbackground Paint ) č Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Es he ", Ġ" draw BG : Ġ${ background ?. width } Ġ, Ġ${ background ?. height }") čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ) Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġnew Canvas Ġ= ĠCanvas ( current Bitmap ) čĊĠĠĠĠĠĠĠ Ġnew Canvas . draw Color ( 0 , ĠPort er D uff . Mode . CLEAR ) čĊčĊĠĠĠĠĠĠĠ Ġdraw Background ( new Canvas ) čĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġwidth . toFloat () čĊĠĠĠĠĠĠĠ Ġnew Canvas . save () čĊĠĠĠĠĠĠĠ Ġnew Canvas . scale ( scale , Ġscale ) čĊĠĠĠĠĠĠĠ Ġdraw Point ( new Canvas ) čĊĠĠĠĠĠĠĠ Ġnew Canvas . restore () čĊčĊĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( current Bitmap , ĠMatrix (), Ġnull ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠIndic ate Ġthe Ġdesired Ġsize Ġof Ġthe Ġcanvas Ġhas Ġchanged . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġoverride Ġfun Ġon Size Changed ( w : ĠInt , Ġh : ĠInt , Ġold w : ĠInt , Ġold h : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠ ĠLog . d ( Companion . tag , Ġ" Size Ġchanged Ġto Ġ" Ġ+ Ġw Ġ+ Ġ" x " Ġ+ Ġh ) čĊĠĠĠĠĠĠĠ Ġre generate Background () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠRe generate Ġthe Ġbackground Ġimage . ĠThis Ġshould Ġonly Ġbe Ġcalled Ġwhen Ġthe Ġsize čĊĠĠĠĠ Ġ* Ġof Ġthe Ġscreen Ġhas Ġchanged . ĠThe Ġbackground Ġwill Ġbe Ġcached Ġand Ġcan Ġbe čĊĠĠĠĠ Ġ* Ġreused Ġwithout Ġneeding Ġto Ġredraw Ġit . čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġre generate Background () Ġ{ čĊĠĠĠĠĠĠĠ Ġ// Ġfree Ġthe Ġold Ġbitmap čĊĠĠĠĠĠĠĠ Ġif Ġ( background Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground !!. recycle () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġbackground Ġ= ĠBitmap . create Bitmap ( width , Ġheight , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . Config . ARGB _ 8 8 8 8 ) čĊĠĠĠĠĠĠĠ Ġval Ġbackground Canvas Ġ= ĠCanvas ( background !! ) čĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġwidth . toFloat () čĊĠĠĠĠĠĠĠ Ġbackground Canvas . scale ( scale , Ġscale ) čĊĠĠĠĠĠĠĠ Ġdraw Gauge ( background Canvas ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġreset Points List () Ġ{ čĊĠĠĠĠĠĠĠ Ġoriginal Points List . clear () čĊĠĠĠĠĠĠĠ Ġscaled Points List . clear () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Distance (): ĠFloat Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġdistance Px čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Q 1 (): ĠFloat Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġscaled Points List . filter Ġ{ Ġit . first Ġ< Ġ 0 . 5 f Ġ&& Ġit . second Ġ< Ġ 0 . 5 f Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġ( filtered . size Ġ/ Ġscaled Points List . size . toFloat ()) Ġ* Ġ 1 0 0 f čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Q 2 (): ĠFloat Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġscaled Points List . filter Ġ{ Ġit . first Ġ>= Ġ 0 . 5 f Ġ&& Ġit . second Ġ< Ġ 0 . 5 f Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġ( filtered . size Ġ/ Ġscaled Points List . size . toFloat ()) Ġ* Ġ 1 0 0 f čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Q 3 (): ĠFloat Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġscaled Points List . filter Ġ{ Ġit . first Ġ< Ġ 0 . 5 f Ġ&& Ġit . second Ġ>= Ġ 0 . 5 f Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġ( filtered . size Ġ/ Ġscaled Points List . size . toFloat ()) Ġ* Ġ 1 0 0 f čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Q 4 (): ĠFloat Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= Ġscaled Points List . filter Ġ{ Ġit . first Ġ>= Ġ 0 . 5 f Ġ&& Ġit . second Ġ>= Ġ 0 . 5 f Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġ( filtered . size Ġ/ Ġscaled Points List . size . toFloat ()) Ġ* Ġ 1 0 0 f čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġzoom Out () Ġ{ čĊĠĠĠĠĠĠĠ Ġis Z oo med In Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġinit Drawing Tools () čĊĠĠĠĠĠĠĠ Ġre generate Background () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġzoom In () Ġ{ čĊĠĠĠĠĠĠĠ Ġis Z oo med In Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġinit Drawing Tools () čĊĠĠĠĠĠĠĠ Ġre generate Background () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġcontent Values (): ĠContent Values Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠContent Values () čĊĠĠĠĠĠĠĠ Ġvalues . put ( Media Store . Images . Media . MIME _ TYPE , Ġ" image / png ") čĊĠĠĠĠĠĠĠ Ġvalues . put ( Media Store . Images . Media . DATE _ AD DED , ĠSystem . currentTimeMillis () Ġ/ Ġ 1 0 0 0 ); čĊĠĠĠĠĠĠĠ Ġreturn Ġvalues čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġsave Image () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġbitmap Copy Ġ= ĠBitmap . create Bitmap ( current Bitmap ) čĊĠĠĠĠĠĠĠ Ġval Ġfolder Name Ġ= Ġ" P ictures " čĊčĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( android . os . Build . VERSION . SDK _ INT Ġ>= Ġ 2 9 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġcontent Values () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . REL ATIVE _ PATH , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Folder Ġ+ Ġseparator Ġ+ Ġfolder Name čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( Media Store . Images . Media . IS _ PENDING , Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠREL ATIVE _ PATH Ġand ĠIS _ PENDING Ġare Ġintroduced Ġin ĠAPI Ġ 2 9 . čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri : ĠUri ? Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . insert ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Image To Stream ( bitmap Copy , Ġcontext . content Resolver . open OutputStream ( uri )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( Media Store . Images . Media . IS _ PENDING , Ġfalse ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . update ( uri , Ġvalues , Ġnull , Ġnull ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirectory Ġ= ĠFile ( Environment . get External Storage Directory (), Ġfolder Name ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget External Storage Directory Ġis Ġdeprecated Ġin ĠAPI Ġ 2 9 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! directory . exists ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory . mkdir s () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= ĠSystem . currentTimeMillis (). toString () Ġ+ Ġ". png " čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Es he ", Ġ" filename Ġ$ fileName ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( directory , ĠfileName ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . createNew File () čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Image To Stream ( bitmap Copy , ĠFileOutputStream ( file )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġcontent Values () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . put ( Media Store . Images . Media . DATA , Ġfile . absolute Path ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ. DATA Ġis Ġdeprecated Ġin ĠAPI Ġ 2 9 čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . content Resolver . insert ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġsave Image To Stream ( bitmap : ĠBitmap , ĠoutputStream : ĠOutputStream ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( output Stream Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . PNG , Ġ 1 0 0 , ĠoutputStream ) čĊĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . close () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtag Ġ= ĠG auge Acceleration :: class . java . simple Name čĊčĊĠĠĠ Ġ} č Ċ }