diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f020645..6c78770 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ + /** @@ -107,6 +111,8 @@ interface TrmnlApiService { * * NOTE: This API always loads the current plugin image from the playlist. * + * See [API Doc](https://docs.trmnl.com/go/private-api/screens) for additional details. + * * @see getNextDisplayData */ @GET diff --git a/app/src/main/java/ink/trmnl/android/util/AndroidDeviceInfoProvider.kt b/app/src/main/java/ink/trmnl/android/util/AndroidDeviceInfoProvider.kt index 933fb34..610a199 100644 --- a/app/src/main/java/ink/trmnl/android/util/AndroidDeviceInfoProvider.kt +++ b/app/src/main/java/ink/trmnl/android/util/AndroidDeviceInfoProvider.kt @@ -1,6 +1,7 @@ package ink.trmnl.android.util import android.content.Context +import android.net.wifi.WifiManager import android.os.BatteryManager import com.squareup.anvil.annotations.optional.SingleIn import ink.trmnl.android.di.AppScope @@ -12,7 +13,7 @@ import javax.inject.Inject * Provider class for accessing Android device information. * * This class provides utility methods to retrieve device-specific information - * such as battery level, which can be used for reporting to the TRMNL API. + * such as battery level and WiFi signal strength, which can be used for reporting to the TRMNL API. */ @SingleIn(AppScope::class) class AndroidDeviceInfoProvider @@ -36,4 +37,31 @@ class AndroidDeviceInfoProvider Timber.e(e, "Failed to get battery level") null } + + /** + * Gets the current WiFi signal strength (RSSI) of the Android device. + * + * RSSI (Received Signal Strength Indicator) is measured in dBm and typically + * ranges from -100 (weakest) to 0 (strongest). + * + * @return WiFi signal strength in dBm, or null if unable to retrieve or WiFi is not connected + */ + @Suppress("DEPRECATION") // WifiInfo.rssi is still the standard way to get signal strength + fun getWifiSignalStrength(): Int? = + try { + val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as? WifiManager + val wifiInfo = wifiManager?.connectionInfo + val rssi = wifiInfo?.rssi + + if (rssi != null && rssi != -127) { // -127 (`INVALID_RSSI`) indicates no signal + Timber.i("Current WiFi signal strength (RSSI): $rssi dBm") + rssi + } else { + Timber.d("WiFi not connected or signal unavailable") + null + } + } catch (e: Exception) { + Timber.e(e, "Failed to get WiFi signal strength") + null + } }