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

Android如何得到电量、温度、电压

2015-04-08 15:43 465 查看
<pre name="code" class="java">java代码:
package org.cyj604b.getcputemperature;

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

public class Battery extends Activity {

private int BatteryN;       //目前电量
private int BatteryV;       //电池电压
private double BatteryT;        //电池温度
private String BatteryStatus;   //电池状态
private String BatteryTemp;     //电池使用情况

public TextView TV;

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

// 注册一个系统 BroadcastReceiver,作为访问电池计量之用这个不能直接在AndroidManifest.xml中注册
registerReceiver(mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

TV = (TextView)findViewById(R.id.TV);

}

/* 创建广播接收器 */
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver()
{
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
/*
* 如果捕捉到的action是ACTION_BATTERY_CHANGED, 就运行onBatteryInfoReceiver()
*/
if (Intent.ACTION_BATTERY_CHANGED.equals(action))
{
BatteryN = intent.getIntExtra("level", 0);    //目前电量
BatteryV = intent.getIntExtra("voltage", 0);  //电池电压
BatteryT = intent.getIntExtra("temperature", 0);  //电池温度

switch (intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN))
{
case BatteryManager.BATTERY_STATUS_CHARGING:
BatteryStatus = "充电状态";
break;
case BatteryManager.BATTERY_STATUS_DISCHARGING:
BatteryStatus = "放电状态";
break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
BatteryStatus = "未充电";
break;
case BatteryManager.BATTERY_STATUS_FULL:
BatteryStatus = "充满电";
break;
case BatteryManager.BATTERY_STATUS_UNKNOWN:
BatteryStatus = "未知道状态";
break;
}

switch (intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN))
{
case BatteryManager.BATTERY_HEALTH_UNKNOWN:
BatteryTemp = "未知错误";
break;
case BatteryManager.BATTERY_HEALTH_GOOD:
BatteryTemp = "状态良好";
break;
case BatteryManager.BATTERY_HEALTH_DEAD:
BatteryTemp = "电池没有电";
break;
case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
BatteryTemp = "电池电压过高";
break;
case BatteryManager.BATTERY_HEALTH_OVERHEAT:
BatteryTemp =  "电池过热";
break;
}
TV.setText("目前电量为" + BatteryN + "% --- " + BatteryStatus + "\n" + "电压为" + BatteryV + "mV --- " + BatteryTemp + "\n" + "温度为" + (BatteryT*0.1) + "℃");
}
}
};
}


xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
android:id = "@+id/TV"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android应用