- 浏览: 185356 次
- 性别:
- 来自: 浙江
文章分类
最新评论
安卓系统通过广播来接受电池状态,下面是我写的一个简单电池管理项目。
广播接受类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>
这是简单的实现的电源管理。
广播接受类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>
这是简单的实现的电源管理。
- BatteryShow.rar (1.3 MB)
- 下载次数: 4
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 987使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 749java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 608我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 587Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 527先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 642相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 852参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 402图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 461参考链接:http://www.cnblogs.com/lwb ... -
解决ViewPager的addOnPageChangeListener不加载第一个的问题
2017-03-18 17:53 2649今天在使用ViewPager的时候发现个问题。 需求如下: ... -
clone方法的使用
2017-01-04 10:14 555由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2114Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 614最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 676以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 471参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 424参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1236参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2380参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 642http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 612用代码简单介绍下自定义控件的使用: 先看主activity: ...
相关推荐
实现一个电池属性实时监听器。这些属性包括温度,电池电量....等等。而且,使用Service,Broadcast,以及Thread的方式来实现。MyBatteryService后台获取Battery属性值,然后,在Activity中进行相关数据的显示。
根据给定的信息,“Android手机设备管理平台”,我们可以深入探讨与之相关的知识点,主要围绕Android设备管理、特别是STF(Smartphone Test Farm)这一具体实现展开。 ### Android设备管理概述 Android设备管理是...
本论文探讨了基于Android的手机电池保姆软件的设计与实现,涵盖了电池管理系统、软件设计模式、数据存储和管理、用户界面设计、电池健康度评估、电池充电管理、软件测试和验证、安全性和隐私保护等方面,为读者提供...
在IT行业中,手机电池管理是移动设备性能优化的关键部分,特别是在智能设备日益依赖电力的今天。本文将深入探讨“手机电池管理”的相关知识点,并结合“c语言”这一标签,讲解如何利用C语言来实现电池状态监测和管理...
本文将深入探讨“android手机应用管理器”小程序的核心功能、工作原理以及它如何为初级Android用户带来便利。 首先,我们要了解的是“本地应用”概念。本地应用指的是用户通过Google Play商店或其他第三方应用市场...
"基于 Android 的手机电池保姆软件的设计与实现" 本文主要介绍基于 Android 平台的手机电池保姆软件的设计与实现。随着移动智能设备的高速兴起, Android 操作系统以 59.5%的市场份额占主导地位, Android 移动...
"Android 手机管理助手"是一款专为Android操作系统设计的应用程序,它集合了多项实用功能,包括系统信息查看、硬件信息监测、文件管理、应用程序管理以及任务管理等,旨在为用户提供全面的手机维护和优化服务。...
总结来说,基于Android的手机电池保姆软件设计与实现涵盖了电池管理技术、Android系统API的利用、用户界面设计、权限管理等多个方面,需要开发者具备扎实的编程基础、深入理解Android系统以及关注用户体验。...
在Android平台上,Widget是应用程序的一种扩展,允许用户在主屏幕上放置小型交互式组件,以便...通过这些调整,用户现在可以更高效、更稳定地使用这个电池信息小部件,而不用担心其对手机电池寿命的影响或操作不便。
本文主要探讨了一款针对Android系统的手机电池管理软件的设计与实现。软件工程的方法被应用于整个开发流程,包括软件可行性研究、需求分析、系统设计、实现以及系统测试等阶段。该软件的核心功能是监测电池电量,...
Android手机管家是一款针对Android平台设计的系统优化与安全管理应用,它集合了清理垃圾、内存加速、病毒查杀、电池管理等多种功能,旨在为用户提供一个安全、高效的手机环境。本文将从源码角度出发,深入探讨其背后...
在当前智能手机市场,电池续航能力和管理策略是用户十分关心的问题,而Android作为智能手机操作系统的主流之一,其电池管理系统的设计与实现对于用户体验有着直接影响。本文将详细介绍Android电池管理系统的实现过程...
此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的...
在Android平台上,电池监控是一项重要的功能,它可以帮助用户了解设备的电力消耗情况,优化电源...通过这个项目,你不仅可以学习到Android开发的相关技能,还能为用户提供实用的电池管理工具,提升他们的设备使用体验。
在Android平台上,绘制电池电量电压动态曲线是一项...这不仅对开发者理解Android系统的电池管理机制有帮助,也为用户提供了直观的电量监控工具。在实践中,还需要根据具体需求进行调整和优化,以适应各种不同的场景。
通过Web化的管理方式,用户可以充分利用计算机的处理能力和大屏幕,提高工作效率,同时减少了对手机的依赖,保护了手机的电池寿命。总体而言,基于Web的Android安卓手机短信管理程序是一个实用且高效的工具,它利用...
总结,开发基于Android的电池状态检测APP涉及的主要知识点有:BroadcastReceiver的使用、BatteryManager接口、UI设计与更新、定时任务实现、权限管理以及性能优化。通过理解和运用这些技术,我们可以创建一个功能...
在Android手机管理中,内存管理是一项至关重要的任务,它直接影响着设备的运行速度和整体性能。Android系统采用了一种称为“Dalvik虚拟机”的机制来管理应用程序的内存,但随着时间的推移,不恰当的使用或者应用不当...