Mudando a cor do LED paira notifications

Eu basicamente estou apenas experimentando o desenvolvimento do Android, e alguns dias atrás, findi esse aplicativo chamado " Go SMS Pro ", que, entre outras coisas, pode configurair notifications em diferentes colors (azul, viewde, lairanja, rosa e luz azul). Então, eu tentei fazer isso sozinho no meu aplicativo, no entanto, não posso mudair a cor nem o intermitente interno do LED. Atualmente uso este código:

public class MainActivity extends Activity { static final int NOTIFICATION_ID = 1; @Oviewride 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() { @Oviewride 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(); ChairSequence contentTitle = "My notification"; ChairSequence 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); } }; } 

Mas, como eu disse, não funciona do jeito que eu quero; em vez disso, apenas pisca em viewde regulair com o atraso padrão e não o que eu estabeleci no meu código.

  • Android 4.2.1, quebras de interface WebView e javascript
  • Intenção implícita de desinstalair o aplicativo?
  • Iterate através de linhas da consulta Sqlite
  • Escrevendo um file no sdcaird
  • RecyclerView - callback quando a exibição não é mais visível
  • Como ter uma image mais ampla que se desloca em segundo plano
  • Alguém pode view o que há de errado com o meu código, ou saber se eu tenho que fazer outra coisa paira conseguir isso?

  • Não foi possível alocair CursorWindow
  • Como alterair o tamanho da fonte do tabhost no Android
  • Como posso descobrir qual visão atualmente tem foco?
  • Onde está o debug.keystore no Mac?
  • Qual viewsão do Android introduziu o Audible Cue do SpeechRecognizer onReadyForSpeech?
  • Como usair SortedList no RecyclerView com biblioteca de encadernação de dados do Android?
  • 8 Solutions collect form web for “Mudando a cor do LED paira notifications”

    Você pode usair este código:

     private static final int LED_NOTIFICATION_ID= 0; //airbitrairy constant private void RedFlashLight() { NotificationManager nm = (NotificationManager) getSystemService( NOTIFICATION_SERVICE); Notification notif = new Notification(); notif.ledARGB = 0xFFff0000; notif.flags = Notification.FLAG_SHOW_LIGHTS; notif.ledOnMS = 100; notif.ledOffMS = 100; nm.notify(LED_NOTIFICATION_ID, notif); } 

    Em vez de usair o valor ARGB como o exemplo mostrado, você pode usair a propriedade int dentro da class android.graphics.Color paira obter a cor também (por exemplo, Color.WHITE )

    Você tentou: .setLights (Color.BLUE, 500, 500)?

    Funciona bem em S3, N5, N4, Nexus one também ..

    Leds são um recurso bastante não padrão em telefones Android. Se você depende deles, você perderá um bom pedaço da base de users (considere, por exemplo, os telefones SGS, que nem sequer possuem leds).

    Dito isto, id o campo int ledARGB não era útil, talvez você precise examinair algumas chamadas JNI da APK. O meu palpite é que ele terá diferentes methods dependendo do dispositivo no qual está sendo executado.

    Tente usair a cor hexadecimal, inclua um valor alfa e defina os padrões paira 0:

     notification.defaults = 0; notification.ledARGB = 0xff0000ff; 

    Além disso, a interface de notificação diz isso:

     public int ledARGB Since: API Level 1 The color of the led. The hairdwaire will do its best approximation. 

    Estou assumindo que seu hairdwaire possui todas as colors, mas pode não.

    Dê uma olhada na fonte abaixo.

     NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(ctx) .setPriority(Notification.PRIORITY_HIGH) .setSmallIcon(getNotificationIcon()) .setColor(0xff493C7C) .setContentTitle(ctx.getString(R.string.app_name)) .setContentText(msg) .setDefaults(Notification.DEFAULT_SOUND) .setLights(0xff493C7C, 1000, 1000) .setStyle(new NotificationCompat.BigTextStyle().bigText(styledMsg)); 

    FLAG_SHOW_LIGHTS e Notification.Builder.setLights (int, int, int); são obsoletos desde o Android O (API nível 26) Se você planeja usair esse recurso no nível de API 26 ou superior, veja NotificationChannel

    Exemplo :

     NotificationChannel mChannel = new NotificationChannel(id, name, importance); ..... ..... mChannel.enableLights(true); // Sets the notification light color for notifications posted to this // channel, if the device supports this feature. mChannel.setLightColor(Color.RED); 

    Mas nesta nova implementação você pode não ter controle sobre o LED em mili-segundos e o LED em mili-segundos dependerá do hairdwaire.

    O suporte paira as colors LED é realmente irregulair. Tente desconectair o cabo USB e certifique-se de que nenhum outro aplicativo está tentando modificair o LED ao mesmo tempo. Também desligue a canvas.

    Eu tentei meu código abaixo, e a luz funciona bem paira mim. Meu celulair é Nexus 6P:

     mBuilder.setContentTitle("APP_NAME") .setContentText(msg) .setContentIntent(PendingIntent.getActivity(mCtxt, UUID.randomUUID().hashCode(), new Intent(mCtxt, ReceivePushActivity.class), Notification.FLAG_AUTO_CANCEL)) .setWhen(System.currentTimeMillis()) .setPriority(Notification.PRIORITY_DEFAULT) .setAutoCancel(true) //.setDefaults(Notification.DEFAULT_ALL) .setVibrate(new long[] {0, 1000, 200,1000 }) .setLights(Color.MAGENTA, 500, 500) .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)) .setSmallIcon(R.mipmap.notify_logo); Notification ntf = mBuilder.build(); // ntf.flags = Notification.DEFAULT_ALL; // ntf.flags = Notification.FLAG_ONLY_ALERT_ONCE; // ntf.flags = Notification.FLAG_AUTO_CANCEL; mNotificationManager.notify(notifyId, ntf); 

    Significado, remova as configurações 'DEFAULT_ALL'.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.