BatteyAppWidget.java


package widget.irdc;import android.appwidget.AppWidgetManager;import android.appwidget.AppWidgetProvider;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.widget.RemoteViews;public class BatteyAppWidget extends AppWidgetProvider { public final static String TAG = "BatteyAppWidgetProvider"; public static BatteyAppWidget mInstance;  public BatteyAppWidget getInstance() {  if (mInstance == null) {   mInstance = new BatteyAppWidget();  }  return mInstance; } public void onUpdate(Context context, AppWidgetManager appwidgetmanager,   int[] appwidgetIds) {  Intent intent = new Intent(context, BatteyService.class);  context.startService(intent);  RemoteViews views = new RemoteViews(context.getPackageName(),    R.layout.main);  appwidgetmanager.updateAppWidget(appwidgetIds, views); } public void onDisabled(Context context) {  super.onDisabled(context);  Intent intent = new Intent(context, BatteyService.class);  context.stopService(intent); } public static void notifyChange(Context context, int m) {  ComponentName thiswidget = new ComponentName(context,    BatteyAppWidget.class);  AppWidgetManager appmanager = AppWidgetManager.getInstance(context);  RemoteViews Views = new RemoteViews(context.getPackageName(),    R.layout.main);  Views.setTextViewText(R.id.tips, m + "%");  if (m > 0 && m <= 25) {   Views.setInt(R.id.ll, "setBackgroundResource", R.drawable.i25);  }  if (m > 25 && m <= 50) {   Views.setInt(R.id.ll, "setBackgroundResource", R.drawable.i50);  }  if (m > 50 && m <= 75) {   Views.setInt(R.id.ll, "setBackgroundResource", R.drawable.i75);  }  if (m > 75 && m <= 100) {   Views.setInt(R.id.ll, "setBackgroundResource", R.drawable.i100);  }  appmanager.updateAppWidget(thiswidget, Views); }}
BatteyService.java
package widget.irdc;import android.app.Service;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.IBinder;public class BatteyService extends Service { //必须使用广播来得到电量的值 public BroadcastReceiver battryreceiver=new BroadcastReceiver() {  @Override  public void onReceive(Context context, Intent intent) {   // TODO Auto-generated method stub   String action=intent.getAction();   if(action.equals(Intent.ACTION_BATTERY_CHANGED))   {    int level=intent.getIntExtra("level",0);    int scale=intent.getIntExtra("scale",100);    int lenvel=level*100/scale;    BatteyAppWidget.notifyChange(context,lenvel);   }  } }; @Override public IBinder onBind(Intent arg0) {  // TODO Auto-generated method stub  return null; }  public void onStart(Intent intent,int startId) {        IntentFilter mIntentFilter=new IntentFilter();        mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);        registerReceiver(battryreceiver,mIntentFilter); }  public void onDestroy() {  unregisterReceiver(battryreceiver);  super.onDestroy(); }}
main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:background="@drawable/i0"    android:orientation="vertical"    android:layout_gravity="center"     ><TextView android:id="@+id/tips"    android:text="Battery level:"     android:layout_width="fill_parent"     android:layout_height="wrap_content"    android:layout_gravity="center_horizontal|center"  android:paddingTop="75px" android:paddingLeft="60px"    android:textColor="@android:color/white"/></LinearLayout>
battry_widget.xml
<?xml version="1.0" encoding="utf-8" ?>  <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"    android:initialLayout="@layout/main" android:updatePeriodMillis="120000"    android:minHeight="50px"    android:minWidth="50px" /> <!--  android:updatePeriodMillis="86400000" 为插件刷新的时间,单位为毫秒,86400000毫秒=24小时android:initialLayout="@layout/main" 为初始化的界面摆布情况android:minHeight="67dip"  为插件最小高度android:minWidth="122dip"  为插件最小宽度 -->

更多相关文章

  1. Android电源管理,低电量报警
  2. eclipse 插件网址
  3. Windows下Eclipse 安装 android maven插件教程
  4. android 插件化 与一个轻量级框架
  5. Android电池电量检测
  6. 【zz】安装Android的Eclipse插件ADT遇到错误“requires 'org.ecl
  7. Android Studio插件之Android Strings.xml To CSV Converter(失效
  8. 【Android 电量优化】电量优化 ( Battery Historian 环境要求 |
  9. Android Studio插件整理

随机推荐

  1. ubuntu 10.10 编译Android2.2问题解决
  2. Android面试复习资料整理
  3. 定制个性化屏保
  4. 【Android】android的基本UI操作(2)以及小
  5. Android(安卓)RecyclerView最全使用详解
  6. android 获取apk签名的序列号
  7. Android(安卓)自定义View实例之进度圆环
  8. Android(安卓)RIL源码研究笔记 の ril_ev
  9. 【android】多语言与国际化
  10. android studio自定义生成jar包基础篇