`
l540151663
  • 浏览: 185356 次
  • 性别: 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手机设备管理平台

    根据给定的信息,“Android手机设备管理平台”,我们可以深入探讨与之相关的知识点,主要围绕Android设备管理、特别是STF(Smartphone Test Farm)这一具体实现展开。 ### Android设备管理概述 Android设备管理是...

    大学毕业论文-—设计基于android的手机电池保姆软件的设计与实现.doc

    本论文探讨了基于Android的手机电池保姆软件的设计与实现,涵盖了电池管理系统、软件设计模式、数据存储和管理、用户界面设计、电池健康度评估、电池充电管理、软件测试和验证、安全性和隐私保护等方面,为读者提供...

    手机电池管理

    在IT行业中,手机电池管理是移动设备性能优化的关键部分,特别是在智能设备日益依赖电力的今天。本文将深入探讨“手机电池管理”的相关知识点,并结合“c语言”这一标签,讲解如何利用C语言来实现电池状态监测和管理...

    android手机应用管理器

    本文将深入探讨“android手机应用管理器”小程序的核心功能、工作原理以及它如何为初级Android用户带来便利。 首先,我们要了解的是“本地应用”概念。本地应用指的是用户通过Google Play商店或其他第三方应用市场...

    毕业设计(论文)--基于Android的手机电池保姆软件的设计与实现.doc

    "基于 Android 的手机电池保姆软件的设计与实现" 本文主要介绍基于 Android 平台的手机电池保姆软件的设计与实现。随着移动智能设备的高速兴起, Android 操作系统以 59.5%的市场份额占主导地位, Android 移动...

    Android 手机管理助手

    "Android 手机管理助手"是一款专为Android操作系统设计的应用程序,它集合了多项实用功能,包括系统信息查看、硬件信息监测、文件管理、应用程序管理以及任务管理等,旨在为用户提供全面的手机维护和优化服务。...

    基于Android的手机电池保姆软件的设计与实现.doc

    总结来说,基于Android的手机电池保姆软件设计与实现涵盖了电池管理技术、Android系统API的利用、用户界面设计、权限管理等多个方面,需要开发者具备扎实的编程基础、深入理解Android系统以及关注用户体验。...

    AndroidWidget机器人电池插件

    在Android平台上,Widget是应用程序的一种扩展,允许用户在主屏幕上放置小型交互式组件,以便...通过这些调整,用户现在可以更高效、更稳定地使用这个电池信息小部件,而不用担心其对手机电池寿命的影响或操作不便。

    基于Android的手机电池保姆软件的设计与实现 毕业设计.doc

    本文主要探讨了一款针对Android系统的手机电池管理软件的设计与实现。软件工程的方法被应用于整个开发流程,包括软件可行性研究、需求分析、系统设计、实现以及系统测试等阶段。该软件的核心功能是监测电池电量,...

    Android手机管家源码.rar

    Android手机管家是一款针对Android平台设计的系统优化与安全管理应用,它集合了清理垃圾、内存加速、病毒查杀、电池管理等多种功能,旨在为用户提供一个安全、高效的手机环境。本文将从源码角度出发,深入探讨其背后...

    Android实现电池管理系统

    在当前智能手机市场,电池续航能力和管理策略是用户十分关心的问题,而Android作为智能手机操作系统的主流之一,其电池管理系统的设计与实现对于用户体验有着直接影响。本文将详细介绍Android电池管理系统的实现过程...

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

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

    android电池监控

    在Android平台上,电池监控是一项重要的功能,它可以帮助用户了解设备的电力消耗情况,优化电源...通过这个项目,你不仅可以学习到Android开发的相关技能,还能为用户提供实用的电池管理工具,提升他们的设备使用体验。

    安卓手机电池电量电压动态曲线的绘制

    在Android平台上,绘制电池电量电压动态曲线是一项...这不仅对开发者理解Android系统的电池管理机制有帮助,也为用户提供了直观的电量监控工具。在实践中,还需要根据具体需求进行调整和优化,以适应各种不同的场景。

    基于web的Android安卓手机短信管理程序

    通过Web化的管理方式,用户可以充分利用计算机的处理能力和大屏幕,提高工作效率,同时减少了对手机的依赖,保护了手机的电池寿命。总体而言,基于Web的Android安卓手机短信管理程序是一个实用且高效的工具,它利用...

    基于Android的电池状态检测APP

    总结,开发基于Android的电池状态检测APP涉及的主要知识点有:BroadcastReceiver的使用、BatteryManager接口、UI设计与更新、定时任务实现、权限管理以及性能优化。通过理解和运用这些技术,我们可以创建一个功能...

    android手机管理

    在Android手机管理中,内存管理是一项至关重要的任务,它直接影响着设备的运行速度和整体性能。Android系统采用了一种称为“Dalvik虚拟机”的机制来管理应用程序的内存,但随着时间的推移,不恰当的使用或者应用不当...

Global site tag (gtag.js) - Google Analytics