diff --git a/README.md b/README.md index 9d170b3..4a72910 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,10 @@ $ ansible-playbook ansible_playbook.yaml --tags config `android_sensor_rotation_vector_cosinus_theta_half` - Data from the Android Rotation Vector sensor, how is the device rotated, without a unit `android_sensor_rotation_vector_accuracy_radians` - Android rotation vector sensor accuracy in radians +### Android network +`android_cellular_network_connected` - Whether cellular network is connected +`android_wifi_connected` - Whether WiFi is connected + ### Miscellaneous `android_battery_charge_ratio` - Current battery charge diff --git a/client/.idea/deploymentTargetDropDown.xml b/client/.idea/deploymentTargetDropDown.xml index 1acd161..0fed1b0 100644 --- a/client/.idea/deploymentTargetDropDown.xml +++ b/client/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file diff --git a/client/app/src/main/java/com/birdthedeveloper/prometheus/android/exporter/worker/AndroidCustomExporter.kt b/client/app/src/main/java/com/birdthedeveloper/prometheus/android/exporter/worker/AndroidCustomExporter.kt index ed257cc..e17b5bd 100644 --- a/client/app/src/main/java/com/birdthedeveloper/prometheus/android/exporter/worker/AndroidCustomExporter.kt +++ b/client/app/src/main/java/com/birdthedeveloper/prometheus/android/exporter/worker/AndroidCustomExporter.kt @@ -91,11 +91,39 @@ class AndroidCustomExporter(private val metricEngine: MetricsEngine) : Collector } private fun collectHasWiFiConnection(mfs : MutableList){ + metricEngine.getHasWiFiConnected()?.let { + val result : Double = if (it) { + 1.0 + }else{ + 0.0 + } + val gauge = GaugeMetricFamily( + "android_wifi_connected", + "Whether WiFi is connected", + listOf() + ) + gauge.addMetric(listOf(), result) + mfs.add(gauge) + } } private fun collectHasCellularConnection(mfs : MutableList){ + metricEngine.getHasCellularConnected()?.let { + val result : Double = if (it) { + 1.0 + }else{ + 0.0 + } + val gauge = GaugeMetricFamily( + "android_cellular_network_connected", + "Whether cellular network is connected", + listOf() + ) + gauge.addMetric(listOf(), result) + mfs.add(gauge) + } } private fun collectAndroidInfo(mfs : MutableList){ diff --git a/client/app/src/main/java/com/birdthedeveloper/prometheus/android/exporter/worker/MetricsEngine.kt b/client/app/src/main/java/com/birdthedeveloper/prometheus/android/exporter/worker/MetricsEngine.kt index 51e1a04..ef278a4 100644 --- a/client/app/src/main/java/com/birdthedeveloper/prometheus/android/exporter/worker/MetricsEngine.kt +++ b/client/app/src/main/java/com/birdthedeveloper/prometheus/android/exporter/worker/MetricsEngine.kt @@ -9,6 +9,8 @@ import android.hardware.Sensor import android.hardware.SensorManager import android.hardware.SensorEvent import android.hardware.SensorEventListener +import android.net.ConnectivityManager +import android.net.NetworkCapabilities import android.os.BatteryManager import android.os.Build import android.os.CpuUsageInfo @@ -240,11 +242,35 @@ class MetricsEngine(private val context: Context) : SensorEventListener { return Build.MANUFACTURER } - fun getHasCellularConnected() : Boolean { - TODO() + fun getHasCellularConnected() : Boolean? { + val connectivityManager = context + .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager? + + return if (connectivityManager != null){ + + val network = connectivityManager.activeNetwork + val cap = connectivityManager.getNetworkCapabilities(network) + + cap != null && cap.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) + + }else{ + null + } } - fun getHasWiFiConnected() : Boolean { - TODO() + fun getHasWiFiConnected() : Boolean? { + val connectivityManager = context + .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager? + + return if (connectivityManager != null){ + + val network = connectivityManager.activeNetwork + val cap = connectivityManager.getNetworkCapabilities(network) + + cap != null && (cap.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || cap.hasTransport(NetworkCapabilities.TRANSPORT_WIFI_AWARE)) + + }else{ + null + } } }