Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách lấy phiên bản Radio (Baseband) Android bằng lập trình

Giới thiệu

Hướng dẫn này trình bày cách lấy phiên bản Radio (còn gọi là Baseband version / Modem firmware) của thiết bị Android. Thông tin này quan trọng cho việc debug kết nối mạng, VoLTE, 5G.

Các bước thực hiện

Bước 1: Tạo dự án mới

Tạo dự án Android Studio: File → New Project.

Bước 2: Layout activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/text"
        android:textSize="30sp"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

Bước 3: MainActivity.java

package com.example.myapplication;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.text);

        // Kiểm tra phiên bản Android - Build.getRadioVersion() cần API 24+
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
            textView.setText("Yêu cầu Android 7.0 (API 24) trở lên");
            return;
        }

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) 
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, 
                new String[]{Manifest.permission.READ_PHONE_STATE}, 101);
        } else {
            showRadioVersion();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 101) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                showRadioVersion();
            } else {
                textView.setText("Cần quyền READ_PHONE_STATE");
            }
        }
    }

    private void showRadioVersion() {
        try {
            String radioVersion = Build.getRadioVersion();
            if (radioVersion != null && !radioVersion.isEmpty()) {
                textView.setText("Radio Version: " + radioVersion);
            } else {
                textView.setText("Radio version không khả dụng");
            }
        } catch (SecurityException e) {
            textView.setText("Không có quyền truy cập Radio version");
            e.printStackTrace();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) 
                    == PackageManager.PERMISSION_GRANTED) {
                showRadioVersion();
            }
        }
    }
}

Bước 4: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                

Giải thích Radio Version (Baseband)

Radio Version là gì?

Radio version (Baseband version) là phiên bản firmware của modem/cell radio - chip xử lý kết nối di động (2G/3G/4G/5G), WiFi, Bluetooth. Nó riêng biệt với hệ điều hành Android (AP firmware).

Ví dụ giá trị thực tế

  • Samsung Galaxy S20: G981FXXU8FUK8
  • Pixel 5: g5123b-00021-210514-B-7529683
  • Xiaomi Mi 11: V12.5.6.0.RKBMIXM
  • OnePlus 9: 11.2.10.11

Ứng dụng thực tế

Tình huốngTại sao cần Radio Version
Debug VoLTE/VoWiFi không hoạt độngKiểm tra modem có hỗ trợ profile carrier không
Mất sóng, chuyển mạng liên tụcSo sánh với bản modem mới nhất từ nhà sản xuất
Cập nhật firmware modemXác định phiên bản hiện tại trước khi flash
Tương thích 5GKiểm tra modem có firmware 5G NR không
Root/Custom ROMĐảm bảo flash đúng modem cho ROM

Lưu ý quan trọng

  • Build.getRadioVersion() chỉ khả dụng từ API 24 (Android 7.0 Nougat) trở lên.
  • Cần quyền READ_PHONE_STATE (dangerous permission).
  • Trên một số thiết bị, giá trị trả về có thể là "unknown" hoặc rỗng.
  • Không thể thay đổi radio version qua software thông thường - cần flash firmware modem riêng.