Android获取手机信号强度/信号格数
16lz
2021-01-23
这里的信号强度和格数是指状态栏里的信号条数目
比如这样有4条,获得的值就是4
需要先通过TMS注册一个监听,代码如下
private static int mLteLevel = -1; /** * 监听手机信号变化 */ private static void listenSignalStrengths() { final TelephonyManager telephonyManager = (TelephonyManager) Core.context().getSystemService(Context.TELEPHONY_SERVICE); if (telephonyManager == null) { return; } telephonyManager.listen(new PhoneStateListener() { @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { super.onSignalStrengthsChanged(signalStrength); try { Method getLteLevelMethod = signalStrength.getClass().getMethod("getLteLevel"); mLteLevel = DataUtils.getInt(getLteLevelMethod.invoke(signalStrength)); Log.i("NetUtil", "onSignalStrengthsChanged:" + mLteLevel); } catch (Throwable e) { Log.i("NetUtil", "onSignalStrengthsChanged:" + e); } } }, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); }
mLteLevel作为成员变量,当信号强度发生变化时,他会自己更新,再提供一个getter就可以了
/** * 获取手机信号强度格数,一般为 0-4 */ public static int getLteLevel() { return mLteLevel; }
给listenSignalStrengths方法找住处比较麻烦,所以可以放在静态代码块里,整体就像这样,调用getLteLevel获取就可以了。
不过需要注意的是,第一次取的时候可能是默认值-1,介意的话就把listenSignalStrengths提前到Application也可以。
public class NetUtil { public static final String TAG = "NetUtil"; static { listenSignalStrengths(); } /** * 监听手机信号变化 */ private static void listenSignalStrengths() { final TelephonyManager telephonyManager = (TelephonyManager) Core.context().getSystemService(Context.TELEPHONY_SERVICE); if (telephonyManager == null) { return; } telephonyManager.listen(new PhoneStateListener() { @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { super.onSignalStrengthsChanged(signalStrength); try { Method getLteLevelMethod = signalStrength.getClass().getMethod("getLteLevel"); mLteLevel = DataUtils.getInt(getLteLevelMethod.invoke(signalStrength)); NTLog.i(TAG, "onSignalStrengthsChanged:" + mLteLevel); } catch (Throwable e) { NTLog.i(TAG, "onSignalStrengthsChanged:" + e); } } }, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); } /** * 获取手机信号强度格数,一般为 0-4 */ public static int getLteLevel() { return mLteLevel; }}
更多相关文章
- android音频口通信——2FSK信号调制
- Android 获取手机信号
- android音频口通信(二)——2FSK信号解调
- CAMERA(12)---[Android相机]光线传感器识别环境光亮强度
- android获取wifi信号强度
- Android 获取wifi信号强度
- Android实时获得周围wifi信息(SSID,强度等)
- PHP多进程、信号量及孤儿进程和僵尸进程
- Java中的信号量Semaphore