NotificationCompat.Builder .setLights funtzt nicht

  • Servus Leute,

    Ich habe mal wieder ein Problem, und zwar funktioniert bei mir die .setLights Funktion nicht.

    Wenn ich die Default-Einstellung nehme, funtzt es - aber dass möchte ich nicht da ich über setLights gerne selbst die Farbe und wie lange es an bleiben und ausbleiben soll Einstellen möchte, nur leider ohne Erfolg bist jetzt.

    Die Default-Funktion: //.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS)

    Kann bitte mir jemand sagen wieso dass nicht funtzt wenn ich das über die .setLights Funktion mache?

    Danke

    Code
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ausrufe)
                    .setContentTitle("Meldung")
                    .setContentText(message)
                    .setColor(getResources().getColor(R.color.transparent))
                    .setContentIntent(pendingIntent)
                    .setAutoCancel(true)
                    .setPriority(NotificationCompat.PRIORITY_MAX)
                    .setLights(Color.RED, 1000,500)
                    //.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS)
  • Hi die Farbe der LED kan bei den meisten Handys nur drei Farben darstellen. Das könnte ei Grund sein. Bei mir sind die die Farben weiß. Blau grün Orange möglich. Rot geht bei mir nicht.

  • Danke für deine Antwort. Aber es geht keiner der Farben über .setLights egal was ich da angebe. Habe ein Huawei Mate 9, alles aktuell.
    Gebe ich aber wie oben schon gesagt das: .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS) an funtzt es tadellos, die LED leuchtet grün aber das will ich nicht das es Standart ist.

    Hi die Farbe der LED kan bei den meisten Handys nur drei Farben darstellen. Das könnte ei Grund sein. Bei mir sind die die Farben weiß. Blau grün Orange möglich. Rot geht bei mir nicht

  • wie ist die Farbe definiert ? Laut Google muss sie im argb angegeben werden.
    https://developer.android.com/reference/andr…on.html#ledARGB

    Zitat

    FLAG_SHOW_LIGHTS

    added in API level 1
    int FLAG_SHOW_LIGHTSThis constant was deprecated in API level 26.
    use shouldShowLights().
    Bit to be bitwise-ored into the flags field that should be set if you want the LED on for this notification.

    • To turn the LED off, pass 0 in the alpha channel for colorARGB or 0 for both ledOnMS and ledOffMS.
    • To turn the LED on, pass 1 for ledOnMS and 0 for ledOffMS.
    • To flash the LED, pass the number of milliseconds that it should be on and off to ledOnMS and ledOffMS.

    Since hardware varies, you are not guaranteed that any of the values you pass are honored exactly. Use the system defaults if possible because they will be set to values that work on any given hardware.
    The alpha channel must be set for forward compatibility.
    Constant Value: 1 (0x00000001)

  • Danke für deine Antwort, auf der Seite war ich natürlich schon unterwegs. Habe folgendes probiert:
    .setLights(0xFFFF0000, 1000 , 500)Da passiert genau so wenig.

    oder so:

    Spoiler anzeigen

    Notification notf = new NotificationCompat.Builder(this)
    .setAutoCancel(true)
    .setTicker("Meldung")
    .setContentText(message)
    .setSmallIcon(R.drawable.ausrufe)
    .build();

    notf.ledARGB = Color.RED;
    notf.color = Color.RED;
    notf.ledOffMS = 500;
    notf.ledOnMS = 1000;
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(1, notf);

    Es tut sich einfach nichts bei diesen Mist... ^^

    wie ist die Farbe definiert ? Laut Google muss sie im argb angegeben werden.
    https://developer.android.com/reference/andr…on.html#ledARGB

    3 Mal editiert, zuletzt von DerAndroidNoob (5. April 2018 um 20:23)

  • Dann habe ich leider auch keine Idee mehr.

    Hast du auch immer den Bildschirm dunkel also im standby gehabt?

    Ja natürlich habe ich immer den Bildschirm abgeschaltet. Ja so geht es mir auch, bin auch mit meinen Latein am Ende.. Ich probiere mal noch ein bisschen rum, muss ja klappen.

  • habe es gerade mal getestet bei meinem alten S5 gehen alle Farben.
    natürlich musst du den Intent auch auslösen und dann den Bildschirm dunkel machen ohne die Noti dir anzuschauen.

    Einmal editiert, zuletzt von nono124 (6. April 2018 um 17:30)

  • Danke für deine Anwort, aber egal wie ich es mache es funktioniert nicht. Nur wenn ich den "Standart Wert setze: .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS) " funtzt das. Aber das nützt mir nichts, da ich extra Vibrationen und Töne verwende. Ist doch nicht mehr normal :D Ach ja, dass witzige - bei meinen S3 oder LG funtzt es - nur eben nicht bei den HUAWEI.. geht mir nicht in den Kopf!

    habe es gerade mal getestet bei meinem alten S5 gehen alle Farben.
    natürlich musst du den Intent auch auslösen und dann den Bildschirm dunkel machen ohne die Noti dir anzuschauen.

  • Welsche API Version hat das Huawei?
    Das es auf deinen anderen Handys geht hättest du uns auch sagen können.

    Zitat

    NotificationCompat.Builder(Context context, String channelId)

    Constructor.

    NotificationCompat.Builder(Context context)


    This constructor was deprecated in API level 26.1.0. use NotificationCompat.Builder(Context, String) instead. All posted Notifications must specify a NotificationChannel Id.

    Dein Mate 9 dürfte schon Android 8 API 26 haben . Benutze den ersten Constructor mal.

    2 Mal editiert, zuletzt von nono124 (6. April 2018 um 18:47)

  • Danke für deine Mühe. Habe das selber erst heute probiert und es ging eben!
    Habe Android-Version 8.0.0 EMUI-Version 8.0.0 API -> 26
    Probiere das die Tage mal und gebe Feedback!

    Welsche API Version hat das Huawei?
    Das es auf deinen anderen Handys geht hättest du uns auch sagen können.

    Dein Mate 9 dürfte schon Android 8 API 26 haben . Benutze den ersten Constructor mal.

  • kann dir da leider auch nicht helfen habe kein Handy mit Android 8. Vielleicht liegt es an dem Huawei und weniger an Android 8. Du könntest eine einfache apk machen und die bei Freunden mit anderen Handys und a8 testen.

    Was mir noch einfällt wie sieht dein greadle File aus? Hast du auch die Supportlib geladen?

  • Danke noch mal für deine Antwort. Ja werde jetzt mal eine simple machen und diese an ein paar Leute schicken, dass ist ja nicht mehr feierlich :D

    Meine buil.gradle sieht wie folgt aus:


    kann dir da leider auch nicht helfen habe kein Handy mit Android 8. Vielleicht liegt es an dem Huawei und weniger an Android 8. Du könntest eine einfache apk machen und die bei Freunden mit anderen Handys und a8 testen.

    Was mir noch einfällt wie sieht dein greadle File aus? Hast du auch die Supportlib geladen?

    Einmal editiert, zuletzt von DerAndroidNoob (7. April 2018 um 17:56)

  • Hi setze mal compileSdkVersion 25, targetSdkVersion 25, buildToolsVersion '27.0.3' weglassen

    Was mich wundert ist das du die support V4 nicht lädst.
    Auch das du die Suport:appcompat-v7:23.4.0' in der Version 23 und nicht 27 lädst da kommt normaleweise ein fehler weil

    CompileSDK und SpportLib nicht zusammen passen.


    also versuche deine App auf der alten SDK 25 zu Comileren
    die SupportLibs müssen auch eine 25 API haben glaube 25.0.1 musst du schaun.

    es sieht für mich aus als ob das erst eine Version für AS 2.3. war.

    ps. Support 25.4.0 ist die neuste

  • Da war der entscheide Tipp, nachdem ich alles angepasst habe in der gradle und aktuallisiert habe, funktioniert es endlich! so ein "kleiner" Fehler... :P

    Aber ich habe eine Rote Lampe gesetzt und sie blinkt aber Weiss, woran kann das wieder liegen :D ?

    Danke!!!!!

  • Also wie gesagt, es blinkt jetzt, aber eben nicht wie ich im Moment gesetzt habe: Rot. Es blinkt in Weiss :P

    Also meine gradle sieht jetzt so aus:


    Der NotificationManager:


    Java: Java
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "My Notifications", NotificationManager.IMPORTANCE_DEFAULT);
                notificationChannel.setDescription("Kanal");
                notificationChannel.enableLights(true);
                notificationChannel.setLightColor(Color.RED);
                notificationManager.createNotificationChannel(notificationChannel);
            }

    NotificationCompat.Builder:


    Code
    NotificationCompat.Builder builder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
                    //.setVibrate(new long[]{0, 100, 100, 100, 100, 100})
                    .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle("Meldung")
                    .setContentText(message);
    
    
            notificationManager.notify(NOTIFICATION_ID, builder.build());

    @jogimuc

    2 Mal editiert, zuletzt von DerAndroidNoob (20. Mai 2018 um 16:38)

  • ok du Kompilierst immer noch auf SDK 26 Fehler war scheinbar die falsche Suportlib.
    Der Constructor ist eigentlich auch erst ab API 26.1 veraltet. Du hast aber API 26 auf dem Handy.
    Teste mal andere Farbe.
    oder Kompiliere mit API 25 um ganz sicher zu gehen dann wird immer das alte Notification system benutz.
    Auch wenn das Handy A8 oder höher hat. sieht dann für das Handy so aus als wenn die App vor Jahren unter A7 geschrieben wurden ist wo es noch kein A8 gab.

    Übrigens soltest du die minSdkVersion nicht auf 26 setzen sonst kannst du es auf ältern Handys nicht instalieren.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!