2011-11-09 85 views
0

大家好,我想用动画制作android中的电池小工具。我想我可以制作动画,但我想知道如何一次又一次地获得电池状态?可以通过线程来完成吗?或者需要其他东西。这里是动画的简单代码。请解释我将如何一次又一次地从电池中获取数据。我知道这些功能,但我不知道使用它们的机制。Android中的电池小工具

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(); 




} 

回答

0

为电池事件注册广播接收器并且不会每次查询。

IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
mContext.registerReceiver(batteryLevelReceiver, batteryLevelFilter); 
+0

但是何时何地? –

+1

在您的oncreate()注册广播接收器如上所示。现在,只要电池状态发生变化,框架就会广播一个您可以在batteryLevelRecevier中观察到的事件。意图在其数据字段中包含电池级别,您可以使用“int rawlevel = intent.getIntExtra(”level“,-1);” – Vinoth