2014-02-19 8 views
6

Как управлять музыкальным проигрывателем с помощью кнопок в уведомлении, и как слушать кнопку действия с уведомлениемИзвещение андроид музыкальный плеер

+0

Я понятия не имею об этом, но мне нужно использовать удаленный просмотр для этого. PLS отправить любой пример кода для этого – Babin

+0

Follw Ниже ссылка, и вы получите правильный ответ. [Полный код] [1] [1]: http://stackoverflow.com/questions/12526228/how-to-put-media-controller-button-on-notification-bar/25379408 # 25379408 – Roadies

ответ

9

Вы должны использовать 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.

+0

thank u ... но как я могу получить его в сервисе? – Babin

+0

Я обновил свой ответ, пожалуйста, проверьте это. – AvatarQing

+0

@AvatarQing дает мне предложение. Я создаю большое уведомление с помощью RemoteView для управления воспроизведением/паузой, как эта ссылка (stackoverflow.com/questions/14508369/...) Все правильно, но когда я нажимаю кнопку возврата устройства и выхожу из события клика приложения (Play/Pause/Forward/Close) не работает. Пожалуйста, помогите мне. –

 Смежные вопросы

  • Нет связанных вопросов^_^