dumpsys命令的使用及telephony.registry解讀


adb shell dumpsys,默認打印出當前系統所有的service信息,通常情況下我們並不想看那么多信息,可以在后面加上具體的服務名,比如想獲取關於設備電池的信息,就可以使用以下命令:

>adb shell dumpsys battery

Current Battery Service state:
AC powered: false
USB powered: true
Wireless powered: false
Max charging current: 0
status: 5
health: 2
present: true
level: 100
scale: 100
voltage: 4321
temperature: 302
technology: Li-ion

獲取完整的系統服務的列表可以使用以下命令:

>adb shell dumpsys -l

Currently running services:
AutoLaunch
DockObserver
SurfaceFlinger
accessibility
account
activity
alarm
alipayservice
android.App6939Service
android.hardware.fingerprint.IFingerprintDaemon
android.security.keystore
appops
appwidget
audio
backup
battery

...

幾個常用的命令:

adb shell dumpsys display #獲取顯示相關信息,可以從中提取分辨率信息

adb shell dumpsys cpuinfo #獲取CPU信息

adb shell dumpsys meminfo #獲取內存信息
adb shell dumpsys meminfo PACKAGE_NAME #獲取具體應用的內存信息

adb shell dumpsys activity #獲取activity信息
adb shell dumpsys activity top #獲取當前界面的UI信息
adb shell dumpsys activity top | findstr ACTIVITY #獲取當前界面的activity

adb shell dumpsys wifi #獲取wifi信息

adb shell dumpsys power #獲取電源管理信息,可以獲取到是否處於鎖屏狀態:mWakefulness=Asleep或者Awake

接下來主要介紹下telephony.registry服務,這個服務是關於無線通訊的,可以從中獲取無線通訊相關的參數。執行命令得到如下輸出:

>adb shell dumpsys telephony.registry

last known state:
Phone Id=0 #雙卡終端中的第一個卡
mCallState=0 #0表示待機狀態、1表示來電未接聽狀態、2表示電話占線狀態
mCallIncomingNumber=
mServiceState=0 0 voice home data home CMCC CMCC 46000 CMCC CMCC 46000 LTE LTE CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=false IsDataRoamingFromRegistration=false
mSignalStrength=SignalStrength: 99 0 -120 -160 -120 -1 -1 17 -113 -15 -40 2147483647 2147483647 gsm|lte
mMessageWaiting=false
mCallForwarding=false #是否啟用呼叫轉移
mDataActivity=0
mDataConnectionState=2 #0:無數據連接 1:正在創建數據連接 2:已連接
mDataConnectionPossible=true #是否有數據連接
mDataConnectionReason=dataAttached
mDataConnectionApn=
mDataConnectionLinkProperties=null
mDataConnectionNetworkCapabilities=null
mCellLocation=Bundle[mParcelledData.dataSize=64]
mCellInfo=null
Phone Id=1
mCallState=0
mCallIncomingNumber=

...

除了以上注釋外,接下來主要解讀兩個字段:mServiceState和mSignalStrength。從源碼可以看出是直接打印出了類ServiceStateSignalStrength的內容:

private SignalStrength mSignalStrength = new SignalStrength();

...

        pw.println("last known state:");
        ...
        pw.println("  mServiceState=" + mServiceState);
        pw.println("  mSignalStrength=" + mSignalStrength);
        ...

ServiceState類的內容輸出格式可以查看源代碼https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/ServiceState.java

(搜索”toString”函數):

    @Override
    public String toString() {
        String radioTechnology = rilRadioTechnologyToString(mRilVoiceRadioTechnology);
        String dataRadioTechnology = rilRadioTechnologyToString(mRilDataRadioTechnology);

        return (mVoiceRegState + " " + mDataRegState
                + " "
                + "voice " + getRoamingLogString(mVoiceRoamingType)
                + " "
                + "data " + getRoamingLogString(mDataRoamingType)
                + " " + mVoiceOperatorAlphaLong
                + " " + mVoiceOperatorAlphaShort
                + " " + mVoiceOperatorNumeric
                + " " + mDataOperatorAlphaLong
                + " " + mDataOperatorAlphaShort
                + " " + mDataOperatorNumeric
                + " " + (mIsManualNetworkSelection ? "(manual)" : "")
                + " " + radioTechnology
                + " " + dataRadioTechnology
                + " " + (mCssIndicator ? "CSS supported" : "CSS not supported")
                + " " + mNetworkId
                + " " + mSystemId
                + " RoamInd=" + mCdmaRoamingIndicator
                + " DefRoamInd=" + mCdmaDefaultRoamingIndicator
                + " EmergOnly=" + mIsEmergencyOnly
                + " IsDataRoamingFromRegistration=" + mIsDataRoamingFromRegistration);
    }

如此一來,mServiceState=0 0 voice home data home CMCC CMCC 46000 CMCC CMCC 46000 LTE LTE CSS not supported -1 -1 RoamInd=-1 DefRoamInd=-1 EmergOnly=false IsDataRoamingFromRegistration=false 中各個字段的意義便一目了然了。

同樣,SignalStrength類也可以找到“toString”源碼:

    /**
     * @return string representation.
     */
    @Override
    public String toString() {
        return ("SignalStrength:"
                + " " + mGsmSignalStrength
                + " " + mGsmBitErrorRate
                + " " + mCdmaDbm
                + " " + mCdmaEcio
                + " " + mEvdoDbm
                + " " + mEvdoEcio
                + " " + mEvdoSnr
                + " " + mLteSignalStrength
                + " " + mLteRsrp
                + " " + mLteRsrq
                + " " + mLteRssnr
                + " " + mLteCqi
                + " " + mTdScdmaRscp
                + " " + (isGsm ? "gsm|lte" : "cdma"));
    }

從mSignalStrength=SignalStrength: 99 0 -120 -160 -120 -1 -1 17 -113 -15 -40 2147483647 2147483647 gsm|lte,可看出RSRP=-113,RSRQ=-15等等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM