diff --git a/.idea/misc.xml b/.idea/misc.xml
index 703e5d4..af0bbdd 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 480923e..386a64c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -36,7 +36,9 @@ dependencies {
implementation 'android.arch.persistence.room:runtime:1.1.1'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'
kapt 'android.arch.persistence.room:compiler:1.1.1'
-// implementation 'android.arch.lifecycle:extensions:1.1.1'
+
+ implementation 'com.opencsv:opencsv:4.0'
+// implementation 'android.arch.lifecycle:excompile 'com.opencsv:opencsv:4.0'tensions:1.1.1'
// kapt 'android.arch.lifecycle:compiler:1.1.1'
testImplementation 'junit:junit:4.12'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e836dcb..6651bfa 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,6 +6,7 @@
+
+ /*
+ result.time,
+ result.longitude.format(7),
+ result.latitude.format(7),
+ result.speed,
+ result.altitude,
+ result.bearing,
+ result.accuracy,
+ result.provider,
+ result.isFromMockProvider
+ */
+ if (one.size != 0) {
+ time = one[0]
+ lon = one[1]
+ lat = one[2]
+ speed = one[3]
+ }
+ } else if (rec.sensor == "accelerometer") {
+ val data = rec.data?.split(",") as List
+ val row =
+ arrayOf("${rec.timestamp}", lat, lon, speed, time, data[0], data[1], data[2])
+ writerAccelero.writeNext(row)
+ } else if (rec.sensor == "gyroscope") {
+ val data = rec.data?.split(",") as List
+ val row =
+ arrayOf("${rec.timestamp}", lat, lon, speed, time, data[0], data[1], data[2])
+ writerGyro.writeNext(row)
+ }
+ }
+ writerAccelero.close()
+ writerGyro.close()
}
private fun updateCounter() {
@@ -79,7 +201,6 @@ class MainActivity : AppCompatActivity(),
reset_record_btn.visibility = View.VISIBLE
export_record_btn.visibility = View.VISIBLE
} else {
-
reset_record_btn.visibility = View.GONE
export_record_btn.visibility = View.GONE
}
@@ -91,8 +212,15 @@ class MainActivity : AppCompatActivity(),
private fun UIStatusUpdates(hasLocPerm: Boolean = true) {
val mLocationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
- log("isLocationEnabled? ${mLocationManager.isLocationEnabled} - ${mLocationManager.allProviders}")
- if (hasLocPerm && mLocationManager.isLocationEnabled) {
+ val isLocationEnabled = (
+ Build.VERSION.SDK_INT < Build.VERSION_CODES.P || (
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.P &&
+ mLocationManager.isLocationEnabled)
+ )
+
+ log("isLocationEnabled? $isLocationEnabled - ${mLocationManager.allProviders}")
+
+ if (hasLocPerm && isLocationEnabled) {
location_status_textview.text = "OK"
location_status_textview.setBackgroundColor(
ContextCompat.getColor(
@@ -113,11 +241,11 @@ class MainActivity : AppCompatActivity(),
}
}
- private fun requestForNecessaryPermissions() {
+ private fun requestForNecessaryPermissions(perm: String = Manifest.permission.ACCESS_FINE_LOCATION) {
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(
this,
- Manifest.permission.ACCESS_FINE_LOCATION
+ perm
)
!= PackageManager.PERMISSION_GRANTED
) {
@@ -125,14 +253,13 @@ class MainActivity : AppCompatActivity(),
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(
this,
- Manifest.permission.ACCESS_FINE_LOCATION
+ perm
)
) {
- val perms = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION)
- ActivityCompat.requestPermissions(
- this, perms,
- PERMISSION_LOCATION
- )
+ val perms = arrayOf(perm)
+ val permResult =
+ if (perm == Manifest.permission.ACCESS_FINE_LOCATION) PERMISSION_LOCATION else WRITE_EXTERNAL_STORAGE
+ ActivityCompat.requestPermissions(this, perms, permResult)
}
UIStatusUpdates(false)
} else {
@@ -144,6 +271,16 @@ class MainActivity : AppCompatActivity(),
}
+ private fun isMyServiceRunning(serviceClass: Class<*>): Boolean {
+ val manager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
+ for (service in manager.getRunningServices(Integer.MAX_VALUE)) {
+ if (serviceClass.name == service.service.className) {
+ return true
+ }
+ }
+ return false
+ }
+
private fun actionOnService(action: Actions) {
when (action) {
Actions.START -> {
@@ -185,6 +322,15 @@ class MainActivity : AppCompatActivity(),
)
UIStatusUpdates(hasPerm)
}
+ WRITE_EXTERNAL_STORAGE -> {
+ val hasPerm = grantResult[0] == PackageManager.PERMISSION_GRANTED
+ Toast.makeText(
+ applicationContext,
+ "${if (hasPerm) "Good" else "Bad"} Permission for storage",
+ Toast.LENGTH_LONG
+ )
+ // UIStatusUpdates(hasPerm)
+ }
}
}
}
diff --git a/app/src/main/java/co/zzyzx/sensorlogger/db/Database.kt b/app/src/main/java/co/zzyzx/sensorlogger/db/Database.kt
index d65918a..d5efdd9 100644
--- a/app/src/main/java/co/zzyzx/sensorlogger/db/Database.kt
+++ b/app/src/main/java/co/zzyzx/sensorlogger/db/Database.kt
@@ -40,4 +40,12 @@ class RecordRepository {
return dao.getCount(sensor)
}
+ fun getAll(): List {
+ return dao.getAll()
+ }
+
+ fun resetAllData() {
+ dao.nukeTable()
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/co/zzyzx/sensorlogger/db/dao.kt b/app/src/main/java/co/zzyzx/sensorlogger/db/dao.kt
index d4244b5..7c33593 100644
--- a/app/src/main/java/co/zzyzx/sensorlogger/db/dao.kt
+++ b/app/src/main/java/co/zzyzx/sensorlogger/db/dao.kt
@@ -8,7 +8,7 @@ interface RecordDao {
@Query("SELECT COUNT(*) FROM record WHERE sensor = :sensor")
fun getCount(sensor: String): Int
- @Query("SELECT * FROM record")
+ @Query("SELECT * FROM record ORDER BY timestamp ASC")
fun getAll(): List
@Query("SELECT * FROM record WHERE sensor LIKE :sensor ORDER BY timestamp DESC LIMIT 1")
@@ -26,4 +26,7 @@ interface RecordDao {
@Delete
fun delete(record: Record)
+
+ @Query("DELETE FROM record")
+ fun nukeTable()
}