public class MobilePhoneState {    private TelephonyManager telephonyManager;    private ServiceState mServiceState;    private SignalStrength mSignalStrength;    private int mDataState;    private MobilePhoneStateChangeListener mobilePhoneStateChangeListener;    private MobilePhoneStateListener mobilePhoneStateListener;    private MobileState mobileState;    public MobilePhoneState(Context context){        telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);        mobileState = new MobileState();        mobileState.dataConnect = telephonyManager.getDataState() == DATA_CONNECTED;        mobileState.dataNetType = telephonyManager.getDataNetworkType();        mobilePhoneStateListener = new MobilePhoneStateListener();        telephonyManager.listen(mobilePhoneStateListener,                PhoneStateListener.LISTEN_SERVICE_STATE                        | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS                        | PhoneStateListener.LISTEN_CALL_STATE                        | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE                        | PhoneStateListener.LISTEN_DATA_ACTIVITY);    }    public void setMobilePhoneStateChangeListener(MobilePhoneStateChangeListener mobilePhoneStateChangeListener) {        this.mobilePhoneStateChangeListener = mobilePhoneStateChangeListener;        mobilePhoneStateChangeListener.onMobilePhoneStateChange(mobileState.signalLevel,mobileState.dataConnect,mobileState.dataNetType);    }    public void unregister(){        if(telephonyManager != null){            telephonyManager.listen(mobilePhoneStateListener,PhoneStateListener.LISTEN_NONE);        }    }    class MobilePhoneStateListener extends PhoneStateListener {        @Override        public void onSignalStrengthsChanged(SignalStrength signalStrength) {            super.onSignalStrengthsChanged(signalStrength);            mSignalStrength = signalStrength;            updateTelephony();        }        @Override        public void onServiceStateChanged(ServiceState serviceState) {            super.onServiceStateChanged(serviceState);            mServiceState = serviceState;            updateTelephony();        }        @Override        public void onDataConnectionStateChanged(int state, int networkType) {            super.onDataConnectionStateChanged(state, networkType);            mDataState = state;            mobileState.dataNetType = networkType;            updateTelephony();        }    }    private void updateTelephony(){        boolean connected = hasService() && mSignalStrength != null;        int level = 0;        boolean dataConnect;        if(connected){            level = mSignalStrength.getLevel();        }        dataConnect = mDataState == DATA_CONNECTED;        mobileState.signalLevel = level;        mobileState.dataConnect = dataConnect;        if(mobilePhoneStateChangeListener != null){            mobilePhoneStateChangeListener.onMobilePhoneStateChange(mobileState.signalLevel,mobileState.dataConnect,mobileState.dataNetType);        }    }    private boolean hasService() {        if (mServiceState != null) {            return mServiceState.getState() == ServiceState.STATE_IN_SERVICE;        } else {            return false;        }    }    class MobileState{        public int signalLevel;        public boolean dataConnect;        public int dataNetType;    }    public interface MobilePhoneStateChangeListener{        /**         * @param signalLevel 信号强度         * @param dataConnect 连接互联网         * @param dataNetType 网络类型         * */        void onMobilePhoneStateChange(int signalLevel, boolean dataConnect, int dataNetType);    }}

更多相关文章

  1. android各种声音类型级数设定及默认值
  2. 4.2.2.5 Android如何检测网络的类型为3G、2G、wap、wifi
  3. android音频口通信(二)——2FSK信号解调
  4. CAMERA(12)---[Android相机]光线传感器识别环境光亮强度
  5. Android之EditText指定类型数据
  6. 判断手机类型
  7. JS判断客户端类型(ipad,iphone,android)
  8. android Intent打开各种类型文件((PDF、word、excel、ppt、chm)
  9. Android 的相关文件类型

随机推荐

  1. Android技术架构演进与未来
  2. android资讯类软件框架
  3. Android类库打包 (续)
  4. Android(安卓)开发常用代码片段
  5. Android 无线接口层RIL
  6. Android 基于注解IOC组件化/模块化的架构
  7. android中AVD的使用
  8. Android实践手册:该如何应用Android知识到
  9. Ubuntu14.04下最新Android(安卓)NDK安装
  10. Android(安卓)中 Bitmap 和 Drawable 相