Android 获取手机信号
16lz
2021-01-23
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); }}
更多相关文章
- android各种声音类型级数设定及默认值
- 4.2.2.5 Android如何检测网络的类型为3G、2G、wap、wifi
- android音频口通信(二)——2FSK信号解调
- CAMERA(12)---[Android相机]光线传感器识别环境光亮强度
- Android之EditText指定类型数据
- 判断手机类型
- JS判断客户端类型(ipad,iphone,android)
- android Intent打开各种类型文件((PDF、word、excel、ppt、chm)
- Android 的相关文件类型