Şu anda Android'deki widget'ları öğreniyorum.Bir Widget dinamik olarak nasıl güncellenir (OnUpdate'in çağrılması için 30 dakika beklemiyor)?
SSID'yi, RSSI (Sinyal) seviyesini görüntüleyecek bir WIFI widget'ı oluşturmak istiyorum.
Ayrıca, veriyi, Wifi üzerinden Ses Kalitesini hesaplayan bir hizmetten gönderebilmek istiyorum. İşte
bazı okuma ve hızlı bir öğretici sonra ne var:
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);
}
}
yukarıda Tamam çalışmak gibi widget'ta her 10 saniyede üzerinde SSID günceller.
Ancak, benim widget'ım üzerinde düzenli olarak güncellemek için halihazırda çalışmakta olan hizmetten bilgi almanın en etkili yolu nedir?
Ayrıca bir zamanlayıcı ve timertask kullanmak yerine widget'ı güncellemek için daha iyi bir yaklaşım var mı? Bu RSSI seviyesi değişimleri her koþulur
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
ComponentName thisWidget = new ComponentName(context, WlanWidget.class);
remoteViews.setTextViewText(R.id.widget_QCLevel, " " + qcPercentage);
AppWidgetManager.getInstance(context).updateAppWidget(thisWidget, remoteViews);
: Benim Hizmet aşağıdaki kodu eklemiş
Karan'ın öneri gereğince
GÜNCELLEME (yoklama kaçının) ama hala benim widget üzerinde TextView güncellemeyi, herhangi bir fikir neden? DÜZENLEME
o çalışma var teşekkürler Karan
Bu benim çözümüm, widget'ı 30 dakikadan daha sık otomatik olarak nasıl güncellerim. AlarmManager'ı kullanıyorum: http://stackoverflow.com/questions/5476867/updating-app-widget-using-alarmmanager/#answer-14319020 – petrnohejl