0

Hi all I want to make a battery widget in android with animation. I think I will be able to animate but I want to know that how can I get the battery status again and again? Will it be OK to do it through thread? Or something else is required. Here is the simple code for animation. Please explain how will I get the data from battery again and again all the time.I know the functions but I don't know the mechanism to use them.

    public class HelloWidget  extends AppWidgetProvider{

    RemoteViews remoteViews;
    AppWidgetManager appWidgetManager;
    ComponentName thisWidget;
    ImageView img;
    Bitmap icon, icon1;
    int counter = 0;

    @Override
    public void onUpdate(Context context, final AppWidgetManager appWidgetManager,
    int[] appWidgetIds) {



        this.appWidgetManager = appWidgetManager;
        remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
        thisWidget = new ComponentName(context, HelloWidget.class);
        remoteViews.setImageViewResource(R.id.imgv, R.drawable.icon2);
        appWidgetManager.updateAppWidget(thisWidget, remoteViews);


        ( new Thread() 
        {

            public void run()
            {

                while(true)
                {
                    if(counter%15>=0 && counter%15 <=7)
                    {
                        remoteViews.setImageViewResource(R.id.imgv, R.drawable.icon2);
                    }
                    else
                    {
                        remoteViews.setImageViewResource(R.id.imgv, R.drawable.icon);
                    }
                    appWidgetManager.updateAppWidget(thisWidget, remoteViews);
                    counter++;
                }

             }

        }

            ).start();




}
Jawad Amjad
  • 2,532
  • 2
  • 29
  • 59

1 Answers1

0

Register broadcast receiver for battery events and don't query every time.

IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
mContext.registerReceiver(batteryLevelReceiver, batteryLevelFilter);
Vinoth
  • 5,687
  • 11
  • 44
  • 56
  • 1
    In your oncreate() register the broadcast receiver as shown above. Now whenever there is a change in battery status the framework will broadcast a event which you can observe in batteryLevelRecevier. The intent contains the battery level in its data field which you can extract using "int rawlevel = intent.getIntExtra("level", -1);" – Vinoth Nov 10 '11 at 03:26