获取设备电池用时间日期等详细信息

有时,我们需要获得电池的信息,特别是在全屏模式下,我们希望实时掌握手机的相关信息(比如电池,时间等)需要用到一些方法:

先看一下Android怎么获得系统时间:

Calendar calendar = Calendar.getInstance;

int hour = calendar.get(Calendar.Hour_OF_DAY);

照例,可以获得系统详细的时间和日期,值得注意的是:在设置日期格式时,要注意月份和分钟分别开来:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm ");//设置日期格式

月份是大写的MM,而时间是小写的,一旦搞错将得不到正解的信息

下面看看电池信息:

* 电池信息的取得,调用registerReceiver()方法。
第1个参数,设置BroadcastReceiver实例
第2个参数,设置追加了Intent.ACTION_BATTERY_CHANGED处理的IntentFilter实例。
● 在BroadcastReceiver的onReceive()事件,接收到的Intent.ACTION_BATTERY_CHANGED,包括下面的信息。
“status”(int类型)…状态,定义值是BatteryManager.BATTERY_STATUS_XXX。
“health”(int类型)…健康,定义值是BatteryManager.BATTERY_HEALTH_XXX。
“present”(boolean类型)
“level”(int类型)…电池剩余容量
“scale”(int类型)…电池最大值。通常为100。
“icon-small”(int类型)…图标ID。
“plugged”(int类型)…连接的电源插座,定义值是BatteryManager.BATTERY_PLUGGED_XXX。
“voltage”(int类型)…mV。
“temperature”(int类型)…温度,0.1度单位。例如 表示197的时候,意思为19.7度。
“technology”(String类型)…电池类型,例如,Li-ion等等。

看一个实例:

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.TextView;

public class get_imformation_battery extends Activity {
 private TextView tvBatteryLevel;

private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {

@Override
  public void onReceive(Context context, Intent intent) {
  String action = intent.getAction();
  if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {

int level = intent.getIntExtra("level", 0);
    int scale = intent.getIntExtra("scale", 100); //电池最大值。通常为100

tvBatteryLevel.setText("Battery level: "
      + String.valueOf(level * 100 / scale) + "%");


    //其它信息
    {
    int level1 = intent.getIntExtra("level", -1);// 获取电池剩余电量
    int health = intent.getIntExtra("health", -1);// 获取电池剩余电量的状态
    int voltage = intent.getIntExtra("voltage", -1);// 获取电压值
    int temperature = intent.getIntExtra("temperature", -1);// 获取电池的温度

System.out.println(level1 + ":" + health + ":" + voltage
      + ":" + temperature);
    }

}
  }

};

@Override
 public void onResume() {
  super.onResume();

registerReceiver(mBatteryInfoReceiver, new IntentFilter(
    Intent.ACTION_BATTERY_CHANGED));
 }

@Override
 public void onPause() {
  super.onPause();

unregisterReceiver(mBatteryInfoReceiver);
 }

@Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  //setContentView(R.layout.main);

//tvBatteryLevel = (TextView) findViewById(R.id.tvBatteryLevel);
 }
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/82f8611c7afafcbc1b1ab815aa1392b9.html