在实际工作中,常常遇到APP显示网络强度的需求。
使用过程中涉及的应用权限如下:
<!--wifi及网络状态-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
一、网络强度分为二个部分:
1、手机网络GSM(2G/3G等)
GSM需要注册PhoneStateListener监听器,通过监听网络改变,获取手机当前网络的强度。
/* Update the listener, and start it */
MyListener = new MyPhoneStateListener();
Tel = ( TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE);
Tel.listen(MyListener , PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
/* Start the PhoneState listener */
private class MyPhoneStateListener extends PhoneStateListener
{
/* Get the Signal strength from the provider,
* each tiome there is an update
*从得到的信号强度,每个tiome供应商有更新
*/
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength)
{
super.onSignalStrengthsChanged(signalStrength);
//信号强度换算公式
int astSignal = -113 + 2*signalStrength.getGsmSignalStrength();
gsm.setText("GSM 信号强度asu :" + signalStren