Виджет музыкального плеера Android

Я работаю над виджетами музыкального плеера (виджет домашнего экрана). Ему нужно только сыграть 1 песню (желательно с классом MediaPlayer). Но я не уверен, как его реализовать. Я как бы неопытен в разработке Android, просто так об этом упоминалось.

Класс, который я до сих пор расширяет AppWidgetProvider , и я думаю, что это не очень хорошая идея, чтобы позволить этому классу обрабатывать музыкальную часть, а скорее Service . И если да, то как?

Кроме того, у меня есть 3 кнопки: воспроизведение, пауза и остановка, и я могу различить, какой из них был нажат в onReceive(...) .

Заранее спасибо!


Вот класс.

 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); } } 

Добавлен <service android:name=".MusicService" android:enabled="true" /> в манифест!

В onUpdate(...) вашего AppWidgetProvider используйте что-то вроде этого, чтобы запустить службу (этот пример связывает службу с событием нажатия кнопки):

 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); 

Для получения дополнительной информации смотрите здесь

Intereting Posts
Как удалить вкладки ActionBar в альбомной ориентации только для планшетов Ошибки обработки в Retrofit 2 RX Моделирование смены палитр с помощью шейдеров OpenGL (в LibGDX) Не удалось преобразовать файл '45907c80e09917e1b776adf038505958' для сопоставления атрибутов {artifactType = jar} с использованием преобразования AarTransform java.lang.UnsatisfiedLinkError Ошибка: слишком большой код Android M FingerprintManager.isHardwareDetected () возвращает false на Samsung Galaxy S5 Отказ APK от Android с помощью java.lang.AssertionError: невозможно в java.lang.Enum Как создать BufferReceived () для захвата голоса с помощью RecognizerIntent? Портативный Android Studio Android studio Ошибка «Неподдерживаемые модули обнаружены: компиляция не поддерживается для следующих модулей» Как получить ранее ассоциированные Wi-Fi-сети? Повторно открыть фоновое приложение через элемент уведомлений Нужно показать SQLite-запрос в порядке убывания Android: Does Notification.DEFAULT_VIBRATE требует виброзвонок?