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
+ }
}
}