Wie füge ich Benachrichtigungen zu Android hinzu?


Answers

Ich werde versuchen, eine Lösung bereitzustellen, die ich verwendet habe, und die meisten Musikplayer verwenden die gleiche Technik, um Player-Steuerelemente in der Benachrichtigungsleiste anzuzeigen.

Ich führe einen Dienst aus, mit dem Media Player und alle seine Steuerelemente verwaltet werden. Aktivität Die Benutzersteuerung interagiert mit dem Dienst, indem sie beispielsweise Intents an den Dienst sendet

 Intent i = new Intent(MainActivity.this, MyRadioService.class);
        i.setAction(Constants.Player.ACTION_PAUSE);

        startService(i);

Um Absichten zu erhalten und Aktionen in der Dienstklasse auszuführen, verwende ich den folgenden Code in der onStartCommand-Methode des Dienstes

 @Override
public int onStartCommand(Intent intent, int flags, int startId) {


    if (intent.getAction().equals(Constants.Player.ACTION_PAUSE)) {
        if(mediaPlayer.isPlaying()) {
            pauseAudio();
        }
    }

Jetzt um die Antwort auf Ihre Frage zu präzisieren, um Benachrichtigungen mit den Steuerelementen anzuzeigen. Sie können folgende Methoden aufrufen, um Benachrichtigungen mit Steuerelementen anzuzeigen.

   //    showNotification
private void startAppInForeground() {
//  Start Service in Foreground

    // Using RemoteViews to bind custom layouts into Notification
    RemoteViews views = new RemoteViews(getPackageName(),
            R.layout.notification_status_bar);

// Define play control intent 
   Intent playIntent = new Intent(this, MyRadioService.class);
    playIntent.setAction(Constants.Player.ACTION_PLAY);

// Use the above play intent to set into PendingIntent
    PendingIntent pplayIntent = PendingIntent.getService(this, 0,
            playIntent, 0);

// binding play button from layout to pending play intent defined above 
views.setOnClickPendingIntent(R.id.status_bar_play, pplayIntent);
views.setImageViewResource(R.id.status_bar_play,
            R.drawable.status_bg);

Notification status = null;
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        status = new Notification.Builder(this).build();
    }

  status.flags = Notification.FLAG_ONGOING_EVENT;
    status.icon = R.mipmap.ic_launcher;
    status.contentIntent = pendingIntent;
    startForeground(Constants.FOREGROUND_SERVICE, status);

} Hoffe das hilft dir wirklich. Und Sie werden erreichen können, was Sie wollen. Habe eine Happy Coding :)

Question

Meine App spielt Musik ab und wenn Nutzer den Benachrichtigungsbildschirm öffnen, indem sie vom oberen Bildschirmrand (oder generell von der unteren rechten Ecke des Bildschirms auf Tablets) wischen, möchte ich ihnen einen Button zeigen, um die gerade abgespielte Musik anzuhalten und sie erneut zu starten Sie wollen.

Ich plane nicht, ein Widget auf dem Homescreen des Benutzers zu platzieren, sondern nur in Benachrichtigungen. Wie kann ich das machen?




Fügen Sie der Benachrichtigung eine Aktionsschaltfläche hinzu

Intent snoozeIntent = new Intent(this, MyBroadcastReceiver.class);
snoozeIntent.setAction(ACTION_SNOOZE);
snoozeIntent.putExtra(EXTRA_NOTIFICATION_ID, 0);
PendingIntent snoozePendingIntent =
        PendingIntent.getBroadcast(this, 0, snoozeIntent, 0);

NotificationCompat.Builder mBuilder = new 
NotificationCompat.Builder(this, CHANNEL_ID)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT)
        .setContentIntent(pendingIntent)
        .addAction(R.drawable.ic_snooze, getString(R.string.snooze),
                snoozePendingIntent);

Weitere Informationen erhalten Sie unter here






Links