📘 《AI 時代系列(6):進階通訊工程——邁向2035年太空星鏈網路時代》
📘 第 8周: 📱 從小晶片到手機:嵌入式、Android 與 IoT × AI
IoT × MCU × Android × TinyML 完整實戰
76/150單元: Android 通訊 API 📱
手機如何連基地台(RRC / NAS / Socket / HAL / Radio Interface Layer)
________________________________________
🎯 單元導讀
你每天都拿手機,但很少有人真正理解:
手機「是如何」連上 4G/5G 基地台的?
Android 不只是 App 系統,它其實包含:
✔ RIL(Radio Interface Layer)
✔ Modem firmware
✔ Telephony Framework
✔ HAL(Hardware Abstraction Layer)
✔ RRC(Radio Resource Control)
✔ NAS(核心網協議)
而你寫 App 時用到的:
✔ TelephonyManager
✔ SmsManager
✔ ConnectivityManager
✔ NetworkCallback
全部都是通往這個「基地台連線大系統」的入口。
本章會讓你具備:
⭐ 電信工程師 × Android 系統工程師 × 5G 核心網的視野。
⭐ 從 App → Framework → HAL → Modem → gNodeB 的完整流程。
⭐ 6G/LEO NTN 時代,Android 怎麼知道要連哪個基地台?
一句話:
手機連線 = Android × Radio × 5G Protocol Stack 的跨系統協同。
________________________________________
🧠 一、Android 如何連基地台?(總覽)
手機連線流程=五層:
App 層 → Framework 層 → RIL 層 → Modem → gNodeB/eNodeB
✔ App:使用 TelephonyManager
✔ Framework:Java Telephony Framework
✔ RIL:C/C++ Radio Interface Layer
✔ HAL:Hardware Abstraction Layer
✔ Modem:跑 4G/5G 協議(Layer 1~3)
✔ gNodeB:基地台
✔ Core:AMF / SMF / UPF
Android 本身不跑 5G 協議──
協議跑在 Modem(高通、MTK)的 firmware 裡。
Android 做的是:
⭐ 發指令下去
⭐ 接收 modem 回傳的訊息
⭐ 處理網路狀態變化
⭐ 管理 Data / IMS / VoLTE / SMS
________________________________________
🧠 二、Android 通訊 API 的主角們(務必記住)
✔ ① TelephonyManager(最常用)
提供你 App 可以讀的資訊:
• 訊號強度(RSRP / SINR / RSSI)
• 網路型態(LTE/NR/WCDMA)
• Cell ID
• Carrier config
• Data state
• VoLTE/VoNR 狀態
val tm = getSystemService(TelephonyManager::class.java)
val strength = tm.signalStrength
val cellInfo = tm.allCellInfo
________________________________________
✔ ② PhoneStateListener(監聽 RRC 狀態)
當手機:
• 切台
• 掛網
• 失去訊號
• 從 LTE → NR
系統都會 callback。
override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {}
override fun onCellInfoChanged(cellInfo: MutableList<CellInfo>) {}
________________________________________
✔ ③ ConnectivityManager(處理 Data Session)
Android 用它來管理:
• Mobile Data
• Wi-Fi
• VPN
• 5G SA/NSA data session
connectivityManager.registerNetworkCallback(request, callback)
________________________________________
✔ ④ SmsManager / SubscriptionManager(SMS / SIM)
5G 核心網下:
• SMS over IMS
• VoLTE / VoNR
• SIM 切換(DSDS)
________________________________________
🧠 三、Android → Modem → gNodeB 的實際流程
這是本章最重要的知識(工程師必會)。
⭐(1)RRC 層(Radio Resource Control)
由 Modem 處理:
• RRC Idle → Connected
• 測量(measurement)
• 切換(handover)
• 初始註冊
• BWP / beam management(5G)
Android 不控制 RRC,
Android 只是「顯示結果」。
________________________________________
⭐(2)NAS 層(Non-Access Stratum)
Modem 跑 NAS 去和核心網溝通:
✔ 註冊
✔ 建立 PDU Session
✔ 認證(AKA)
✔ AMF / SMF 互動
Android 也不跑 NAS──
Android 只負責把 NAS 訊息用 RIL 曝露給 Framework。
________________________________________
⭐(3)RIL(Radio Interface Layer)API
Android 用 RIL 向 Modem 下命令:
例如:
• SETUP_DATA_CALL
• SEND_SMS
• QUERY_NETWORK_SELECTION_MODE
• ENABLE_NR
• GET_SIGNAL_STRENGTH
Modem 用 AT command / QMI / Proprietary protocol 回應。
________________________________________
🧠 四、Android 如何決定連哪個基地台?(工程版)
雖然 App 不能控制 RRC,
但 Android 可以影響:
✔ 網路選擇(手動/自動)
✔ 偏好 NR/LTE
✔ APN 配置
✔ Data policy(5G only / NR preferred)
基站選擇邏輯:
Modem 做:
1. Scan 頻段
2. 測 RSRP / RSRQ / SINR
3. 根據 Operator Policy 選擇候選小區
4. RRC Connection Request
Android 做:
1. 決定允不允許 4G/5G
2. 設是否允許手動選擇
3. 給 Modem Operator config
Android 可控:政策
Modem 可控:協議
gNodeB 可控:排程 + admission
________________________________________
🧠 五、6G / LEO NTN 時代:Android 會變怎樣?
在 NTN 下:
✔ 手機會同時看到「衛星基站(NTN-gNB)」
✔ 需要 RRC for NTN
✔ Timing advance 要很大(衛星距離遠)
✔ Doppler 補償一起做
✔ Android Framework 必須支援 NTN capability
你未來做 LEO × Android 的路:
⭐「Android Telephony + Modem + RRC(NTN) + NTN-gNB」
這會是 2030–2040 的黃金技能。
________________________________________
🧠 六、ASCII 工程圖:Android → Base Station
[ App ]
|
[ Telephony Framework ]
|
[ RIL / HAL ]
|
[ Modem Firmware ] ← 跑 RRC, MAC, PHY, NAS
|
[ gNodeB / eNodeB ]
|
[ AMF / SMF / UPF ]
簡單來說,App 只負責發起通訊需求(通話、上網、傳資料),實際的通訊控制會往下交給 Android Telephony Framework 統一管理,再透過 RIL / HAL 把作業系統的指令轉換成硬體可理解的命令,送進 Modem Firmware。真正「懂電信協定」的是 Modem,它內部執行 NAS(核心網註冊)、RRC(連線控制)、MAC / PHY(無線排程與實體層),負責與基地台 eNodeB(4G)或 gNodeB(5G) 進行空中介面通訊。基地台再把控制面與使用者資料送進核心網,由 AMF / SMF / UPF 分別處理身分驗證、連線管理與實際資料轉送。
________________________________________
🧠 七、模擬題
1️⃣ 專業題:Android 為什麼不能直接控制 RRC?
📦 答案:
因為 RRC 是 3GPP 協議,由 Modem firmware 實作,Android 只有 Framework 層,不具備協議功能。
________________________________________
2️⃣ 應用題:Android App 可以直接看 NR(5G)訊號強度嗎?
A. 完全可以
B. 不行
C. 需 Android 11+ 以及 Modem 支援 ✔
D. 需 root
👉 Android App 只有在 Android 11 以上,且底層 Modem / HAL 有開放 NR 量測介面時,才能合法讀取 5G(NR)訊號強度;不是所有手機都支援。
________________________________________
3️⃣ 情境題:某地區 LTE 訊號弱,但 5G 很強,如何讓手機偏好 5G?
✔ 設定 NR Preferred(NetworkType)
✔ 調整 CarrierConfig
✔ 開啟 NR SA 模式
________________________________________
🛠 八、實作練習(工程級)
1. 用 TelephonyManager 顯示 RSRP/SINR
2. 實作 NetworkCallback 監測 NR→LTE 切換
3. 使用 ADB logcat 分析 RIL 日誌
4. 用 QXDM / MTK MetaMode 抓 Modem log
5. 模擬 5G SA 下的 PDU Session 建立流程
________________________________________
⭐ 九、小結:Android 是 5G/6G 通訊的 UI,而 Modem 是靈魂
✔ Android 不跑協議,但控制整個「行為」
✔ RIL 是 Android 與 Modem 的橋樑
✔ Modem 決定 RRC、NAS、beam、handover
✔ App 只能讀資訊、不能控制底層
✔ 6G NTN 會讓 Android Telephony 大改版
✔ 未來工程師必懂:Android × Modem × 5G Stack
一句話:
⭐ Android 是手機的「大腦外殼」
⭐ Modem 是手機的「通訊靈魂」
⭐ gNodeB/NTN 是手機的「宇宙入口」















