Как управлять музыкальным проигрывателем с помощью кнопок в уведомлении и как прослушивать действия кнопок в уведомлении
Уведомление для музыкального проигрывателя Android
comment
Я понятия не имею об этом, но мне нужно использовать удаленный просмотр для этого. Пожалуйста, опубликуйте любой пример кода для этого
- person Babin   schedule 19.02.2014
comment
Перейдите по ссылке ниже, и вы получите правильный ответ. [Полный код][1] [1]: stackoverflow.com/questions/12526228/
- person Roadies   schedule 19.08.2014
Ответы (1)
Вы должны использовать setOnClickPendingIntent() RemoteViews для прослушивания действия кнопки из уведомления.
Метод setOnClickPendingIntent() привязывает PendingIntent к ответу на событие нажатия кнопки.
Пример кода выглядит следующим образом:
private void showControllerInNotification() {
PendingIntent pendingIntent = null;
Intent intent = null;
//Inflate a remote view with a layout which you want to display in the notification bar.
if (mRemoteViews == null) {
mRemoteViews = new RemoteViews(getPackageName(),
R.layout.notification_control_bar);
}
//Define what you want to do after clicked the button in notification.
//Here we launcher a service by an action named "ACTION_STOP" which will stop the music play.
intent = new Intent(ACTION_STOP);
pendingIntent = PendingIntent.getService(getApplicationContext(),
REQUEST_CODE_STOP, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
//In R.layout.notification_control_bar,there is a button view identified by bar_btn_stop
//We bind a pendingIntent with this button view so when user click the button,it will excute the intent action.
mRemoteViews.setOnClickPendingIntent(R.id.bar_btn_stop,
pendingIntent);
//Create the notification instance.
mNotification = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.drawable.ic_launcher).setOngoing(true)
.setWhen(System.currentTimeMillis())
.setContent(mRemoteViews)
.build();
//Show the notification in the notification bar.
mNotifiManager.notify(NOTIFICATION_ID, mNotification);
}
обновление 1:
Служба, которая отвечает на действие, выглядит следующим образом:
public class MediaPlayerService extends Service {
public static final String ACTION_STOP="xxx.yyy.zzz.ACTION_STOP";
public static final String ACTION_PLAY="xxx.yyy.zzz.ACTION_PLAY";
public static final String ACTION_PAUSE="xxx.yyy.zzz.ACTION_PAUSE";
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent != null) {
String action = intent.getAction();
if (!TextUtils.isEmpty(action)) {
if (action.equals(ACTION_PLAY)) {
startPlay();
}else if(action.equals(ACTION_PAUSE)) {
pausePlay();
}else if(action.equals(ACTION_STOP)) {
stopPlay();
}
}
}
return super.onStartCommand(intent, flags, startId);
}
private void stopPlay(){
// do the play work here
}
private void stopPause(){
// do the pause work here
}
private void stopPlay(){
// do the stop work here
}
}
Зарегистрируйте службу в манифесте:
<service
android:name="xxx.yyy.zzz.MusicPlayService"
android:exported="false" >
<intent-filter>
<action android:name="xxx.yyy.zzz.ACTION_PLAY" />
<action android:name="xxx.yyy.zzz.ACTION_PAUSE" />
<action android:name="xxx.yyy.zzz.ACTION_STOP" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
Для управления воспроизведением музыки вы можете скопировать некоторые полезные пакеты кода из здесь.
person
Ricky
schedule
19.02.2014
@AvatarQing дает мне предложение. Я создаю большое представление уведомлений, используя RemoteView для управления воспроизведением/паузой, как эта ссылка ( stackoverflow.com/questions/14508369/… ). Все правильно, но когда я нажимаю кнопку возврата устройства и выхожу из события щелчка приложения (воспроизведение/пауза/вперед /Закрыть) не работает. Пожалуйста, помогите мне.
- person Helal Khan; 11.03.2014
Вы использовали элементы управления воспроизведением/паузой в действии, а не в службе?
- person Ricky; 17.03.2014
не могли бы вы объяснить фильтр намерений в сервисе, пожалуйста?
- person juztcode; 11.09.2020
@juztcode это ваши пользовательские действия, которые вы можете определить
- person Ricky; 11.09.2020
@AvatarQing, это необязательно или обязательно? Я следил за учебниками, и они не были упомянуты
- person juztcode; 12.09.2020
@juztcode действие соответствует намерению, которое вы передаете PendingIntent.getService() , независимо от того, необходимо оно или нет, зависит от ваших потребностей.
- person Ricky; 13.09.2020