您的位置:首页 > 移动开发 > Android开发

Android 获取 Wifi 信号强度,检测是 Wifi 或者流量,获取手机电池电量及充电状态

2017-06-16 11:35 911 查看



初始化:
private static BroadcastReceiver batteryLevelRcvr;
private static IntentFilter batteryLevelFilter;
public static int batteryLevel = 0;
public static int isChargingNum = 0;
public static int WifiStrength = 0;
public static int isWifiTraffic = 0;
1
2
3
4
5
6

在 onCreater 中使用:
monitorBatteryState();
1

编写代码:
/**
* 检查用户是用的 Wifi 还是 流量
* */
public static void isWifiOrTraffic() {
ConnectivityManager cm;
cm = (ConnectivityManager) instance
.getSystemService(Context.CONNECTIVITY_SERVICE);
boolean isWifitrue = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.getState() == NetworkInfo.State.CONNECTED ? true : false;
boolean isGprstrue = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
.getState() == NetworkInfo.State.CONNECTED ? true : false;
if (isWifitrue == true) {
setWifiOrTraffic(4);
}
if (isGprstrue == true) {
setWifiOrTraffic(5);
}
}

public static void setWifiOrTraffic(int wifi) {
isWifiTraffic = wifi;
}

public static int getWifiOrTraffic() {
System.out
.println("=====4-wifi 5-traffic =====JAVA getWifiOrTraffic() : "
+ isWifiTraffic);
return isWifiTraffic;
}

/**
* Wifi的连接速度及信号强度
* */
public int obtainWifiInfo() {
int strength = 0;
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); // 取得WifiManager对象
WifiInfo info = wifiManager.getConnectionInfo(); // 取得WifiInfo对象
if (info.getBSSID() != null) {
strength = WifiManager.calculateSignalLevel(info.getRssi(), 5); // 链接信号强度,5为获取的信号强度值在5以内
// int speed = info.getLinkSpeed(); // 链接速度
// String units = WifiInfo.LINK_SPEED_UNITS; // 链接速度单位
// String ssid = info.getSSID(); // Wifi源名称
}
return strength; // return info.toString();
}

public BroadcastReceiver rssiReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Rssi", "=====RSSI changed");
setWifiStrength(obtainWifiInfo());
}
};

public void setWifiStrength(int strength) {
WifiStrength = strength;
}

public static int getWifiStrength() {
System.out.println("=====JAVA getWifiStrength() : " + WifiStrength);
return WifiStrength;
}

@Override
public void onPause() {
super.onPause();
unregisterReceiver(rssiReceiver);
Log.d("Rssi", "=====Unregistered");
}

/**
* 1.获取手机电池电量 2.检查手机是否充电
* */
public static void monitorBatteryState() {
isWifiOrTraffic();
batteryLevelRcvr = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int status = intent.getIntExtra("status", -1);
int level = -1;
if (rawlevel >= 0 && scale > 0) {
level = (rawlevel * 100) / scale;
}
setBatteryLevel(level);
switch (status) {
case BatteryManager.BATTERY_STATUS_CHARGING:
setIsCharging(1);
break;
case BatteryManager.BATTERY_STATUS_FULL:
setIsCharging(2);
break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
setIsCharging(3);
break;
default:
break;
}
}
};
batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
instance.registerReceiver(batteryLevelRcvr, batteryLevelFilter);
}

public static void setBatteryLevel(int level) {
batteryLevel = level;
}

public static int getBatteryLever() {
System.out.println("=====getBatteryLever() : " + batteryLevel);
return batteryLevel;
}

public static void setIsCharging(int num) {
isChargingNum = num;
}

public static int getIsCharging() {
System.out
.println("=====1-ing 2-full 3-no =====JAVA getIsCharging() : "
+ isChargingNum);
return isChargingNum;
}

protected void onResume() {
super.onResume();
if (isWxLogin) {
Log.d(TAG, "====Login Success");
loadWXUserInfo();
}
registerReceiver(rssiReceiver, new IntentFilter(
WifiManager.RSSI_CHANGED_ACTION));
Log.d("Rssi", "=====Registered");
}

@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(batteryLevelRcvr);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: