Before you get too far into this, you need to be aware that the widget
architecture isn't designed to update that frequently. There's a lot
of overhead, and updating every ten seconds will seriously impact
battery life. As will having a service continually running in the
background, for that matter.

It's a cool idea but I'm not sure it's well suited for a widget,
unfortunately.

String

On May 28, 2:43 pm, "[email protected]" <[email protected]> wrote:
> I am currently learning about widgets in Android.
>
> I want to create a WIFI widget that will display the SSID, the RSSI
> (Signal) level.
>
> But I also want to be able to send it data from a service I am running
> that calculates the Quality of Sound over wifi.
>
> Here is what I have after some reading and a quick tutorial:
>
> ---
>
>     public class WlanWidget extends AppWidgetProvider{
>
>         RemoteViews remoteViews;
>         AppWidgetManager appWidgetManager;
>         ComponentName thisWidget;
>         WifiManager wifiManager;
>
>         public void onUpdate(Context context, AppWidgetManager
> appWidgetManager,
>                         int[] appWidgetIds) {
>                         Timer timer = new Timer();
>                         timer.scheduleAtFixedRate(new WlanTimer(context, 
> appWidgetManager),
> 1, 10000);
>
>         }
>
>         private class WlanTimer extends TimerTask{
>
>                         RemoteViews remoteViews;
>                         AppWidgetManager appWidgetManager;
>                         ComponentName thisWidget;
>
>         public WlanTimer(Context context, AppWidgetManager appWidgetManager)
> {
>
>                         this.appWidgetManager = appWidgetManager;
>                         remoteViews = new 
> RemoteViews(context.getPackageName(),
> R.layout.widget);
>                         thisWidget = new ComponentName(context, 
> WlanWidget.class);
>                         wifiManager =
> (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
>
>         }
>
>         @Override
>         public void run() {
>
>                         remoteViews.setTextViewText(R.id.widget_textview,
>                         wifiManager.getConnectionInfo().getSSID());
>                         appWidgetManager.updateAppWidget(thisWidget, 
> remoteViews);
>         }
>
>         }
>
> ---
>
> The above seems to work ok, it updates the SSID on the widget every 10
> seconds.
>
> However what is the most efficent way to get the information from my
> service that will be already running to update periodically on my
> widget?
>
> Also is there a better approach to updating the the widget rather than
> using a timer and timertask? (Avoid polling)

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to