好库网 好库网首页 | 我的好库
安卓专栏

Android Widget开发实例-电量监控

发布者:android
发布日期:2011/4/30 20:27:59   更新日期:2011/4/30 20:27:59
阅读次数:3066
评分:4.80
介绍:一个简单的电量监控代码很好地演示了Android平台下Widget开发中的基础方式。
正文:

作者:Android开发网

一个简单的电量监控代码可以很好的演示Android平台下Widget开发中的基础方式,比如appWidget如何于Service交互以及RemoteViews的演示。完成的工程代码我们稍作美化后提供下载,同时下次开始我们提供一些国外比较优秀的开源工程实例做剖析,从2007年11月至今SDK发布已经近两年了,相信大家可以看到整个Google Android平台的开发还是十分简单的,难度等级和J2ME相似,相信入门的网友只要经常光顾Android开发站点一定会很好掌握的,具体请看如下代码:

 

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.os.IBinder;
import android.widget.RemoteViews;

public class BatteryMonitorWidget extends AppWidgetProvider
{
    public void onUpdate( Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds )
    {
               context.startService(new Intent(context, BatteryMonitorReceiver.class));
    }

    public static class BatteryMonitorReceiver extends Service
    {
        private int currentBatteryLevel = 0;

        private BroadcastReceiver batteryReceiver = new BroadcastReceiver()
        {
            @Override
            public void onReceive( Context context, Intent intent )
            {
                currentBatteryLevel = intent.getIntExtra( "level", 0 );
            }
        };

        @Override
        public void onStart( Intent intent, int startId )
        {
            //注册一个动作改变事件捕获,这里为电量改变时即ACTION_BATTERY_CHANGED
            registerReceiver( batteryReceiver, new IntentFilter( Intent.ACTION_BATTERY_CHANGED ) );  
            RemoteViews views = new RemoteViews( getPackageName(), R.layout.main );  //从layout下main.xml中构造widgets

            //这里我们应该判断currentBatteryLevel的数值来显示图片电量等级,比如battery_level_1或battery_level_5等等,下面是n
            views.setImageViewResource( R.id.ImageView01, R.drawable.battery_level_n );

            views.setTextViewText( R.id.myText, currentBatteryLevel + "%" );  //从BroadcastReceiver读取当前的电量等级


            ComponentName thisWidget = new ComponentName( this, BatteryMonitorWidget.class );
            AppWidgetManager manager = AppWidgetManager.getInstance( this );
            manager.updateAppWidget( thisWidget, updateViews ); //开始执行了
        }

        @Override
        public IBinder onBind( Intent intent )
        {
                  return null;
        }

    }
}

 

 


评论 [发表评论]
账号 密码 还没帐号呢,现在注册一个?

免责声明:好库网所展示的信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。好库网不提供任何保证,并不承担任何法律责任。