enforceAccessPermission();
IntentFilter intentFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(mNetworkBroadcastReceiver,intentFilter);
private NetworkBroadcastReceiver mNetworkBroadcastReceiver = new NetworkBroadcastReceiver();
public class NetworkBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive: zhidong 来了");
if(intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)){
getNetworkType();
}
}
}
private void enforceAccessPermission(){
this.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_NETWORK_STATE,"ConnectivityService");
}
private void getNetworkType(){
ConnectivityManager manager =
(ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if(networkInfo == null){
Log.d(TAG, "getNetworkType: zhidong network 为空");
return;
}
int nType = networkInfo.getType();
switch(nType){
case ConnectivityManager.TYPE_WIFI:
Log.d(TAG, "getNetworkType: zhidong network :WIFI");
WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
wifiManager.getConnectionInfo().getLinkSpeed();
break;
case ConnectivityManager.TYPE_ETHERNET:
Log.d(TAG, "getNetworkType: zhidong network :ETHERNET");
String speed = runShellCommand("cat /sys/class/net/eth0/speed").trim() + "Mbps";
break;
default:
Log.d(TAG, "getNetworkType: zhidong network default:"+nType);
break;
}
}
public static String runShellCommand(String command) {
Runtime runtime;
Process proc = null;
StringBuffer stringBuffer = null;
try {
runtime = Runtime.getRuntime();
proc = runtime.exec(command);
stringBuffer = new StringBuffer();
if (proc.waitFor() != 0) {
System.err.println("exit value = " + proc.exitValue());
}
BufferedReader in = new BufferedReader(new InputStreamReader(
proc.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
stringBuffer.append(line + " ");
}
} catch (Exception e) {
System.err.println(e);
} finally {
try {
proc.destroy();
} catch (Exception e2) {
}
}
return stringBuffer.toString();
}