flutter_cell_info
Telephony SDK 위에 구축된 가벼운 라이브러리입니다. NetMonster 코어는 NetMonster 애플리케이션에서 추출되었으며, 여러 텔레포니 기능이 오래된 Android 디바이스로 백포트되었습니다.
Flutter 셀 정보 플러그인
{"sdk":"flutter"}^3.0.2{"sdk":"flutter"}아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.
Cell Info Plugin
🚧 Work in progress! 🚧
Lightweight Android library that is build over Telephony SDK. NetMonster core is extracted from NetMonster application and backports several Telephony features to older Android devices.
Why use NetMonster Core instead of legacy API?
Here's small comparison for each of voice / data network you can meet.
| function | Min SDK Android | Min SDK NetMonster Core |
|---|---|---|
| CGI | - | I (14) |
| NCC | - | N (24) |
| BCC | - | N (24) |
| Band | - | N (24) |
| TA | O (26) | N (24) |
| function | Min SDK Android | Min SDK NetMonster Core |
|---|---|---|
| CGI | - | I (14) |
| CID (16b) | - | I (14) |
| RNC | - | I (14) |
| Ec/Io | - | M (23) |
| Band | - | N (24) |
| BER | - | Q (29) |
| Ec/No | - | Q (29) |
| RSCP | - | Q (29) |
| function | Min SDK Android | Min SDK NetMonster Core |
|---|---|---|
| eCGI | - | I (14) |
| CID (8b) | - | I (14) |
| eNb | - | I (14) |
| RSSI | Q (29) | I (14) |
| RSRP | O (26) | I (14) |
| CQI | O (26) | I (14) |
| SNR | O (26) | I (14) |
| TA | O (26) | I (14) |
| Band | - | N (24) |
There are basically two ways you can use this library - as a validation library that will sanitize
data from AOSP cause lots of manufacturers modify source code and do not follow public documentation.
In that case you'll only need ITelephonyManagerCompat to retrieve AOSP-like models that are properly
validated.
The second option is to use advantages of additional postprocessing of NetMonster Core. As a result you'll get more data but correctness is not 100 % guaranteed.
NetMonster Core focuses on mapping of two AOSP's ways to fetch current cell information:
Note that some of those methods are deprecated or even removed from AOSP - for more info see documentation of each method.
In this case you'll need to interact with INetMonster class. Here's list of problems
that this library solves.
Issue:
Solution:
Issue:
Solution:
Using getNetworkType(vararg detectors: INetworkDetector) you can specify which INetworkDetector to use
when detecting current network type.
| Feature | Android | iOS |
|---|---|---|
| Carrier / SIM info (name, MCC, MNC) | ✅ | ✅¹ |
| Current radio technology (LTE/NR/…) | ✅ | ✅ |
| Cell identity (CID, TAC, PCI, eNb …) | ✅ | ❌² |
| Signal strength (dBm, RSRP, RSRQ …) | ✅ | ❌² |
| Neighbouring cells | ✅ | ❌² |
¹ Apple deprecated CTCarrier in iOS 16; on iOS 16+ it returns placeholder
values (--, 65535).
² iOS exposes no public API for cell-tower identity, signal strength or
neighbouring cells. On iOS, getCellInfo therefore returns the current radio
access technology per SIM in primaryCellList with identity/signal fields left
null, and neighboringCellList is always empty.
The Dart API (CellInfo.getCellInfo, CellInfo.getSIMInfo,
CellInfo.sharedPreference) and JSON response shape are identical across both
platforms.
Credit to - eslamfaisal