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. Flutter 与 Android(安卓)相互调用、传递参数
  2. Android电源管理,低电量报警
  3. eclipse 插件网址
  4. 常用的android开发网站
  5. Android电池信息(Battery information)
  6. Androkd开发坏境配置以及常用插件
  7. Windows下Eclipse 安装 android maven插件教程
  8. android 插件化 与一个轻量级框架
  9. NetBeans 7.0 安装 Android(安卓)SDK 开发 Android(安卓)应用程

随机推荐

  1. 【Android(安卓)初学】4、RadioButton &
  2. Android(安卓)自定义加载框dialog
  3. Android(安卓)- 收藏集
  4. Android(安卓)ApiDemos示例解析(194):Vie
  5. android下的回调方法
  6. 那些年不错的Android开源项目-工具篇
  7. Android(安卓)Chromium for WebView代码
  8. Android(安卓)几种网络请求的区别与联系
  9. android 绘制文本居中
  10. Cocos2d-x 3.2导入到Eclipse后出现The im