Как управлять музыкальным проигрывателем с помощью кнопок в уведомлении, и как слушать кнопку действия с уведомлениемИзвещение андроид музыкальный плеер
ответ
Вы должны использовать 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>
Для управления воспроизведением музыки вы можете скопировать некоторые полезные коды с here.
thank u ... но как я могу получить его в сервисе? – Babin
Я обновил свой ответ, пожалуйста, проверьте это. – AvatarQing
@AvatarQing дает мне предложение. Я создаю большое уведомление с помощью RemoteView для управления воспроизведением/паузой, как эта ссылка (stackoverflow.com/questions/14508369/...) Все правильно, но когда я нажимаю кнопку возврата устройства и выхожу из события клика приложения (Play/Pause/Forward/Close) не работает. Пожалуйста, помогите мне. –
Я понятия не имею об этом, но мне нужно использовать удаленный просмотр для этого. PLS отправить любой пример кода для этого – Babin
Follw Ниже ссылка, и вы получите правильный ответ. [Полный код] [1] [1]: http://stackoverflow.com/questions/12526228/how-to-put-media-controller-button-on-notification-bar/25379408 # 25379408 – Roadies