Meshtastic-Android/app/src/google/java/com/geeksville/mesh/analytics/FirebaseAnalytics.kt

78 lines
2.2 KiB
Kotlin
Raw Normal View History

2022-09-04 22:52:40 -03:00
package com.geeksville.mesh.analytics
import android.content.Context
import android.os.Bundle
import com.geeksville.mesh.android.AppPrefs
import com.geeksville.mesh.android.GeeksvilleApplication
import com.geeksville.mesh.android.Logging
/**
* Implement our analytics API using firebase analtics
*/
class GoogleAnalytics(context: Context) : AnalyticsProvider, Logging {
val t = com.google.firebase.analytics.FirebaseAnalytics.getInstance(context)
init {
val pref = AppPrefs(context)
t.setUserId(pref.getInstallId())
}
override fun setEnabled(on: Boolean) {
t.setAnalyticsCollectionEnabled(on)
}
override fun endSession() {
track("End Session")
// Mint.flush() // Send results now
}
override fun trackLowValue(event: String, vararg properties: DataPair) {
track(event, *properties)
}
override fun track(event: String, vararg properties: DataPair) {
debug("Analytics: track $event")
val bundle = Bundle()
properties.forEach {
when (it.value) {
is Double -> bundle.putDouble(it.name, it.value)
is Int -> bundle.putLong(it.name, it.value.toLong())
is Long -> bundle.putLong(it.name, it.value)
is Float -> bundle.putDouble(it.name, it.value.toDouble())
else -> bundle.putString(it.name, it.value.toString())
}
}
t.logEvent(event, bundle)
}
override fun startSession() {
debug("Analytics: start session")
// automatic with firebase
}
override fun setUserInfo(vararg p: DataPair) {
p.forEach { t.setUserProperty(it.name, it.value.toString()) }
}
override fun increment(name: String, amount: Double) {
//Mint.logEvent("$name increment")
}
/**
* Send a google analyics screen view event
*/
override fun sendScreenView(name: String) {
debug("Analytics: start screen $name")
GeeksvilleApplication.currentActivity?.let {
t.setCurrentScreen(
it, name, null
)
}
}
override fun endScreenView() {
// debug("Analytics: end screen")
}
}