歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發-獲取設備電池用時間日期等詳細信息

有時,我們需要獲得電池的信息,特別是在全屏模式下,我們希望實時掌握手機的相關信息(比如電池,時間等)需要用到一些方法:

先看一下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);
 }
}

Copyright © Linux教程網 All Rights Reserved