Android Widget开发实例-电量监控

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

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 )
{
registerReceiver( batteryReceiver, new IntentFilter( Intent.ACTION_BATTERY_CHANGED ) ); //注册一个动作改变事件捕获,这里为电量改变时即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;
}

}
}
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!