From 99d93c573d0aee020ce10a449a616c86e2955752 Mon Sep 17 00:00:00 2001 From: Severin Kaderli Date: Sun, 27 Nov 2022 17:24:44 +0100 Subject: [PATCH] Add chart to calibration process Signed-off-by: Severin Kaderli --- src/MagSend/app/build.gradle | 8 +++---- .../dev/kaderli/magsend/BaseSensorActivity.kt | 10 +++++++++ .../kaderli/magsend/CalibrationActivity.kt | 16 +++++++++++--- .../main/res/layout/activity_calibration.xml | 10 +++++++++ src/MagSend/build.gradle | 8 +++---- src/MagSend/settings.gradle | 21 ++++++++++--------- 6 files changed, 52 insertions(+), 21 deletions(-) diff --git a/src/MagSend/app/build.gradle b/src/MagSend/app/build.gradle index 9071bbd..3d615d2 100644 --- a/src/MagSend/app/build.gradle +++ b/src/MagSend/app/build.gradle @@ -5,12 +5,12 @@ plugins { android { namespace 'dev.kaderli.magsend' - compileSdk 32 + compileSdk 33 defaultConfig { applicationId "dev.kaderli.magsend" minSdk 28 - targetSdk 32 + targetSdk 33 versionCode 1 versionName "1.0" @@ -33,12 +33,12 @@ android { } dependencies { - implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' -} \ No newline at end of file +} diff --git a/src/MagSend/app/src/main/java/dev/kaderli/magsend/BaseSensorActivity.kt b/src/MagSend/app/src/main/java/dev/kaderli/magsend/BaseSensorActivity.kt index 3072efd..be9db7b 100644 --- a/src/MagSend/app/src/main/java/dev/kaderli/magsend/BaseSensorActivity.kt +++ b/src/MagSend/app/src/main/java/dev/kaderli/magsend/BaseSensorActivity.kt @@ -2,9 +2,12 @@ package dev.kaderli.magsend import android.content.Context import android.hardware.Sensor +import android.hardware.SensorEvent import android.hardware.SensorEventListener import android.hardware.SensorManager import android.os.Bundle +import kotlin.math.pow +import kotlin.math.sqrt abstract class BaseSensorActivity : BaseActivity(), SensorEventListener { private lateinit var sensorManager: SensorManager; @@ -18,4 +21,11 @@ abstract class BaseSensorActivity : BaseActivity(), SensorEventListener { } override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {} + + override fun onSensorChanged(event: SensorEvent) { + val magneticFieldStrength = sqrt(event.values[0].pow(2) + event.values[1].pow(2) + event.values[2].pow(2)) + sensorValueReceived(magneticFieldStrength) + } + + abstract fun sensorValueReceived(magneticFieldStrength: Float) } diff --git a/src/MagSend/app/src/main/java/dev/kaderli/magsend/CalibrationActivity.kt b/src/MagSend/app/src/main/java/dev/kaderli/magsend/CalibrationActivity.kt index f858af6..84afc6b 100644 --- a/src/MagSend/app/src/main/java/dev/kaderli/magsend/CalibrationActivity.kt +++ b/src/MagSend/app/src/main/java/dev/kaderli/magsend/CalibrationActivity.kt @@ -1,15 +1,21 @@ package dev.kaderli.magsend -import android.hardware.SensorEvent import android.os.Bundle import android.widget.TextView +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.data.Entry +import com.github.mikephil.charting.data.LineData +import com.github.mikephil.charting.data.LineDataSet class CalibrationActivity : BaseSensorActivity() { private lateinit var calibrationValue: TextView + private lateinit var chart: LineChart + private var data = ArrayList() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) calibrationValue = findViewById(R.id.calibrationValue) + chart = findViewById(R.id.chart) calibrationValue.text = getString(R.string.calibration_value, 0f) } @@ -17,7 +23,11 @@ class CalibrationActivity : BaseSensorActivity() { return R.layout.activity_calibration } - override fun onSensorChanged(event: SensorEvent) { - calibrationValue.text = getString(R.string.calibration_value, event.values[0]) + override fun sensorValueReceived(magneticFieldStrength: Float) { + calibrationValue.text = getString(R.string.calibration_value, magneticFieldStrength) + data.add(Entry(data.size.toFloat(), magneticFieldStrength)) + val dataSet = LineDataSet(data, "Test") + chart.data = LineData(dataSet) + chart.invalidate() } } diff --git a/src/MagSend/app/src/main/res/layout/activity_calibration.xml b/src/MagSend/app/src/main/res/layout/activity_calibration.xml index af88e45..919b8f2 100644 --- a/src/MagSend/app/src/main/res/layout/activity_calibration.xml +++ b/src/MagSend/app/src/main/res/layout/activity_calibration.xml @@ -27,4 +27,14 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/calibrationDescription" /> + + diff --git a/src/MagSend/build.gradle b/src/MagSend/build.gradle index c518bc1..d66f0c0 100644 --- a/src/MagSend/build.gradle +++ b/src/MagSend/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.3.0' apply false - id 'com.android.library' version '7.3.0' apply false - id 'org.jetbrains.kotlin.android' version '1.7.10' apply false -} \ No newline at end of file + id 'com.android.application' version '7.3.0' apply false + id 'com.android.library' version '7.3.0' apply false + id 'org.jetbrains.kotlin.android' version '1.7.10' apply false +} diff --git a/src/MagSend/settings.gradle b/src/MagSend/settings.gradle index 7171f18..5ee2a21 100644 --- a/src/MagSend/settings.gradle +++ b/src/MagSend/settings.gradle @@ -1,16 +1,17 @@ pluginManagement { - repositories { - gradlePluginPortal() - google() - mavenCentral() - } + repositories { + gradlePluginPortal() + google() + mavenCentral() + } } dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) - repositories { - google() - mavenCentral() - } + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven { url 'https://jitpack.io' } + } } rootProject.name = "MagSend" include ':app'