`
l540151663
  • 浏览: 181710 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

android手机电池管理

阅读更多
  安卓系统通过广播来接受电池状态,下面是我写的一个简单电池管理项目。

  广播接受类BatteryReceiver如下:
package com.lml.batteryshow;

import java.util.HashMap;
import java.util.Map;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.BatteryManager;
import android.os.Message;

public class BatteryReceiver extends BroadcastReceiver {

Message message;
Map<String, String> map = null;

@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
map = new HashMap<String, String>();
/** 电池剩余电量 */
map.put("level",  intent.getIntExtra("level", 0)+"");
/** 获取电池满电量数值 */
map.put("scale",  intent.getIntExtra("scale", 0)+"");
/** 获取电池技术支持 */
map.put("technology", intent.getStringExtra("technology"));
/** 获取电池状态 */
map.put("status",  intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN)+"");
/** 获取电源信息 */
map.put("plugType",  intent.getIntExtra("plugged", 0)+"");
/** 获取电池健康度 */
map.put("health",  intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN)+"");
/** 获取电池电压 */
map.put("voltage", intent.getIntExtra("voltage", 0) + "");
/** 获取电池温度 */
map.put("temperature", intent.getIntExtra("temperature", 0) + "");
}
if (map != null) {
message = new Message();
message.obj = map;
MainActivity.handler1.dispatchMessage(message);
}
}
}

   主类MainActivity代码实现如下:
package com.lml.batteryshow;

import java.text.DecimalFormat;
import java.util.Map;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.TextView;

public class MainActivity extends Activity {

/** 电池状态 */
private TextView battery_Status;
/** 电池允许状态 */
private TextView battery_Run_Status;
/** 电池电压 */
private TextView battery_Voltage;
/** 电池温度 */
private TextView battery_Temperature;
/** 电池技术 */
private TextView battery_Technology;
/** 电池运行时间 */
private TextView battery_Time;
/** 电池电量 */
private TextView battery_Level;

Thread  thread;

public static Handler handler1;
public Handler handler2;

BatteryReceiver receiver;

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

init();

thread= new Thread(runnable);
thread.start();

regReceiver();

handler1 = new Handler() {
@Override
public void handleMessage(Message msg) {
MainActivity.this.handleMessage(msg);
}
};

/** 设置启动时间 */
handler2 = new Handler() {
@Override
public void handleMessage(Message msg) {
battery_Time.setText("启动后时间:"+msg.obj.toString());
}
};
}

private void regReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);

receiver=new BatteryReceiver();
registerReceiver(receiver, filter);
}

private void handleMessage(Message msg){
@SuppressWarnings("unchecked")
Map<String, String> map = (Map<String, String>) msg.obj;

String plugType=map.get("plugType");
/** 设置电池状态 为USB充电 */
if (plugType.equals("2")) {
battery_Status.setText("电池状态:正在充电(USB)");

}
/** 设置电池状态 为交流电充电 */
else if (plugType.equals("1")) {
battery_Status.setText("电池状态:正在充电(交流电)");

}
/** 设置电池状态 */
else if (plugType.equals("0")) {
battery_Status.setText("电池状态:正在耗电");
}

/** 获取电池健康度 */
String  health = map.get("health");
if (health.equals(2)) {
battery_Run_Status.setText("电池健康度;正常");
} else {
battery_Run_Status.setText("电池健康度;一般");
}

/** 设置电池电压 */
battery_Voltage.setText( "电池电压:"+map.get("voltage") + "mV");

/** 设置电池温度 */
double temp = Double.parseDouble(map.get("temperature") );
battery_Temperature.setText("电池温度:"+ (temp / 10) + "°C");



/** 获取电池满电量数值 */
double scale = Double.parseDouble(map.get("scale") );

/** 获取电池剩余电量 */
double level = Double.parseDouble(map.get("level") );

double per =level/scale;
String strPer=optionNum(per);

/** 设置电池电量 */
battery_Level.setText("电池电量:"+Double.parseDouble(strPer) * 100 + "%");

/** 设置电池技术 */
battery_Technology.setText( "电池技术:"+map.get("technology"));
}



@Override
protected void onDestroy() {
super.onDestroy();

thread.interrupt();
unregisterReceiver(receiver);
}

public String optionNum(double f) {
        DecimalFormat df = new DecimalFormat("#.00");
        return df.format(f);
    }

private void init() {
/** 获取电池状态对象 */
battery_Status = (TextView) findViewById(R.id.battery_status);
/** 获取电池运行状态 */
battery_Run_Status = (TextView) findViewById(R.id.battery_health);
/** 获取电池电压 */
battery_Voltage = (TextView) findViewById(R.id.battery_voltage);
/** 获取电池温度 */
battery_Temperature = (TextView) findViewById(R.id.battery_temperature);
/** 获取电池技术 */
battery_Technology = (TextView) findViewById(R.id.battery_technology);
/** 开机电池运行时间 */
battery_Time = (TextView) findViewById(R.id.boot_time);
/** 获取电池电量对象 */
battery_Level = (TextView) findViewById(R.id.battery);
}

Runnable runnable=new Runnable() {

@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
long temp = SystemClock.elapsedRealtime();
Message message = new Message();
message.obj = Util.transitionTime(temp);
handler2.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

}
};

}

帮助类util如下:
package com.lml.batteryshow;

public class Util {
public static String transitionTime(long time) {
long temp1 = time / 1000;
long temp2 = temp1 / 60;
long temp3 = temp2 / 60;
String h = temp3 % 60 + "";
String m = temp2 % 60 + "";
String s = temp1 % 60 + "";

if (m.length() < 2) {
m = "0" + m;
}
if (s.length() < 2) {
s = "0" + s;
}
String time1 = h + ":" + m + ":" + s;
System.out.println(time1);
return time1;
}
}

布局文件activity_main.xml如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="50dp"
    android:gravity="center_vertical">

    <TextView
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="电池状态"
        android:textSize="20sp"
        android:layout_marginBottom="40dp"/>
    <TextView
        android:id="@+id/battery_status"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/battery_health"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/battery_voltage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/battery_temperature"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
   
    <TextView
        android:id="@+id/battery_technology"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/battery"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/boot_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

这是简单的实现的电源管理。
分享到:
评论

相关推荐

    Android-电池管理-实时获取电池电量,温度...等属性。

    实现一个电池属性实时监听器。这些属性包括温度,电池电量....等等。而且,使用Service,Broadcast,以及Thread的方式来实现。MyBatteryService后台获取Battery属性值,然后,在Activity中进行相关数据的显示。

    基于Android的电池管理工具.zip

    此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的...

    android手机安全卫士

    清理手机缓存,提高手机性能,优化电池管理 高级工具: 自动ip拨号,手机号码归属地查询,更改归属地位置,常用号码查询。 安全专题: 1、通过0权限上传下载数据,重启手机等案例,深入讲解android沙箱,安全机制和...

    Android跳转应用权限设置页面(适配各大手机厂商系统)

    这时候希望重新去打开该权限,那么问题来了,Android厂家定制的room五花八门,很多时候却发现找不到权限管理的入口。为了解决这一问题,如果我们应用中直接提供权限管理入口给用户,是不是会很方便的解决用户这一...

    Android应用源码安卓源码(172个合集).zip

    Android手机的VoIP客户端 Sipdroid.rar Android有未接来电后处理(判断未接来电).rar Android模仿乐淘的应用程序分析源码.zip Android游戏源码——忍者快跑.rar Android自动发送短信.rar Android自动开关机实现.rar ...

    安卓电量管理相关-Android电池监控已经是实现了电池的监控和哪一些应用用电量如何还是也已经实现了手机的省电管理模式也可以开始省电模式管理让您的手机app可以使用的更久.rar

    Android 电池监控,已经是实现了,电池的监控和哪一些应用用电量如何,还是也已经实现了,手机的省电管理模式,也可以开始省电模式(管理),让您的手机app,可以使用的更久.rar,太多无法一一验证是否可用,程序如果...

    android跳转设置页面(国内各大手机厂商适配终极工具类)

    android打开应用权限设置页(国内各大手机厂商适配终极工具类)

    Android 资源管理器源代码

    程序说明 -----------------------------... 小安任务助手是一款简单易用的任务管理软件,它可以使用户更方便的关闭正在运行的程序,显示手机CPU、内存、SD卡和电池状态等系统信息,还可用来卸载用户已安装的应用软件。

    基于Android的项目管理小助手.zip

    此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的...

    android源码包集合1

    Android手机的VoIP客户端 Sipdroid.rar Android无线点餐系统.rar Android模仿乐淘的应用程序分析源码.zip android电话、短信黑白名单拦截、电话录音.rar Android系统源码获取及编译.zip android项目实例 商业项目源...

    《Google Android SDK开发范例大全(第3版)》.pdf

    6.2 手机电池计量还剩多少 306 6.3 群发拜年短信给联系人 309 6.4 开始与停止系统服务 312 6.5 通过短信发送e-mail通知 316 6.6 手机拨接状态 321 6.7 有来电,发送邮件通知 324 6.8 存储卡剩余...

    新版Android开发教程.rar

    Android Android Android Android 手机新概念 操作系统的选择 -------- 定制和长尾 � 重构 � MVC 和 Web APP 架构 Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐...

    Google Android SDK开发范例大全(第3版) 1/5

    6.2 手机电池计量还剩多少 6.3 群发拜年短信给联系人 6.4 开始与停止系统服务 6.5 通过短信发送E-mail通知 6.6 手机拨接状态 6.7 有来电,发送邮件通知 6.8 存储卡剩余多少容量 6.9 访问本机内存与存储卡 6.10 实现...

    一种基于Android系统网络模块功耗的评估和分析

    基于Android系统网络模块功耗...2. Android 系统中的电池管理和功耗优化技术 3. 移动互联网技术在 Android 系统中的应用 4. Android 系统中的系统功耗评估和分析方法 5. 基于 Android 系统的移动网络模块设计和实现技术

    Google Android SDK开发范例大全(第3版) 4/5

    6.2 手机电池计量还剩多少 6.3 群发拜年短信给联系人 6.4 开始与停止系统服务 6.5 通过短信发送E-mail通知 6.6 手机拨接状态 6.7 有来电,发送邮件通知 6.8 存储卡剩余多少容量 6.9 访问本机内存与存储卡 6.10 实现...

    Google Android SDK开发范例大全(第3版) 3/5

    6.2 手机电池计量还剩多少 6.3 群发拜年短信给联系人 6.4 开始与停止系统服务 6.5 通过短信发送E-mail通知 6.6 手机拨接状态 6.7 有来电,发送邮件通知 6.8 存储卡剩余多少容量 6.9 访问本机内存与存储卡 6.10 实现...

    基于Android的高校住院管理系统.zip

    Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件...

    基于Android的软件订单管理系统.zip

    Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件...

    Android编程实现对电池状态的监视功能示例

    本文实例讲述了Android编程实现对电池状态的监视功能。分享给大家供大家参考,具体如下: 最近在开发一个与GPS相关的项目,因为其中涉及到了GPS的使用,众所周知,GPS是相当耗电的,因此就想着怎么能知道当前的电量...

Global site tag (gtag.js) - Google Analytics