谁有一个实时显示手机电量的Widget代码,传给我一份作为参考学习吧,重谢!要求可用

解决方案 »

  1.   


     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;
    }
    }
    }
    参考:http://www.uugo.org/project/Android/71122.html