Pregunta

Estoy trabajando en un reproductor de música en widgets (widget de pantalla de inicio) .. Sólo se necesita para jugar 1 canción, (de preferencia con la clase MediaPlayer). Pero no estoy seguro de cómo ponerlo en práctica. Soy una especie de experiencia con el desarrollo de Android, con tal de que se menciona.

La clase que tengo hasta ahora se extiende AppWidgetProvider, y supongo que no es una buena idea dejar que esta clase de mango la parte de reproducción de música, sino más bien un Service. Y si es así, ¿cómo?

Además, tengo 3 botones: reproducción, pausa y parada, y puedo distinguir cuál se ha presionado en onReceive(...)

.

Gracias de antemano!


Esta es la clase.

public class MusicManager extends AppWidgetProvider {

    private final String ACTION_WIDGET_PLAY = "PlaySong";
    private final String ACTION_WIDGET_PAUSE = "PauseSong";
    private final String ACTION_WIDGET_STOP = "StopSong";   
    private final int INTENT_FLAGS = 0;
    private final int REQUEST_CODE = 0;

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
            int[] appWidgetIds) {

        RemoteViews controlButtons = new RemoteViews(context.getPackageName(),
                R.layout.main);

        Intent playIntent = new Intent(context, MusicService.class);

        Intent pauseIntent = new Intent(context, MusicService.class);

        Intent stopIntent = new Intent(context, MusicService.class);


        PendingIntent playPendingIntent = PendingIntent.getService(
                context, REQUEST_CODE, playIntent, INTENT_FLAGS);
        PendingIntent pausePendingIntent = PendingIntent.getService(
                context, REQUEST_CODE, pauseIntent, INTENT_FLAGS);
        PendingIntent stopPendingIntent = PendingIntent.getService(
                context, REQUEST_CODE, stopIntent, INTENT_FLAGS);

        controlButtons.setOnClickPendingIntent(
                R.id.btnPlay, playPendingIntent);
        controlButtons.setOnClickPendingIntent(
                R.id.btnPause, pausePendingIntent);
        controlButtons.setOnClickPendingIntent(
                R.id.btnStop, stopPendingIntent);

        appWidgetManager.updateAppWidget(appWidgetIds, controlButtons);         
    }
}
¿Fue útil?

Solución

<service android:name=".MusicService" android:enabled="true" /> Añadido al manifiesto!

Otros consejos

En el método de la onUpdate(...) AppWidgetProvider, usar algo como esto para iniciar un servicio (en este ejemplo asocia el servicio a un evento de clic de botón):

Intent intent = new Intent(context, MusicService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);

// Get the layout for the App Widget and attach an on-click listener to the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);
views.setOnClickPendingIntent(R.id.button, pendingIntent);

Para más información ver aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top