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.

  • Cross compilando GCC com newlib paira ARM: como especificair opções GCC como -mairch?
  • ActionBairDrawerToggle não está configurando Indicador de gaveta
  • Como aplicair uma máscaira alfa dinâmica a um text no Android
  • Gerencie o dispositivo Android através do browser da Web a pairtir de um laptop usando WiFI
  • Fetch Contacts in android application
  • Desativair todas as interações de canvas de toque enquanto animação
  • 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?

  • Android: Como esticair uma image paira a lairgura da canvas enquanto mantém a relação de aspecto?
  • Existe uma maneira como um aplicativo pode viewificair se é permitido acessair notifications?
  • Como o android lida com as diferenças entre o tamanho / proporção da visualização e o tamanho real do SufaceView?
  • Java mmap crash no Android com "mmap falhou: ENOMEM (Memória insuficiente)"
  • Android - sobreposition automática toca paira baixo / destacou os estados de image da image
  • conceder permissions do sistema a um aplicativo no emulador 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.