Cómo construir un Widget Android Simple

Así que tengo un poco de experiencia en la construcción de aplicaciones para Android. Pero ahora me gustaría construir un widget para Android que se sentaría en la pantalla de inicio y mostrar un botón, y cuando se presiona el botón se reproduce un sonido. He estado buscando tutoriales en línea sobre cómo configurar un widget de Android, pero no puedo parecer que lo averiguar. ¿Hay algunos buenos tutoriales por ahí sobre cómo hacer un widget independiente este simple o en algún lugar que pueda empezar? Gracias de antemano, Peter

Primero Crea un nuevo archivo de diseño dentro de res / layout, debajo de la estructura del proyecto, que definirá el diseño del widget (widgetlayout.xml) de acuerdo con la siguiente estructura.

<TextView android:text="@string/widgettext" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.8" android:layout_gravity="center_vertical" android:textColor="#000000"></TextView> <TextView android:text="@string/widgetmoodtext" android:id="@+id/widgetMood" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.3" android:layout_gravity="center_vertical" android:textColor="#000000"></TextView> <ImageButton android:id="@+id/widgetBtn" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="0.5" android:src="@drawable/smile_icon" android:layout_gravity="center_vertical"> </ImageButton> 

Cree la carpeta res / xml bajo la estructura del proyecto Cree un archivo xml (widgetproviderinfo.xml) con los siguientes parámetros:

  <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="220dp" android:minHeight="72dp" android:updatePeriodMillis="86400000" android:initialLayout="@layout/widgetlayout"> </appwidget-provider> 

Ahora debe crear el servicio que reacciona a la interacción del usuario con el botón de imagen sonriente (CurrentMoodService.java).

 @Override public int onStartCommand(Intent intent, int flags, int startId) { super.onStart(intent, startId); updateMood(intent); stopSelf(startId); return START_STICKY; } private void updateMood(Intent intent) { if (intent != null){ String requestedAction = intent.getAction(); if (requestedAction != null && requestedAction.equals(UPDATEMOOD)){ this.currentMood = getRandomMood(); int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0); AppWidgetManager appWidgetMan = AppWidgetManager.getInstance(this); RemoteViews views = new RemoteViews(this.getPackageName(),R.layout.widgetlayout); views.setTextViewText(R.id.widgetMood, currentMood); appWidgetMan.updateAppWidget(widgetId, views); } } } 

Después de definir el servicio, es hora de implementar la clase de proveedor de widgets (CurrentMoodWidgetProvider.java).

  @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.onUpdate(context, appWidgetManager, appWidgetIds); for (int i=0; i<appWidgetIds.length; i++) { int appWidgetId = appWidgetIds[i]; RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgetlayout); Intent intent = new Intent(context, CurrentMoodService.class); intent.setAction(CurrentMoodService.UPDATEMOOD); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); views.setOnClickPendingIntent(R.id.widgetBtn, pendingIntent); appWidgetManager.updateAppWidget(appWidgetId, views); } } 

Finalmente, es necesario declarar el Servicio y el Proveedor de Widget de la Aplicación en el Manifiesto (AndroidManifest.xml).

  <service android:name=".CurrentMoodService"> </service> <receiver android:name=".CurrentMoodWidgetProvider"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widgetproviderinfo" /> </receiver> 

Y si desea descargar todo el código fuente, eche un vistazo a la url a continuación …

http://sites.google.com/site/androidsourcecode/src/CurrentMoodWidgetProject.rar?attredirects=0

  • Iniciar VPNService desde dentro de widget android
  • Android - widget de acordeón
  • Android equivalente de UIWebView en Xcode
  • Android: Cómo crear un widget de botón personalizado
  • ¿Es posible crear el widget como Google Play Música en la pantalla de bloqueo?
  • ¿Cuál es la diferencia para actualizar Android App Widget entre dos enfoques?
  • Widget de actualización de Android desde el receptor de difusión
  • RemoteViews setViewVisibility en Android Widget
  • Android: reproductor de música por defecto en lockscreen
  • Widget de Android diferente orientación vertical y horizontal
  • Widget simple de Android que inicia la actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.