Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Control del reproductor de música en la notificación

Cómo configurar la notificación con play / pause, botón siguiente y anterior en android.

Soy nuevo con Android y también en el desbordamiento de la pila. Así que por favor, tenga paciencia conmigo.

Introduzca aquí la descripción de la imagen

Puse la notificación cuando la canción comienza a jugar como abajo:

@SuppressLint("NewApi") public void setNotification(String songName){ String ns = Context.NOTIFICATION_SERVICE; NotificationManager notificationManager = (NotificationManager) getSystemService(ns); @SuppressWarnings("deprecation") Notification notification = new Notification(R.drawable.god_img, null, System.currentTimeMillis()); RemoteViews notificationView = new RemoteViews(getPackageName(), R.layout.notification_mediacontroller); //the intent that is started when the notification is clicked (works) Intent notificationIntent = new Intent(this, AudioBookListActivity.class); PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.contentView = notificationView; notification.contentIntent = pendingNotificationIntent; notification.flags |= Notification.FLAG_NO_CLEAR; //this is the intent that is supposed to be called when the button is clicked Intent switchIntent = new Intent(this, AudioPlayerBroadcastReceiver.class); PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 0, switchIntent, 0); notificationView.setOnClickPendingIntent(R.id.btn_play_pause_in_notification, pendingSwitchIntent); notificationManager.notify(1, notification); } 

Tengo crear BroadcastReceiver como abajo: `

  private class AudioPlayerBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); System.out.println("intent action = " + action); long id = intent.getLongExtra("id", -1); if(Constant.PLAY_ALBUM.equals(action)) { //playAlbum(id); } else if(Constant.QUEUE_ALBUM.equals(action)) { //queueAlbum(id); } else if(Constant.PLAY_TRACK.equals(action)) { //playTrack(id); } else if(Constant.QUEUE_TRACK.equals(action)) { //queueTrack(id); } else if(Constant.PLAY_PAUSE_TRACK.equals(action)) { // playPauseTrack(); System.out.println("press play"); } else if(Constant.HIDE_PLAYER.equals(action)) { // hideNotification(); System.out.println("press next"); } else { } } }` 

Ahora, fijé la notificación de encargo con éxito pero cómo puedo manejar los botones de la notificación y sus acontecimientos como el juego / la pausa, anterior y siguiente … el etc. También intento usar el receptor de la difusión pero no podría conseguir ninguna respuesta.

Buscando solución y orientación de expertos, por favor, ayúdame.

Gracias por adelantado.

  • No funciona la notificación de Android
  • Cómo agregar el botón directamente en Notificación en Android Wear
  • Cómo quitar la notificación de la barra de notificación mediante programación en android?
  • Cómo cancelar / cancelar la notificación de la barra de estado en android mediante programación
  • Cómo detener el tono de llamada de notificación de Android después de 30 segundos?
  • Notificaciones de Firebase que no funcionan en Android Emulator
  • Android: muestra el icono animado de la barra de estado
  • Notificación de DeleteIntent roto en versiones posteriores de Android
  • One Solution collect form web for “Control del reproductor de música en la notificación”

    Debe establecer una custom intent action , no la clase de componente AudioPlayerBroadcastReceiver .

    Crear una intención con un nombre de acción personalizado como este

      Intent switchIntent = new Intent("com.example.app.ACTION_PLAY"); 

    A continuación, registre el receptor PendingIntent Broadcast

      PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 100, switchIntent, 0); 

    A continuación, establezca un onClick para el control de reproducción, haga una acción personalizada similar para otros controles si es necesario.

      notificationView.setOnClickPendingIntent(R.id.btn_play_pause_in_notification, pendingSwitchIntent); 

    Siguiente, Registrar la acción personalizada en AudioPlayerBroadcastReceiver esta manera

      <receiver android:name="com.example.app.AudioPlayerBroadcastReceiver" > <intent-filter> <action android:name="com.example.app.ACTION_PLAY" /> </intent-filter> </receiver> 

    Por último, cuando se hace clic en la presentación de Notification RemoteViews , se recibirá la play action por parte de BroadcastReceiver

     public class AudioPlayerBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equalsIgnoreCase("com.example.app.ACTION_PLAY")){ // do your stuff to play action; } } } 

    EDIT: cómo establecer el filtro de intención para el receptor de difusión registrado en código

    También puede configurar el Intent filter Custom Action través de Intent filter de código para el Broadcast receiver registrado como este

      // instance of custom broadcast receiver CustomReceiver broadcastReceiver = new CustomReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addCategory(Intent.CATEGORY_DEFAULT); // set the custom action intentFilter.addAction("com.example.app.ACTION_PLAY"); // register the receiver registerReceiver(broadcastReceiver, intentFilter); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.