samsung reproductor programacion para musica mejor gratis descargar descargables crossfader con celular caratulas android android-mediaplayer android-notifications android-broadcast

android - programacion - reproductor de musica con caratulas descargables



Control de reproductor de música en notificación. (1)

cómo configurar la notificación con el botón de reproducción / pausa, siguiente y anterior en Android.

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

Configuro la notificación cuando la canción comienza a reproducirse como a continuación:

`

@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); }

`

He creado BroadcastReceiver como a continuación: `

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, configuro la notificación personalizada con éxito, pero ¿cómo puedo manejar los botones de notificación y sus eventos como reproducir / pausar, anterior y siguiente ...? También trato de usar el receptor de difusión pero no pude obtener ninguna respuesta.

Buscando la solución y la orientación de los expertos, por favor ayudenme.

Gracias por adelantado.


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

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

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

Luego, registre el receptor PendingIntent Broadcast

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

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

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

A continuación, registre la acción personalizada en AudioPlayerBroadcastReceiver como este

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

Finalmente, cuando se hace clic en el diseño de Notification RemoteViews , recibirá la play action por parte del 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; } } }

EDITAR: cómo configurar el filtro de intento para el receptor de difusión registrado en el código

También puede configurar la Custom Action través del Intent filter desde el código del Broadcast receiver registrado de esta manera

// 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);