问题描述
- 如何在应用程序中获取网络强度?
- 我想在手机设备中显示网络的网络强度。
现在我可以检查到 wifi 的连接。但是我需要知道网络信号强度,我要在下面的代码基础上再添加什么代码?ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = connectivityManager .getActiveNetworkInfo(); NetworkInfo mobNetInfo = connectivityManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); TextView netStatus = (TextView) findViewById(R.id.netStatus); if (activeNetInfo != null) { netStatus.setText("" Connection Status - Connected ""+activeNetInfo.getTypeName()); } else if (mobNetInfo != null) { netStatus.setText("" Connection Status - Connected ""+mobNetInfo.getTypeName()); } else { netStatus.setText("" Connection Status - Not Connected ""); }
解决方案
使用下面的代码:
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo Info = cm.getActiveNetworkInfo(); if (Info == null || !Info.isConnectedOrConnecting()) { Log.i(TAGNo connection""); } else { int netType = Info.getType(); int netSubtype = Info.getSubtype(); if (netType == ConnectivityManager.TYPE_WIFI) { Log.i(TAGWifi connection""); WifiManager wifiManager = (WifiManager) getApplication().getSystemService(Context.WIFI_SERVICE); List<ScanResult> scanResult = wifiManager.getScanResults(); for (int i = 0; i < scanResult.size(); i++) { Log.d(""scanResult""Speed of wifi""+scanResult.get(i).level);//The db level of signal } // Need to get wifi strength } else if (netType == ConnectivityManager.TYPE_MOBILE) { Log.i(TAGGPRS/3G connection""); // Need to get differentiate between 3G/GPRS } }
解决方案二:
wifi的信号强度可以这样获取mWifiManager =(WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);mWifiManager.getConnectionInfo().getRssi()对应的就是下面两个方法 public WifiInfo getConnectionInfo() { try { return mService.getConnectionInfo(); } catch (RemoteException e) { return null; } } public int getRssi() { return mRssi; }
时间: 2024-11-03 00:54:20