wake-up-neo.com

Heads-Up-Benachrichtigung - Android Lollipop

Ich versuche, ein Benachrichtigungs-Heads-Up anzuzeigen, konnte es aber nicht. Was ich versucht habe

final Notification.Builder notif = new Builder(getApplicationContext())
    .setContentTitle(getString(R.string.title))
    .setContentText(getString(R.string.text))
//  .setTicker(getString(R.string.tick)) removed, seems to not show at all
//  .setWhen(System.currentTimeMillis()) removed, match default
//  .setContentIntent(contentIntent) removed, I don't neet it
    .setColor(Color.parseColor(getString(R.color.yellow))) //ok
    .setSmallIcon(R.drawable.ic_small) //ok
    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
//  .setCategory(Notification.CATEGORY_CALL) does not seem to make a difference
    .setPriority(Notification.PRIORITY_MAX); //does not seem to make a difference
//  .setVisibility(Notification.VISIBILITY_PRIVATE); //does not seem to make a difference

mNotificationManager.notify(Constants.NOTIFICATION_ID, notif.build());

Die Benachrichtigung wird nur als Symbol in der Leiste angezeigt. Ich benutze API 21 im API 21-Emulator (keine L-Vorschau). Ich habe versucht:
Android:Theme.Holo.NoActionBar,
Android:Theme.Holo.NoActionBar.Fullscreen
und NotificationCompat.Builder 

SDK-Beispiele sind nicht verfügbar. weiß jemand, wie es geht?

Ich habe es geschafft, indem ich Folgendes hinzufügte:

.setDefaults(Notification.DEFAULT_VIBRATE)

ist das der beste Weg?

43
user1719863

Gemäß Notifications müssen Sie einen Vibrations- oder Klingelton einstellen, damit Heads-up funktioniert. Hier ist jedoch ein kurzer Hack, der keine VIBRATE-Berechtigung erfordert, um eine Head-Up-Benachrichtigung zu erzeugen:

notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
if (Build.VERSION.SDK_INT >= 21) notificationBuilder.setVibrate(new long[0]);

BEARBEITEN:

Missbrauche keine Heads-Up-Benachrichtigung. hier , wann die Heads-Up-Benachrichtigung verwendet werden soll:

MAX: Für kritische und dringende Benachrichtigungen, die den Benutzer auf einen Zustand hinweisen, der zeitkritisch ist oder behoben werden muss, bevor er mit einer bestimmten Aufgabe fortfahren kann.

HOCH: Hauptsächlich für wichtige Kommunikation, wie z. B. Nachrichten oder Chat-Ereignisse mit Inhalten, die für den Benutzer besonders interessant sind. Benachrichtigungen mit hoher Priorität lösen die Anzeige der Heads-Up-Benachrichtigungen aus.

77
Mygod

Laut Google: https://developer.Android.com/design/patterns/notifications.html

Wenn die Priorität einer Benachrichtigung als "Hoch", "Max" oder "Vollbild" gekennzeichnet ist, wird eine Heads-Up-Benachrichtigung angezeigt.

Der folgende Code sollte also eine Heads-Up-Benachrichtigung generieren:

.setPriority(Notification.PRIORITY_MAX)

Sollte genug sein. Anscheinend muss aber auch .setDefaults (Notification.DEFAULT_VIBRATE) gesetzt werden. Hoffentlich wird Google dies in ihrer endgültigen Version von Android 5.0 beheben. 

Nicht sicher, ob Fehler oder Funktion ...

15
MLS

Alle meine Apps zeigen die Benachrichtigung nicht an, zum Beispiel habe ich ein Nexus 6 mit Android 5.1.1, aber ich denke, das ist eine Ausgabe seit Android 5.0. Ich musste einstellen:

.setPriority(Notification.PRIORITY_HIGH)

Richten Sie die Benachrichtigungspriorität richtig ein und verwalten Sie sie

Android unterstützt ein Prioritätsflag für Benachrichtigungen. Mit diesem Flag können Sie Einfluss darauf nehmen, wo Ihre Benachrichtigung angezeigt wird, und auf andere Benachrichtigungen zugreifen. Außerdem wird sichergestellt, dass Benutzer die wichtigsten Benachrichtigungen immer zuerst sehen. Sie können beim Buchen einer Benachrichtigung aus den folgenden Prioritätsstufen wählen:

MAXWird für kritische und dringende Benachrichtigungen verwendet, die den Benutzer auf einen zeitkritischen Zustand aufmerksam machen oder vor .__ aufgelöst werden müssen. Sie können mit einer bestimmten Aufgabe fortfahren.

HOCHWird hauptsächlich für wichtige Kommunikationen verwendet, z. B. Nachrichten- oder Chat-Ereignisse mit Inhalten, die besonders für die .__ interessant sind. Nutzer. Benachrichtigungen mit hoher Priorität lösen die Heads-Up-Benachrichtigung aus Anzeige.

DEFAULTWird für alle Benachrichtigungen verwendet, die nicht unter die anderen hier beschriebenen Prioritäten fallen und die Anwendung nicht priorisieren Sie Ihre eigenen Benachrichtigungen

NIEDRIGVerwenden Sie diese Option für Benachrichtigungen, über die der Benutzer informiert werden soll, die jedoch weniger dringend sind. Benachrichtigungen mit niedriger Priorität tendieren zu am Ende der Liste erscheinen, was sie zu einer guten Wahl für .__ macht. Dinge wie öffentliche oder ungerichtete soziale Updates: Der Benutzer hat nach .__ gefragt. über sie benachrichtigt werden, aber diese Benachrichtigungen sollten niemals in Anspruch genommen werden Vorrang vor dringender oder direkter Kommunikation.

MINFür Kontext- oder Hintergrundinformationen wie Wetterinformationen oder Kontextinformationen zum Standort verwenden. Mindestpriorität Benachrichtigungen werden nicht in der Statusleiste angezeigt. Der Benutzer entdeckt sie beim Erweitern des Benachrichtigungsschattens.

7
Elenasys

Um die Priorität festzulegen, verwenden Sie die setPriority - Funktion (eingeführt in API 16) zusammen mit setDefaults (hinzugefügt in API 11) des Notification Builder . Wählen Sie die Priorität DEFAULT , HIGH, LOW, MAX, MIN entsprechend den Anforderungen Ihrer App. Standardeinstellungen können auch gewählt werden hier .

Ein kleiner Ausschnitt:

notification = NotificationBuilder(service)
notification.setPriority(Notification.PRIORITY_MAX)
notification.setDefaults(Notification.DEFAULT_ALL)
5
unixia

Sollte hohe Priorität haben und Klingeltöne oder Vibrationen verwenden.

notificationBuilder.setDefaults(Notification.DEFAULT_ALL);
notificationBuilder.setPriority(Notification.PRIORITY_HIGH);

Ref: https://developer.Android.com/guide/topics/ui/notifiers/notifications.html#Heads-up

Heads-Up-Benachrichtigungen

Mit Android 5.0 (API-Ebene 21) können Benachrichtigungen in einem kleinen .__ angezeigt werden. Floating-Fenster (auch Heads-Up-Benachrichtigung genannt), wenn das Gerät ist aktiv (dh das Gerät ist nicht gesperrt und der Bildschirm ist aktiviert) . Diese Benachrichtigungen ähneln der kompakten Form Ihres Benachrichtigung, außer dass die Heads-Up-Benachrichtigung auch die Aktion .__ zeigt. Tasten. Benutzer können eine Heads-up-Benachrichtigung ohne .__ ausführen oder abweisen. Verlassen der aktuellen App.

Beispiele für Bedingungen, unter denen Heads-Up-Benachrichtigungen ausgelöst werden können umfassen:

  • Die Aktivität des Benutzers befindet sich im Vollbildmodus (die App verwendet fullScreenIntent) oder 
  • Die Benachrichtigung hat hohe Priorität und verwendet Klingeltöne oder Vibrationen.
1
situee

Für Geräte mit Android 8.0 (API Level 26) und höher ist der Benachrichtigungskanal von großer Bedeutung 

new NotificationChannel("ID", "Channel Name", NotificationManager.IMPORTANCE_HIGH);
0
Megaetron

Füge diese Zeile in deinen Code ein, um die Benachrichtigung anzuzeigen, dass sie nur für die Lollipop-Version funktioniert

notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
0
Amit Desale

Sie müssen nicht vibrieren. Sie müssen nur den Ton einstellen. Es ist weniger aufdringlich. Ich bekomme keinen Ton von mir, aber die Benachrichtigung wird oben angezeigt. Stellen Sie sicher, dass Sie PRIORITY_HIGH und DEFAULT_SOUND verwenden.

 NotificationChannel channel = null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            channel = new NotificationChannel("my_channel_01",
                    "Channel human readable title",
                    NotificationManager.IMPORTANCE_HIGH);
            mNotificationManager.createNotificationChannel(channel);
        }


        Notification notification =
                new NotificationCompat.Builder(this, "notify_001")
                        .setSmallIcon(R.drawable.ic_check)
                        .setContentTitle("My notification")
                        .setContentText("Hello World!")
                        .setPriority(Notification.PRIORITY_HIGH)
                        .setDefaults(NotificationCompat.DEFAULT_SOUND)
                        .setChannelId("my_channel_01").build();


        mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(0, notification);
0
live-love