public class SystemUtil {
/*
*获取电量 context为UnityPlayer.currentActivity 。
*/
public static float MonitorBatteryState(Context context)
{
IntentFilter iFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent intent = context.registerReceiver(null, iFilter);
int rawLevel = intent.getIntExtra("level", 0); //获得当前电量
int scale = intent.getIntExtra("scale", 0); //获得总电量
//int status = intent.getIntExtra("status", 0); //电池充电状态
return (float)rawLevel / (float)scale;
}
//获取Wifi信号强度 context为UnityPlayer.currentActivity 。
@SuppressWarnings("deprecation")
public static int ObtainWifiInfo(Context context)
{
int strength = 0;
WifiManager wifiManager = (WifiManager)context.getSystemService(WIFI_SERVICE);
WifiInfo info = wifiManager.getConnectionInfo();
if(info.getBSSID() != null)
{
//链接信号强度
strength = WifiManager.calculateSignalLevel(info.getRssi(), 5);
}
return strength;
}
//获取手机网络信号 context为UnityPlayer.currentActivity 。
public static int getMobileSignLevel(Context context)
{
int dbm = -1;
int level = 0;
TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
List<CellInfo> cellInfoList = tm.getAllCellInfo();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
{
if (null != cellInfoList)
{
for (CellInfo cellInfo : cellInfoList)
{
if (cellInfo instanceof CellInfoGsm)
{
CellSignalStrengthGsm cellSignalStrengthGsm = ((CellInfoGsm)cellInfo).getCellSignalStrength();
level = cellSignalStrengthGsm.getLevel();
}
else if (cellInfo instanceof CellInfoCdma)
{
CellSignalStrengthCdma cellSignalStrengthCdma = ((CellInfoCdma)cellInfo).getCellSignalStrength();
level = cellSignalStrengthCdma.getLevel();
}
else if (cellInfo instanceof CellInfoWcdma)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2)
{
CellSignalStrengthWcdma cellSignalStrengthWcdma = ((CellInfoWcdma)cellInfo).getCellSignalStrength();
level = cellSignalStrengthWcdma.getLevel();
}
}
else if (cellInfo instanceof CellInfoLte)
{
CellSignalStrengthLte cellSignalStrengthLte = ((CellInfoLte)cellInfo).getCellSignalStrength();
level = cellSignalStrengthLte.getLevel();
}
}
}
}
return level;
}
}