package com.ritterliu.newBatteryWidget;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.IBinder;
import android.util.Log;
import android.widget.RemoteViews;
import android.widget.Toast;
public class NewBatteryWidget extends AppWidgetProvider{
private static int currentBatteryLevel;
private static int currentBatteryStatus;
private static boolean firstTimeToCreate=true;
public void onUpdate(Context context,AppWidgetManager appWidgetManager,int[] appWidgetIds)
{
super.onUpdate(context, appWidgetManager, appWidgetIds);
/** 启动自动更新电池信息的service */
context.startService(new Intent(context,updateService.class));
/** 为AppWidget设置点击事件的响应,启动显示电池信息详情的activity */
Intent startActivityIntent = new Intent(context,NewBatteryInfoActivity.class);
PendingIntent Pintent = PendingIntent.getActivity(context,0,startActivityIntent,0);
RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.newrelativelayout);
views.setOnClickPendingIntent(R.id.imageView,Pintent);
appWidgetManager.updateAppWidget(appWidgetIds,views);
}
/** 自动更新电池信息的service,通过AlarmManager实现定时不间断地发送电池信息 */
public static class updateService extends Service{
Bitmap bmp; //定义机器人图片
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
/** 定义一个接收电池信息的broascastReceiver */
private BroadcastReceiver batteryReceiver=new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
currentBatteryLevel=intent.getIntExtra("level", 0);
currentBatteryStatus=intent.getIntExtra("status", 0);
}
};
private BroadcastReceiver powerConnectedReceiver=new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
setViews();
}
};
private BroadcastReceiver powerDisconnectedReceiver=new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
setViews();
}
};
/** 设置Widget的显示 */
private void setViews()
{
/** 定义一个AppWidgetManager */
AppWidgetManager manager=AppWidgetManager.getInstance(this);
/** 定义一个RemoteViews,实现对AppWidget界面控制 */
RemoteViews views=new RemoteViews(getPackageName(),R.layout.newrelativelayout);
if(currentBatteryStatus==2||currentBatteryStatus==5) //当正在充电或充满电时,显示充电的图片
{
if(currentBatteryLevel>=95)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.jcharge);
}
else if(currentBatteryLevel>=85&& currentBatteryLevel<95)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.icharge);
}
else if(currentBatteryLevel>=75&& currentBatteryLevel<85)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.hcharge);
}
else if(currentBatteryLevel>=65&& currentBatteryLevel<75)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.gcharge);
}
else if(currentBatteryLevel>=55&& currentBatteryLevel<65)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.fcharge);
}
else if(currentBatteryLevel>=45&& currentBatteryLevel<55)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.echarge);
}
else if(currentBatteryLevel>=35&& currentBatteryLevel<45)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.dcharge);
}
else if(currentBatteryLevel>=25&& currentBatteryLevel<35)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.ccharge);
}
else if(currentBatteryLevel>=15&& currentBatteryLevel<25)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.bcharge);
}
else
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.acharge);
}
}
else //未在充电时,显示不在充电状态的系列图片
{
if(currentBatteryLevel>=95)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.j);
}
else if(currentBatteryLevel>=85&& currentBatteryLevel<95)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.i);
}
else if(currentBatteryLevel>=75&& currentBatteryLevel<85)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.h);
}
else if(currentBatteryLevel>=65&& currentBatteryLevel<75)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.g);
}
else if(currentBatteryLevel>=55&& currentBatteryLevel<65)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.f);
}
else if(currentBatteryLevel>=45&& currentBatteryLevel<55)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.e);
}
else if(currentBatteryLevel>=35&& currentBatteryLevel<45)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.d);
}
else if(currentBatteryLevel>=25&& currentBatteryLevel<35)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.c);
}
else if(currentBatteryLevel>=15&& currentBatteryLevel<25)
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.b);
}
else
{
bmp=BitmapFactory.decodeResource(getResources(),R.drawable.a);
}
}
/** 设置AppWidget上显示的图片和文字的内容 */
views.setImageViewBitmap(R.id.imageView,bmp);
views.setTextViewText(R.id.tv,currentBatteryLevel+"%");
ComponentName thisWidget=new ComponentName(this,NewBatteryWidget.class);
/** 更新AppWidget */
manager.updateAppWidget(thisWidget, views);
}
public void onStart(Intent intent,int startId)
{
super.onStart(intent, startId);
/** 注册接收器 */
registerReceiver(batteryReceiver,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
/** 增加了对于POWER_CONNECTED和DISCONNECTED事件的监听,
* 以实现充电时信息的动态变化,避免了原来需要依赖AlarmManager
* 每隔一秒发送检测信息来实现,节约了电量,用原来隔一秒更新的方法,
* 经过一夜测试,插件耗电量居然占到了8%,汗。。。
*
* */
registerReceiver(powerConnectedReceiver,new IntentFilter(Intent.ACTION_POWER_CONNECTED));
registerReceiver(powerDisconnectedReceiver,new IntentFilter(Intent.ACTION_POWER_DISCONNECTED ));
/** 使用AlarmManager实现,第一次启动Widget时隔一秒立即更新,
* 以后均为一分钟发送一次更新提示信息,实现信息实时动态变化,
* 实现节电功能
* */
long now=System.currentTimeMillis();
long pause;
if(firstTimeToCreate)
{
firstTimeToCreate=false;
pause=1000;
}
else
{
pause=1000*60*2;
}
Intent alarmIntent=new Intent();
alarmIntent=intent;
PendingIntent pendingIntent=PendingIntent.getService(this, 0, alarmIntent, 0);
AlarmManager alarm=(AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP,now+pause,pendingIntent);
setViews();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android 电量显示Widgets插件源码-IT计算机-毕业设计.zip (84个子文件)
Android 电量显示Widgets插件源码
1_120820202404_1.png 53KB
Android 电量显示Widgets插件源码
bin
BatteryWidget.apk 342KB
classes.dex 15KB
NewBatteryWidget.apk 317KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ccharge.png 17KB
hcharge.png 17KB
a.png 11KB
h.png 11KB
echarge.png 16KB
c.png 12KB
ic_launcher.png 4KB
gcharge.png 17KB
jcharge.png 16KB
fcharge.png 16KB
f.png 11KB
e.png 11KB
bcharge.png 18KB
i.png 11KB
b.png 12KB
d.png 11KB
alphahas.png 11KB
dcharge.png 16KB
g.png 11KB
icharge.png 16KB
j.png 10KB
acharge.png 17KB
drawable-mdpi
ic_launcher.png 2KB
classes
com
ritterliu
newBatteryWidget
NewBatteryWidget$updateService$2.class 1008B
NewBatteryInfoActivity$updateService$2.class 1KB
NewBatteryInfoActivity$1.class 933B
R$layout.class 476B
R$id.class 722B
R$drawable.class 1KB
NewBatteryWidget$updateService$3.class 1008B
NewBatteryWidget$updateService$1.class 1KB
NewBatteryWidget$updateService.class 5KB
R$attr.class 376B
R.class 671B
NewBatteryInfoActivity.class 6KB
NewBatteryInfoActivity$updateService$1.class 1KB
R$string.class 1KB
R$xml.class 435B
NewBatteryWidget.class 2KB
NewBatteryInfoActivity$updateService.class 1KB
resources.ap_ 307KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ccharge.png 19KB
hcharge.png 19KB
a.png 14KB
h.png 14KB
echarge.png 19KB
c.png 14KB
ic_launcher.png 4KB
gcharge.png 19KB
jcharge.png 16KB
fcharge.png 19KB
f.png 14KB
e.png 14KB
bcharge.png 21KB
i.png 13KB
b.png 15KB
d.png 14KB
alphahas.png 14KB
dcharge.png 19KB
g.png 14KB
icharge.png 19KB
j.png 10KB
acharge.png 19KB
values
strings.xml 1KB
drawable-mdpi
ic_launcher.png 3KB
layout
newrelativelayout.xml 744B
newlayout.xml 2KB
xml
new_battery_widget.xml 917B
assets
gen
com
ritterliu
newBatteryWidget
R.java 4KB
proguard.cfg 1KB
.settings
org.eclipse.jdt.core.prefs 203B
src
com
ritterliu
newBatteryWidget
NewBatteryWidget.java 8KB
NewBatteryInfoActivity.java 8KB
.project 819B
.classpath 356B
project.properties 360B
AndroidManifest.xml 1KB
1-120R02022260-L.png 107KB
共 84 条
- 1
资源评论
芝麻粒儿
- 粉丝: 6w+
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功