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

来源:互联网 发布:nznd男团 知乎 编辑:程序博客网 时间:2024/06/06 03:09

http://www.cnblogs.com/wisdom212/p/dumpsys.html


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 #获取当前界面的activityadb 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等等。

1 0
原创粉丝点击