1.獲取時間
mTvShowTime = findViewById(R.id.tv_show_time);
//獲取系統顯示時間格式,根據不同的格式顯示
ContentResolver cv = this.getContentResolver();
String strTimeFormat = android.provider.Settings.System.getString(cv,
android.provider.Settings.System.TIME_12_24);
if ("24".equals(strTimeFormat)) {
CharSequence s = "HH:mm";
mTvShowTime.setFormat24Hour(s);
} else {
CharSequence s = "HH:mm";
mTvShowTime.setFormat12Hour(s);
}
2.獲取WIFI強度
//廣播
public class NetworkStateBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equalsIgnoreCase(WifiManager.WIFI_STATE_CHANGED_ACTION)){
wifiStateChange(context, intent);
}else{
networkChange(context,intent);
}
}
public void wifiStateChange(Context context, Intent intent){
int wifi_state = intent.getIntExtra("wifi_state", 0);
int level = Math.abs(((WifiManager)context.getSystemService(Context.WIFI_SERVICE)).getConnectionInfo().getRssi());
Log.e("network", "wifi狀態:" + wifi_state + "; wifi強度:" + level);
mWifiChange.level(level);
}
public void networkChange(Context context,Intent intent){
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
assert manager != null;
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if(networkInfo != null){
int type = networkInfo.getType();
switch (type) {
case ConnectivityManager.TYPE_MOBILE:
Log.e("network", "手機網絡");
break;
case ConnectivityManager.TYPE_WIFI:
Log.e("network", "wifi網絡");
wifiStateChange(context, intent);
break;
}
}else{
Log.e("network", "沒有網絡");
}
}
public interface WifiChange{
void level(int level);
}
private WifiChange mWifiChange;
public void setWifiChange(WifiChange wifiChange){
mWifiChange = wifiChange;
}
}
//獲取的使用方法,在Acitivity中調用示例
//註冊wifi廣播
NetworkStateBroadcastReceiver broadcastReceiver = new NetworkStateBroadcastReceiver();
IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
registerReceiver(broadcastReceiver, filter);
broadcastReceiver.setWifiChange(new NetworkStateBroadcastReceiver.WifiChange() {
@Override
public void level(int level) {
// 是一個int型數據,其中0到-50表示信號最好,-50到-70表示信號偏差,小於-70表示最差,有可能連接不上或者掉線,
// 一般Wifi已斷則值爲-127。
if (level < 52) {
mIvWifi.setImageResource(R.mipmap.icon_wifi_four);
} else if (level < 60) {
mIvWifi.setImageResource(R.mipmap.icon_wifi_three);
} else if (level < 70) {
mIvWifi.setImageResource(R.mipmap.icon_wifi_two);
} else if (level < 120) {
mIvWifi.setImageResource(R.mipmap.icon_wifi_one);
} else if (level <= 200) {
mIvWifi.setImageResource(R.mipmap.icon_wifi_none);
}
}
});
3.獲取電量
//獲取系統電量
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void getElectricity() {
BatteryManager batterymanager = (BatteryManager) getSystemService(BATTERY_SERVICE);
//batterymanager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
assert batterymanager != null;
int intProperty = batterymanager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
mTvBattery.setText(intProperty + "%");
if (intProperty <= 20) {
mIvBattery.setImageResource(R.mipmap.icon_power_none);
} else if (intProperty <= 40) {
mIvBattery.setImageResource(R.mipmap.icon_power_one);
} else if (intProperty <= 60) {
mIvBattery.setImageResource(R.mipmap.icon_power_two);
} else if (intProperty <= 80) {
mIvBattery.setImageResource(R.mipmap.icon_power_three);
} else {
mIvBattery.setImageResource(R.mipmap.icon_power);
}
}