Site icon C1CTech

Android Step Counting Application in kotlin

&NewLine;<p>In this post&comma; we will create a basic step counting application using a <span style&equals;"color&colon; &num;008000&semi;"><strong>step counter sensor<&sol;strong><&sol;span>&period;<&sol;p> &NewLine; &NewLine; &NewLine; &NewLine;<div class&equals;"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex"> &NewLine;<div class&equals;"wp-block-button"><a class&equals;"wp-block-button&lowbar;&lowbar;link has-white-color has-text-color has-background" style&equals;"background-color&colon; &num;032179&semi;" href&equals;"https&colon;&sol;&sol;github&period;com&sol;arunk7839&sol;StepsCountApp"><strong>DOWNLOAD CODE<&sol;strong><&sol;a><&sol;div> &NewLine;<&sol;div> &NewLine;<p><amp-youtube layout&equals;"responsive" width&equals;"1200" height&equals;"675" data-videoid&equals;"p1o-r-6H9ks" title&equals;"Android Step Counting Application in kotlin"><a placeholder href&equals;"https&colon;&sol;&sol;youtu&period;be&sol;p1o-r-6H9ks"><img src&equals;"https&colon;&sol;&sol;i&period;ytimg&period;com&sol;vi&sol;p1o-r-6H9ks&sol;hqdefault&period;jpg" layout&equals;"fill" object-fit&equals;"cover" alt&equals;"Android Step Counting Application in kotlin"><&sol;a><&sol;amp-youtube><&sol;p> &NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Step counter sensor<&sol;strong><&sol;span><&sol;h4> &NewLine;<ul> &NewLine;<li>The step counter sensor returns the number of steps taken by the user since the last reboot while the sensor was activated&period;<&sol;li> &NewLine;<li>It is ideal for fitness tracking applications&period; &NewLine; &NewLine;<&sol;li> &NewLine;<li>The value is returned as a float and is reset to zero only on a system reboot&period;<&sol;li> &NewLine;<li>This sensor requires permission <span style&equals;"color&colon; &num;0000ff&semi;"><span style&equals;"color&colon; &num;0000ff&semi;"><strong>android&period;permission&period;ACTIVITY&lowbar;RECOGNITION <&sol;strong><&sol;span>which <&sol;span>allows an application to recognize the physical activity&period;<&sol;li> &NewLine;<&sol;ul> &NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Creating new project<&sol;strong><&sol;span><&sol;h4> &NewLine;<p>1 &period; Create a new project by going to <span style&equals;"color&colon; &num;008000&semi;"><strong>File &Implies; New Android Project<&sol;strong><&sol;span>&comma; select <strong><span style&equals;"color&colon; &num;008000&semi;">Empty<&sol;span><&sol;strong> Activity&comma; provide app name&comma; select language to <strong><span style&equals;"color&colon; &num;008000&semi;">kotlin<&sol;span><&sol;strong> and then finally click on <strong><span style&equals;"color&colon; &num;008000&semi;">finish<&sol;span><&sol;strong>&period;<&sol;p> &NewLine;<h5><strong><span style&equals;"color&colon; &num;000080&semi;">Adding Permission<&sol;span><&sol;strong><&sol;h5> &NewLine;<p><span style&equals;"color&colon; &num;000000&semi;">2 &period; Open the <strong><span style&equals;"color&colon; &num;008000&semi;">AndroidManifest&period;xml<&sol;span><&sol;strong> file and add the below permission above application tag&period;<&sol;span><&sol;p> &NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;"> AndroidManifest&period;xml<&sol;span><&sol;strong><&sol;p> &NewLine;<p>For app targets Android 9 &lpar;API level 28&rpar; or below&comma;<&sol;p> &NewLine;<ul> &NewLine;<li>Add the permission to the manifest file&period;<&sol;li> &NewLine;<&sol;ul> &NewLine;<pre>&lt&semi;uses-permission android&colon;name&equals;"android&period;permission&period;ACTIVITY&lowbar;RECOGNITION"&sol;&gt&semi;<&sol;pre> &NewLine;<p>For app targets Android 10 &lpar;API level 29&rpar; or higher&comma; we must request permission from the user at runtime&comma; and add the above permission in the application manifest file&colon;<&sol;p> &NewLine;<h6><span style&equals;"color&colon; &num;000080&semi;"><strong>Request permission at runtime<&sol;strong><&sol;span><&sol;h6> &NewLine;<ul> &NewLine;<li>Check if the permission is granted&colon;<&sol;li> &NewLine;<&sol;ul> &NewLine;<pre>if &lpar;ContextCompat&period;checkSelfPermission&lpar;thisActivity&comma; Manifest&period;permission&period;ACTIVITY&lowbar;RECOGNITION&rpar;<br &sol;>&excl;&equals; PackageManager&period;PERMISSION&lowbar;GRANTED&rpar; &lbrace;<br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol; Permission is not granted<&sol;span><&sol;strong><br &sol;>&rcub;<&sol;pre> &NewLine;<ul> &NewLine;<li>If permission isn&&num;8217&semi;t already granted&comma; request the permission&colon;<&sol;li> &NewLine;<&sol;ul> &NewLine;<pre>if &lpar;Build&period;VERSION&period;SDK&lowbar;INT &gt&semi;&equals; Build&period;VERSION&lowbar;CODES&period;Q&rpar; &lbrace;<br &sol;> ActivityCompat&period;requestPermissions&lpar;<br &sol;> this&comma;<br &sol;> arrayOf&lpar;Manifest&period;permission&period;ACTIVITY&lowbar;RECOGNITION&rpar;&comma;<br &sol;> ACTIVITY&lowbar;RECOGNITION&lowbar;REQUEST&lowbar;CODE<br &sol;> &rpar;<br &sol;>&rcub;<&sol;pre> &NewLine;<h5><strong><span style&equals;"color&colon; &num;000080&semi;">The Layout File <&sol;span><&sol;strong><&sol;h5> &NewLine;<p>3 &period; The below layout file contains two textviews in which tv&lowbar;stepsTaken textview&comma; shows the no of steps taken by the user&period;<&sol;p> &NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>activity&lowbar;main&period;xml<&sol;strong><&sol;span><&sol;p> &NewLine;<pre>&lt&semi;&quest;xml version&equals;"1&period;0" encoding&equals;"utf-8"&quest;&gt&semi;<br &sol;>&lt&semi;androidx&period;constraintlayout&period;widget&period;ConstraintLayout xmlns&colon;android&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res&sol;android"<br &sol;> xmlns&colon;app&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;apk&sol;res-auto"<br &sol;> xmlns&colon;tools&equals;"http&colon;&sol;&sol;schemas&period;android&period;com&sol;tools"<br &sol;> android&colon;layout&lowbar;width&equals;"match&lowbar;parent"<br &sol;> android&colon;layout&lowbar;height&equals;"match&lowbar;parent"<br &sol;> tools&colon;context&equals;"&period;MainActivity"&gt&semi;<br &sol;><br &sol;> &lt&semi;RelativeLayout<br &sol;> android&colon;layout&lowbar;width&equals;"wrap&lowbar;content"<br &sol;> android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"<br &sol;> android&colon;background&equals;"&commat;drawable&sol;background"<br &sol;> android&colon;padding&equals;"20dp"<br &sol;> app&colon;layout&lowbar;constraintBottom&lowbar;toBottomOf&equals;"parent"<br &sol;> app&colon;layout&lowbar;constraintEnd&lowbar;toEndOf&equals;"parent"<br &sol;> app&colon;layout&lowbar;constraintHorizontal&lowbar;bias&equals;"0&period;5"<br &sol;> app&colon;layout&lowbar;constraintStart&lowbar;toStartOf&equals;"parent"<br &sol;> app&colon;layout&lowbar;constraintTop&lowbar;toTopOf&equals;"parent"&gt&semi;<br &sol;><br &sol;> &lt&semi;TextView<br &sol;> android&colon;id&equals;"&commat;&plus;id&sol;steps"<br &sol;> android&colon;layout&lowbar;width&equals;"wrap&lowbar;content"<br &sol;> android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"<br &sol;> android&colon;layout&lowbar;centerHorizontal&equals;"true"<br &sol;> android&colon;text&equals;"Steps"<br &sol;> android&colon;textColor&equals;"&commat;color&sol;black"<br &sol;> android&colon;textSize&equals;"45sp" &sol;&gt&semi;<br &sol;><br &sol;> &lt&semi;TextView<br &sol;> android&colon;id&equals;"&commat;&plus;id&sol;tv&lowbar;stepsTaken"<br &sol;> android&colon;layout&lowbar;width&equals;"wrap&lowbar;content"<br &sol;> android&colon;layout&lowbar;height&equals;"wrap&lowbar;content"<br &sol;> android&colon;layout&lowbar;below&equals;"&commat;id&sol;steps"<br &sol;> android&colon;layout&lowbar;centerHorizontal&equals;"true"<br &sol;> android&colon;text&equals;"0"<br &sol;> android&colon;textColor&equals;"&commat;color&sol;black"<br &sol;> android&colon;textSize&equals;"35sp" &sol;&gt&semi;<br &sol;><br &sol;> &lt&semi;&sol;RelativeLayout&gt&semi;<br &sol;><br &sol;>&lt&semi;&sol;androidx&period;constraintlayout&period;widget&period;ConstraintLayout&gt&semi;<&sol;pre> &NewLine;<p>4 &period; Create an instance of the default<span style&equals;"color&colon; &num;0000ff&semi;"><strong> step counter sensor <&sol;strong><&sol;span>and <span style&equals;"color&colon; &num;0000ff&semi;"><strong>sensorManager<&sol;strong><&sol;span> &lpar;lets you access the device&&num;8217&semi;s sensors&rpar; &colon;<&sol;p> &NewLine;<pre><strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;initializing sensorManager instance<&sol;span><&sol;strong><br &sol;>sensorManager &equals; getSystemService&lpar;Context&period;SENSOR&lowbar;SERVICE&rpar; as SensorManager<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;TYPE&lowbar;STEP&lowbar;COUNTER&colon; A constant describing a step counter sensor<&sol;span><&sol;strong><br &sol;>val stepSensor &equals; sensorManager&quest;&period;getDefaultSensor&lpar;Sensor&period;TYPE&lowbar;STEP&lowbar;COUNTER&rpar;<&sol;pre> &NewLine;<p>5 &period; Now register listener with sensor manager&comma; if the instance of the step counter sensor is not null&period;<&sol;p> &NewLine;<pre>if &lpar;stepSensor &equals;&equals; null&rpar; &lbrace;<br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol; show toast message&comma; if there is no sensor in the device<&sol;strong><&sol;span><br &sol;> Toast&period;makeText&lpar;this&comma; "No sensor detected on this device"&comma; Toast&period;LENGTH&lowbar;SHORT&rpar;&period;show&lpar;&rpar;<br &sol;>&rcub; else &lbrace;<br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; register listener with sensorManager<&sol;span><&sol;strong><br &sol;> sensorManager&quest;&period;registerListener&lpar;this&comma; stepSensor&comma; SensorManager&period;SENSOR&lowbar;DELAY&lowbar;UI&rpar;<br &sol;>&rcub;<&sol;pre> &NewLine;<p>6 &period; Implement <strong><span style&equals;"color&colon; &num;008000&semi;">SensorEventListener<&sol;span><&sol;strong> and override the below methods as shown below&colon;<&sol;p> &NewLine;<p><strong><span style&equals;"color&colon; &num;008000&semi;">SensorEventListener&colon; <&sol;span><&sol;strong>Used for receiving notifications from the SensorManager when there is new sensor data&period;<&sol;p>&NewLine;<&excl;-- WP QUADS Content Ad Plugin v&period; 2&period;0&period;98&period;1 -->&NewLine;<div class&equals;"quads-location quads-ad2" id&equals;"quads-ad2" style&equals;"float&colon;none&semi;margin&colon;0px&semi;">&NewLine;&NewLine;<&sol;div>&NewLine; &NewLine;<ul> &NewLine;<li><strong><span style&equals;"color&colon; &num;0000ff&semi;">onSensorChanged&lpar;&rpar;&colon;<&sol;span><&sol;strong> Called when there is a new sensor event&period;<&sol;li> &NewLine;<li><strong><span style&equals;"color&colon; &num;0000ff&semi;">onAccuracyChanged&lpar;&rpar;<&sol;span><&sol;strong>&colon; Called when the accuracy of the registered sensor has changed&period;<&sol;li> &NewLine;<&sol;ul> &NewLine;<pre>override fun onSensorChanged&lpar;event&colon; SensorEvent&quest;&rpar; &lbrace;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; get textview by its id<&sol;span><&sol;strong><br &sol;> var tv&lowbar;stepsTaken &equals; findViewById&lt&semi;TextView&gt&semi;&lpar;R&period;id&period;tv&lowbar;stepsTaken&rpar;<br &sol;><br &sol;> if &lpar;running&rpar; &lbrace;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;get the number of steps taken by the user&period;<&sol;span><&sol;strong><br &sol;> totalSteps &equals; event&excl;&excl;&period;values&lbrack;0&rsqb;<br &sol;><br &sol;> val currentSteps &equals; totalSteps&period;toInt&lpar;&rpar;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; set current steps in textview<&sol;span><&sol;strong><br &sol;> tv&lowbar;stepsTaken&period;text &equals; &lpar;"&dollar;currentSteps"&rpar;<br &sol;> &rcub;<br &sol;>&rcub;<br &sol;><br &sol;>override fun onAccuracyChanged&lpar;sensor&colon; Sensor&quest;&comma; accuracy&colon; Int&rpar; &lbrace;<br &sol;> println&lpar;"onAccuracyChanged&colon; Sensor&colon; &dollar;sensor&semi; accuracy&colon; &dollar;accuracy"&rpar;<br &sol;>&rcub;<&sol;pre> &NewLine;<h4><span style&equals;"color&colon; &num;000080&semi;"><strong>Complete MainActivity code<&sol;strong><&sol;span><&sol;h4> &NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;">MainActivity&period;kt<&sol;span><&sol;strong><&sol;p> &NewLine;<pre>package com&period;c1ctech&period;stepscountapp<br &sol;><br &sol;>import android&period;Manifest<br &sol;>import android&period;content&period;Context<br &sol;>import android&period;content&period;pm&period;PackageManager<br &sol;>import android&period;hardware&period;Sensor<br &sol;>import android&period;hardware&period;SensorEvent<br &sol;>import android&period;hardware&period;SensorEventListener<br &sol;>import android&period;hardware&period;SensorManager<br &sol;>import android&period;os&period;Build<br &sol;>import androidx&period;appcompat&period;app&period;AppCompatActivity<br &sol;>import android&period;os&period;Bundle<br &sol;>import android&period;widget&period;TextView<br &sol;>import android&period;widget&period;Toast<br &sol;>import androidx&period;core&period;app&period;ActivityCompat<br &sol;>import androidx&period;core&period;content&period;ContextCompat<br &sol;><br &sol;>class MainActivity &colon; AppCompatActivity&lpar;&rpar;&comma; SensorEventListener &lbrace;<br &sol;><br &sol;> private var sensorManager&colon; SensorManager&quest; &equals; null<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; variable gives the running status<&sol;span><&sol;strong><br &sol;> private var running &equals; false<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; variable counts total steps<&sol;span><&sol;strong><br &sol;> private var totalSteps &equals; 0f<br &sol;><br &sol;> val ACTIVITY&lowbar;RECOGNITION&lowbar;REQUEST&lowbar;CODE &equals; 100<br &sol;><br &sol;> override fun onCreate&lpar;savedInstanceState&colon; Bundle&quest;&rpar; &lbrace;<br &sol;> super&period;onCreate&lpar;savedInstanceState&rpar;<br &sol;> setContentView&lpar;R&period;layout&period;activity&lowbar;main&rpar;<br &sol;><br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol;check if permission isn't already granted&comma; request the permission<&sol;strong><&sol;span><br &sol;> if &lpar;isPermissionGranted&lpar;&rpar;&rpar; &lbrace;<br &sol;> requestPermission&lpar;&rpar;<br &sol;> &rcub;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;initializing sensorManager instance<&sol;span><&sol;strong><br &sol;> sensorManager &equals; getSystemService&lpar;Context&period;SENSOR&lowbar;SERVICE&rpar; as SensorManager<br &sol;> &rcub;<br &sol;><br &sol;> override fun onResume&lpar;&rpar; &lbrace;<br &sol;><br &sol;> super&period;onResume&lpar;&rpar;<br &sol;> running &equals; true<br &sol;><br &sol;> <strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; TYPE&lowbar;STEP&lowbar;COUNTER&colon; A constant describing a step counter sensor<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; Returns the number of steps taken by the user since the last reboot while activated<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; This sensor requires permission android&period;permission&period;ACTIVITY&lowbar;RECOGNITION&period;<&sol;span><&sol;strong><br &sol;> val stepSensor &equals; sensorManager&quest;&period;getDefaultSensor&lpar;Sensor&period;TYPE&lowbar;STEP&lowbar;COUNTER&rpar;<br &sol;><br &sol;> if &lpar;stepSensor &equals;&equals; null&rpar; &lbrace;<br &sol;><span style&equals;"color&colon; &num;008000&semi;"><strong> &sol;&sol; show toast message&comma; if there is no sensor in the device<&sol;strong><&sol;span><br &sol;> Toast&period;makeText&lpar;this&comma; "No sensor detected on this device"&comma; Toast&period;LENGTH&lowbar;SHORT&rpar;&period;show&lpar;&rpar;<br &sol;> &rcub; else &lbrace;<br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; register listener with sensorManager<&sol;span><&sol;strong><br &sol;> sensorManager&quest;&period;registerListener&lpar;this&comma; stepSensor&comma; SensorManager&period;SENSOR&lowbar;DELAY&lowbar;UI&rpar;<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;><br &sol;> override fun onPause&lpar;&rpar; &lbrace;<br &sol;> super&period;onPause&lpar;&rpar;<br &sol;> running &equals; false<br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; unregister listener<&sol;span><&sol;strong><br &sol;> sensorManager&quest;&period;unregisterListener&lpar;this&rpar;<br &sol;> &rcub;<br &sol;><br &sol;> override fun onSensorChanged&lpar;event&colon; SensorEvent&quest;&rpar; &lbrace;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; get textview by its id<&sol;span><&sol;strong><br &sol;> var tv&lowbar;stepsTaken &equals; findViewById&lt&semi;TextView&gt&semi;&lpar;R&period;id&period;tv&lowbar;stepsTaken&rpar;<br &sol;><br &sol;> if &lpar;running&rpar; &lbrace;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;get the number of steps taken by the user&period;<&sol;span><&sol;strong><br &sol;> totalSteps &equals; event&excl;&excl;&period;values&lbrack;0&rsqb;<br &sol;><br &sol;> val currentSteps &equals; totalSteps&period;toInt&lpar;&rpar;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; set current steps in textview<&sol;span><&sol;strong><br &sol;> tv&lowbar;stepsTaken&period;text &equals; &lpar;"&dollar;currentSteps"&rpar;<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;><br &sol;> override fun onAccuracyChanged&lpar;sensor&colon; Sensor&quest;&comma; accuracy&colon; Int&rpar; &lbrace;<br &sol;> println&lpar;"onAccuracyChanged&colon; Sensor&colon; &dollar;sensor&semi; accuracy&colon; &dollar;accuracy"&rpar;<br &sol;> &rcub;<br &sol;><br &sol;> private fun requestPermission&lpar;&rpar; &lbrace;<br &sol;> if &lpar;Build&period;VERSION&period;SDK&lowbar;INT &gt&semi;&equals; Build&period;VERSION&lowbar;CODES&period;Q&rpar; &lbrace;<br &sol;> ActivityCompat&period;requestPermissions&lpar;<br &sol;> this&comma;<br &sol;> arrayOf&lpar;Manifest&period;permission&period;ACTIVITY&lowbar;RECOGNITION&rpar;&comma;<br &sol;> ACTIVITY&lowbar;RECOGNITION&lowbar;REQUEST&lowbar;CODE<br &sol;> &rpar;<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;><br &sol;> private fun isPermissionGranted&lpar;&rpar;&colon; Boolean &lbrace;<br &sol;> return ContextCompat&period;checkSelfPermission&lpar;<br &sol;> this&comma;<br &sol;> Manifest&period;permission&period;ACTIVITY&lowbar;RECOGNITION<br &sol;> &rpar; &excl;&equals; PackageManager&period;PERMISSION&lowbar;GRANTED<br &sol;> &rcub;<br &sol;><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;handle requested permission result&lpar;allow or deny&rpar;<&sol;span><&sol;strong><br &sol;> override fun onRequestPermissionsResult&lpar;<br &sol;> requestCode&colon; Int&comma;<br &sol;> permissions&colon; Array&lt&semi;out String&gt&semi;&comma;<br &sol;> grantResults&colon; IntArray<br &sol;> &rpar; &lbrace;<br &sol;> super&period;onRequestPermissionsResult&lpar;requestCode&comma; permissions&comma; grantResults&rpar;<br &sol;> when &lpar;requestCode&rpar; &lbrace;<br &sol;> ACTIVITY&lowbar;RECOGNITION&lowbar;REQUEST&lowbar;CODE -&gt&semi; &lbrace;<br &sol;> if &lpar;&lpar;grantResults&period;isNotEmpty&lpar;&rpar; &amp&semi;&amp&semi;<br &sol;> grantResults&lbrack;0&rsqb; &equals;&equals; PackageManager&period;PERMISSION&lowbar;GRANTED&rpar;<br &sol;> &rpar; &lbrace;<br &sol;> <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol; Permission is granted&period; Continue the action or workflow<&sol;span><&sol;strong><br &sol;><strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol; in your app&period;<&sol;span><&sol;strong><br &sol;> &rcub;<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;> &rcub;<br &sol;>&rcub;<&sol;pre> &NewLine;<p>When you run the app it will look like this as shown below&colon;<&sol;p> &NewLine;<p><img class&equals;"alignnone wp-image-2996" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2021&sol;12&sol;Screenshot&lowbar;20211211-182110&lowbar;StepsCountApp-498x1024&period;jpg" alt&equals;"" width&equals;"310" height&equals;"638" &sol;>        <img class&equals;"alignnone wp-image-2997" src&equals;"https&colon;&sol;&sol;c1ctech&period;com&sol;wp-content&sol;uploads&sol;2021&sol;12&sol;Screenshot&lowbar;20211211-181918&lowbar;StepsCountApp-498x1024&period;jpg" alt&equals;"" width&equals;"308" height&equals;"634" &sol;>&NewLine;

Exit mobile version