studio programacion móviles libro desarrollo curso aplicaciones android android-5.0-lollipop android-notifications

programacion - Notificación de advertencia-Lollipop de Android



manual de programacion android pdf (8)

De acuerdo con Google: https://developer.android.com/design/patterns/notifications.html

Si la prioridad de una notificación se marca como Alta, Máxima o pantalla completa, recibe una notificación de aviso.

Entonces, el siguiente código debería generar una notificación de aviso:

.setPriority(Notification.PRIORITY_MAX)

Debería ser suficiente. Pero aparentemente, el .setDefaults (Notification.DEFAULT_VIBRATE) también debe establecerse. Esperemos que Google arregle esto en su versión final de Android 5.0.

No estoy seguro si el error o la función ...

Estoy tratando de mostrar un aviso de tipo notificación pero no pude. Lo que probé

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());

La notificación se muestra solo como un icono en la barra. Estoy usando API 21 en el emulador API 21 (no L vista previa) He intentado:
android:Theme.Holo.NoActionBar ,
android:Theme.Holo.NoActionBar.Fullscreen
y NotificationCompat.Builder

Los ejemplos de SDK no están disponibles. ¿Alguien sabe como hacerlo?

Lo hice funcionar agregando:

.setDefaults(Notification.DEFAULT_VIBRATE)

¿Es esta la mejor manera?


De acuerdo con las Notifications , debe configurar una vibración o un tono de llamada para que funcione Heads-up. Sin embargo, aquí hay un truco rápido que no requiere el permiso VIBRAR para producir una notificación de aviso:

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

EDITAR:

No abuse de la notificación de aviso. Consulte here para here cuándo usar la notificación de aviso:

MAX: para notificaciones críticas y urgentes que alertan al usuario sobre una condición que es crítica o necesita ser resuelta antes de que pueda continuar con una tarea en particular.

ALTO: Principalmente para la comunicación importante, como mensajes o eventos de chat con contenido que es particularmente interesante para el usuario. Las notificaciones de alta prioridad activan la pantalla de notificaciones de aviso.


Debe establecer alta prioridad y utilizar tonos de llamada o vibraciones.

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

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

Notificaciones de aviso

Con Android 5.0 (API nivel 21), las notificaciones pueden aparecer en una pequeña ventana flotante (también llamada notificación de aviso) cuando el dispositivo está activo (es decir, el dispositivo está desbloqueado y su pantalla está encendida). Estas notificaciones parecen similares a la forma compacta de su notificación, excepto que la notificación de aviso también muestra botones de acción. Los usuarios pueden actuar o descartar una notificación de aviso sin salir de la aplicación actual.

Los ejemplos de condiciones que pueden desencadenar notificaciones de aviso incluyen:

  • La actividad del usuario está en modo de pantalla completa (la aplicación usa fullScreenIntent) o
  • La notificación tiene alta prioridad y utiliza tonos de llamada o vibraciones.

No necesita configurar la vibración. Solo necesitas configurar el sonido. Es menos intrusivo. No tengo ningún sonido en el mío, pero la notificación se muestra en la parte superior. Asegúrese de usar PRIORITY_HIGH y DEFAULT_SOUND.

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);


Para establecer la priority , use la función setPriority (introducida en API 16) junto con setDefaults (agregado en API 11) de Notification Builder . Elija la prioridad DEFAULT , ALTA, BAJA, MÁX, MIN según los requisitos de su aplicación. Los valores predeterminados también se pueden elegir here .

Un pequeño fragmento:

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


Para los dispositivos con Android 8.0 (API nivel 26) y superior, el canal de notificación requiere una gran importancia

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


Todas mis aplicaciones no muestran la Notificación, por ejemplo, tengo un Nexus 6 con Android 5.1.1, pero creo que esto es un problema desde Android 5.0, tuve que configurar:

.setPriority(Notification.PRIORITY_HIGH)

Establecer y administrar correctamente la prioridad de notificación

Android admite una marca de prioridad para las notificaciones. Este indicador le permite influir en el lugar donde aparece su notificación, en relación con otras notificaciones, y ayuda a garantizar que los usuarios siempre vean primero sus notificaciones más importantes. Puede elegir entre los siguientes niveles de prioridad al publicar una notificación:

MAX Úselo para notificaciones críticas y urgentes que alertan al usuario sobre una condición que es crítica o necesita ser resuelta antes de que pueda continuar con una tarea en particular.

ALTO Uso principalmente para comunicaciones importantes, como mensajes o eventos de chat con contenido que es particularmente interesante para el usuario. Las notificaciones de alta prioridad activan la pantalla de notificaciones de aviso.

PREDETERMINADO Se utiliza para todas las notificaciones que no se incluyen en ninguna de las otras prioridades descritas aquí y si la aplicación no prioriza sus propias notificaciones

BAJO Utilícelo para notificaciones sobre las que desea que se informe al usuario, pero que son menos urgentes. Las notificaciones de baja prioridad tienden a aparecer al final de la lista, lo que las convierte en una buena opción para cosas como actualizaciones sociales públicas o no dirigidas: el usuario ha pedido que se le notifique sobre ellas, pero estas notificaciones nunca deben tener prioridad sobre las urgentes o comunicación directa.

MIN Use para información contextual o de fondo, como información meteorológica o información de ubicación contextual. Las notificaciones de prioridad mínima no aparecen en la barra de estado. El usuario los descubre al expandir el tono de notificación.


Agregue esta línea en su código para mostrar una notificación de aviso que solo funciona para la versión de Lollipop

notificationBuilder.setPriority(Notification.PRIORITY_HIGH);