通知Android音乐播放器

如何从通知中的button控制音乐播放器,以及如何从通知中听button动作

Solutions Collecting From Web of "通知Android音乐播放器"

您应该使用RemoteViews的setOnClickPendingIntent()来侦听通知中的button操作。

方法setOnClickPendingIntent()将绑定PendingIntent来响应button单击事件。

示例代码如下所示:

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> 

对于音乐播放控制,您可以从这里复制一些有用的代码sinppets。