Changement de couleur de LED pour les notifications
Je suis fondamentalement juste à expérimenter avec le développement Android, et il y a quelques jours je suis tombé sur cette application appelée "Go SMS Pro", qui, entre autres choses, peuvent configurer les notifications de couleurs différentes (bleu, vert, orange, rose et bleu clair). Donc, j'ai essayé de le faire moi-même dans mon propre application, mais je ne peut pas changer la couleur, ni le clignotement de l'intérieur de la LED. Actuellement, je utiliser ce code:
public class MainActivity extends Activity {
static final int NOTIFICATION_ID = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(buttonOnClick);
}
public OnClickListener buttonOnClick = new OnClickListener() {
@Override
public void onClick(View v) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
Notification notification = new Notification(R.drawable.icon, "Hello", System.currentTimeMillis());
notification.flags = Notification.FLAG_SHOW_LIGHTS | Notification.FLAG_AUTO_CANCEL;
notification.ledARGB = Color.BLUE;
notification.ledOnMS = 1000;
notification.ledOffMS = 300;
Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(MainActivity.this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
mNotificationManager.notify(NOTIFICATION_ID, notification);
}
};
}
Mais comme je l'ai dit, il ne fonctionne pas comme je le veux; au lieu de cela il a juste clignote en vert régulier avec le délai par défaut, et pas celui que j'ai mis dans mon code.
Quelqu'un peut voir quel est le problème avec mon code, ou de savoir si je dois faire quelque chose d'autre pour y parvenir?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser ce code:
Au lieu d'utiliser ARGB comme valeur d'exemple, vous pouvez utiliser int propriété à l'intérieur de
android.graphics.Color
classe pour obtenir la couleur (p. ex.de la Couleur.BLANC
)Avez-vous essayer: .setLights(de Couleur.BLEU, 500, 500) ?
Fonctionne très bien sur S3, N5, N4, Nexus one trop..
Les led sont tout à fait non-standard sur les téléphones android. Si vous dépendez, vous allez manquer une bonne partie de la base de l'utilisateur (prenons, par exemple, la SGS téléphones, qui n'ont même pas de led).
Cela dit, l'id du champ int ledARGB n'était pas utile, vous pourriez avoir besoin de regarder dans certains JNI appel de cette APK. Ma conjecture est qu'il aura différentes méthodes selon le périphérique qui est en cours d'exécution.
FLAG_SHOW_LIGHTS et Notification.Générateur de rapports.setLights(int,int,int); sont obsolètes depuis Android O API ( niveau 26 ) Si vous prévoyez d'utiliser cette fonction dans l'API de niveau 26 ou plus ont un look à NotificationChannel
Exemple :
Mais dans cette nouvelle mise en œuvre, Vous ne pouvez pas avoir le contrôle sur LED sur milli-secondes & LED éteinte milli-secondes il sera dépendante de matériel.
Essayez d'utiliser la couleur hexadécimale, inclure une valeur alpha et définir les valeurs par défaut à 0:
Aussi, l'interface de notification indique:
Je suis en supposant que votre matériel a de toutes les couleurs, mais il ne peut pas.
notification.defaults
à0
etnotification.ledARGB
à une valeur hexadécimale (même siColor.BLUE
a la valeur de la constante de0xff0000ff
de toute façon), mais aucune de ces choses fonctionnent. Je suis également conscient que le matériel peut faire le rapprochement, mais je sais pour sûr qu'il devrait au moins être en mesure de faire les couleurs vert, bleu, orange et rose.Avoir un regard sur la source ci-dessous.
De soutien pour les LED de couleurs est vraiment inégale. Essayez de débrancher votre câble USB et assurez-vous qu'aucune autre application est en train d'essayer de modifier la LED en même temps. Également éteindre l'écran.
J'ai essayé mon code ci-dessous, et la lumière fonctionne très bien pour moi. Mon mobile est Nexus 6P:
Sens, supprimer "DEFAULT_ALL" des paramètres.