package com.tid.Ejemplo81_widgetBotones; import java.util.Random; import android.app.Service; import android.appwidget.AppWidgetManager; import android.content.ComponentName; import android.content.Intent; import android.os.IBinder; import android.util.Log; import android.widget.RemoteViews; public class ViewService extends Service { public static String TAG="TID_EXAMPLE"; public ComponentName projectWidget; public RemoteViews remoteViews; @Override public IBinder onBind(Intent intent) { Log.d(TAG, "service::::onBind:"); return null; } @Override public void onCreate() { Log.d(TAG, "service::::onCreate:"); remoteViews = new RemoteViews(this.getPackageName(), R.layout.widget_layout); projectWidget = new ComponentName(this, MyWidgetProvider.class); super.onCreate(); } @Override public void onStart(Intent intent, int startId) { final String packag=intent.getPackage(); String PACKAGE="com.tid.Ejemplo81_widgetBotones"; final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext()); ComponentName thisAppWidget = new ComponentName(PACKAGE, PACKAGE+"."+"MyWidgetProvider"); final int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget); Log.d(TAG, "service::::onStart["+String.valueOf(startId)+"]:"+intent.getClass().toString()); new Thread(new Runnable() { public void run() { try {//TODO no funciona por que no accede a los elementos del widget, probar maƱana while(true) { Thread.sleep(1000); Log.d(TAG, "actualiza!!"); if (appWidgetManager.getAppWidgetIds(projectWidget).length > 0) { int number = (new Random().nextInt(100)); remoteViews.setTextViewText(R.id.textView, "update with["+String.valueOf(number)+"] widgets["+String.valueOf(appWidgetIds.length)+"]"); appWidgetManager.updateAppWidget(projectWidget, remoteViews); } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start(); super.onStart(intent, startId); } @Override public void onDestroy() { Log.d(TAG, "service::::onDestroy:"); super.onDestroy(); } }