Starting March 27, 2025, we recommend using android-latest-release
instead of aosp-main
to build and contribute to AOSP. For more information, see Changes to AOSP.
Signal strength reporting
Stay organized with collections
Save and categorize content based on your preferences.
The telephony framework reports cellular network signal strength using various
signal measurement types. You can then use these reported signal strengths to
control how signal bars are displayed on your device and customize the signal
strength reporting criteria from the modem. Starting from Android
11, you can customize
multiple signal measurement types that the framework uses to report the signal
strength of 4G LTE and 5G NR radio access networks (RANs).
The framework uses three functions for reporting signal strength: signal
strength reporting criteria, signal strength thresholds, and signal levels.
These functions affect how Android communicates with the modem hardware, for
example, preventing unnecessary signal strength reporting by the modem to reduce
power usage and improve system health. The functions are defined as:
- Signal strength reporting criteria: The conditions defined by
Android to trigger signal strength reporting from the modem.
- Signal strength thresholds: A list of four integers used for suggesting
signal level and signal strength reporting criteria.
- Signal levels: Five levels (
NONE
, POOR
, MODERATE
, GOOD
, GREAT
)
that correspond to signal strength.
Support for multiple signal measurement types
For devices running Android 11 or higher, the
following signal measurement types
are customizable for NGRAN (5G LTE) and EUTRAN (4G LTE) networks. These
measurements are used for the signal strength reporting criteria, signal
strength thresholds, and signal levels functions.
- NGRAN (5G NR): SSRSRP, SSRSRQ, SSSINR
- EUTRAN (4G LTE): RSRP, RSRQ, RSSNR
Implementation
To enable the device to set the signal strength reporting criteria for each RAN,
implement the
setSignalStrengthReportingCriteria_1_5
hardware interface. For each RAN, multiple signal measurement types are
supported. If none of the reporting criteria for a measurement type is enabled
for a RAN, the reporting criteria for that RAN is defined by the Android
framework. When the reporting criteria of a measurement type is enabled for a
RAN, the reporting criteria of other measurement types are disabled.
To define the signal strength thresholds for 4G and 5G networks, use the
following carrier config keys:
To select multiple measurements for a RAN, use the following carrier config
keys:
Validation
To validate your implementation, use the
testGetConfig
CTS test in
CarrierConfigManagerTest
.
Use VTS for testing
setSignalStrengthReportingCriteria_1_5_*
.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-06-18 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-06-18 UTC."],[],[],null,["# Signal strength reporting\n\nThe telephony framework reports cellular network signal strength using various\nsignal measurement types. You can then use these reported signal strengths to\ncontrol how signal bars are displayed on your device and customize the signal\nstrength reporting criteria from the modem. Starting from Android\n11, you can customize\nmultiple signal measurement types that the framework uses to report the signal\nstrength of 4G LTE and 5G NR radio access networks (RANs).\n\nThe framework uses three functions for reporting signal strength: signal\nstrength reporting criteria, signal strength thresholds, and signal levels.\nThese functions affect how Android communicates with the modem hardware, for\nexample, preventing unnecessary signal strength reporting by the modem to reduce\npower usage and improve system health. The functions are defined as:\n\n- **Signal strength reporting criteria:** The conditions defined by Android to trigger signal strength reporting from the modem.\n- **Signal strength thresholds:** A list of four integers used for suggesting signal level and signal strength reporting criteria.\n- **Signal levels:** Five levels (`NONE`, `POOR`, `MODERATE`, `GOOD`, `GREAT`) that correspond to signal strength.\n\nSupport for multiple signal measurement types\n---------------------------------------------\n\nFor devices running Android 11 or higher, the\nfollowing signal measurement types\nare customizable for NGRAN (5G LTE) and EUTRAN (4G LTE) networks. These\nmeasurements are used for the signal strength reporting criteria, signal\nstrength thresholds, and signal levels functions.\n\n- **NGRAN (5G NR):** SSRSRP, SSRSRQ, SSSINR\n- **EUTRAN (4G LTE):** RSRP, RSRQ, RSSNR\n\nImplementation\n--------------\n\nTo enable the device to set the signal strength reporting criteria for each RAN,\nimplement the\n[`setSignalStrengthReportingCriteria_1_5`](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/radio/1.5/IRadio.hal#68)\nhardware interface. For each RAN, multiple signal measurement types are\nsupported. If none of the reporting criteria for a measurement type is enabled\nfor a RAN, the reporting criteria for that RAN is defined by the Android\nframework. When the reporting criteria of a measurement type is enabled for a\nRAN, the reporting criteria of other measurement types are disabled.\n\nTo define the signal strength thresholds for 4G and 5G networks, use the\nfollowing carrier config keys:\n\n- [`KEY_5G_NR_SSRSRP_THRESHOLDS_INT_ARRAY`](https://developer.android.com/reference/android/telephony/CarrierConfigManager#KEY_5G_NR_SSRSRP_THRESHOLDS_INT_ARRAY)\n- [`KEY_5G_NR_SSRSRQ_THRESHOLDS_INT_ARRAY`](https://developer.android.com/reference/android/telephony/CarrierConfigManager#KEY_5G_NR_SSRSRQ_THRESHOLDS_INT_ARRAY)\n- [`KEY_5G_NR_SSSINR_THRESHOLDS_INT_ARRAY`](https://developer.android.com/reference/android/telephony/CarrierConfigManager#KEY_5G_NR_SSSINR_THRESHOLDS_INT_ARRAY)\n- [`KEY_LTE_RSRQ_THRESHOLDS_INT_ARRAY`](https://developer.android.com/reference/android/telephony/CarrierConfigManager#KEY_LTE_RSRQ_THRESHOLDS_INT_ARRAY)\n- [`KEY_LTE_RSSNR_THRESHOLDS_INT_ARRAY`](https://developer.android.com/reference/android/telephony/CarrierConfigManager#KEY_LTE_RSSNR_THRESHOLDS_INT_ARRAY)\n\nTo select multiple measurements for a RAN, use the following carrier config\nkeys:\n\n- [`KEY_PARAMETERS_USED_FOR_LTE_SIGNAL_BAR_INT`](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/telephony/java/android/telephony/CarrierConfigManager.java#2379)\n- [`KEY_PARAMETERS_USE_FOR_5G_NR_SIGNAL_BAR_INT`](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/telephony/java/android/telephony/CarrierConfigManager.java#2461)\n\nValidation\n----------\n\nTo validate your implementation, use the\n[`testGetConfig`](https://android.googlesource.com/platform/cts/+/112b1be/tests/tests/telephony/src/android/telephony/cts/CarrierConfigManagerTest.java#70)\nCTS test in\n[`CarrierConfigManagerTest`](https://android.googlesource.com/platform/cts/+/112b1be/tests/tests/telephony/src/android/telephony/cts/CarrierConfigManagerTest.java).\nUse [VTS](/docs/core/tests/vts) for testing\n`setSignalStrengthReportingCriteria_1_5_*`."]]