Android 8.1 (O)信号强度介绍和定制

                               0  在Android中对移动数据操作的几个类和接口如下:

1 TelephonyManager 类 主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息,在应用程序中可以使用这些get方法获取相关数据

  TelephonyManager类的对象可以通过Context.getSystemService(Context.TELEPHONY_SERVICE)方法来获得,需要注意的是有些通讯信息的获取对应用程序的权限有一定的限制,在开发的时候需要为其添加相应的权限。

2 PhoneStateListener类方法: (移动数据强度和类型 在打电话、SIM卡插拔、连接状态等状态改变而受影响,因此需要在状态下分别检测数据强度和类型 监听回调)

1.onDataActivity(intdirection) :activity 数据状态改变时监听回调

2.onServiceStateChanged(ServiceState serviceState) {//设备服务状态改变监听回调

3.onSignalStrengthsChanged(SignalStrength signalStrength) {//信号强度改变监听回调

4.onDataConnectionStateChanged(intstate) {//数据连接状态

5.onCallStateChanged(intstate, String incomingNumber) {//电话状态改变

当信号强度发生变化时,打印log如下

                  

                      1 SystemUI对于信号强度的客制化

MobileSignalController 对于信号强度的监听:

 class MobilePhoneStateListener extends PhoneStateListener {
        public MobilePhoneStateListener(int subId, Looper looper) {
            super(subId, looper);
        }

        @Override
        public void onSignalStrengthsChanged(SignalStrength signalStrength) {
            if (DEBUG) {
                Log.d(mTag, "onSignalStrengthsChanged signalStrength=" + signalStrength +
                        ((signalStrength == null) ? "" : (" level=" + signalStrength.getLevel())));
            }
            mSignalStrength = signalStrength;
            updateTelephony();
        }
.....................................
}

 

    /**
     * Updates the current state based on mServiceState, mSignalStrength, mDataNetType,
     * mDataState, and mSimState.  It should be called any time one of these is updated.
     * This will call listeners if necessary.
     */
    private final void updateTelephony() {
        if (DEBUG && FeatureOptions.LOG_ENABLE) {
            Log.d(mTag, "updateTelephonySignalStrength: hasService=" + hasService()
                    + " ss=" + mSignalStrength);
        }
        mCurrentState.connected = hasService() && mSignalStrength != null;
        handleIWLANNetwork();
        if (mCurrentState.connected) { //如果有SIM卡信号
                    获取信号强度
            if (!mSignalStrength.isGsm() && mConfig.alwaysShowCdmaRssi) {
                mCurrentState.level = mSignalStrength.getCdmaLevel();
            } else {
                mCurrentState.level = mSignalStrength.getLevel();
            }
            /// M: Customize the signal strength level. @ {
            mCurrentState.level = mStatusBarExt.getCustomizeSignalStrengthLevel(
                    mCurrentState.level, mSignalStrength, mServiceState);
        
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值