Bienvenidos sean a este post, hoy continuaremos con lo iniciado en el post anterior y agregaremos algunas modificaciones a nuestras notificaciones para alertar al usuario. Nuestra modificacion sera para implementar sonido asociado con nuestra notificacion para ello.
Primero abriremos nuestra app llamada ServiciosMusica, la cual modificamos en el post anterior, para el siguiente ejemplo debemos agregar un sonido en el recurso raw, para ello descarguen el siguiente sonido
Una vez descargado, vayan hasta la carpeta donde esta descargado y presionen Ctrl+C o click con el boton derecho y elijan Copiar, una vez hecho vuelven a Android Studio y presionen Ctrl+V sobre la carpeta raw, aparecera un cartel donde no deben modificar nada y pulsen Ok para cerrar el cuadro y agregar nuestro nuevo recurso.
Nota: Puede suceder que deban ir a File -> Sync Project with Gradle Files para que el codigo pueda encontrar el nuevo recurso.
Nuestra siguiente modificacion sera en la clase ServicioMusica, donde iremos al metodo onStartCommand() y para el metodo NotificationCompat.Builder le agregaremos la siguiente linea:
.setSound(Uri.parse("android.resource://"
+ getPackageName() + "/" + R.raw.explosion))
Con esta linea podemos asignarle un sonido de alguno de los recursos de nuestra app, por medio de Uri.parse() lo enviaremos como el dato que necesita, getPackageName() se encargara de obtener el nombre de nuestro paquete para completar el path junto al nombre del recurso. Si lo probamos deberia reproducir un sonido cuando aparezca el mensaje en la barra. Tambien podemos usar la siguiente linea en lugar de la anterior:
.setDefaults(Notification.DEFAULT_SOUND)
Esta linea nos permitira reproducir el sonido de notificacion por defecto de nuestro dispositivo, una muy buena opcion, como debe quedar nuestro bloque de Notification.Builder():
NotificationCompat.Builder notific = new NotificationCompat.Builder(this)
.setContentTitle("Creando servicio de musica")
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources()
,android.R.drawable.ic_media_play))
.setWhen(System.currentTimeMillis() + 1000 * 60 * 60)
.setContentInfo("mas info")
.setTicker("Texto en la barra de Estado")
.setSound(Uri.parse("android.resource://"
+ getPackageName() + "/" + R.raw.explosion))
.setContentText("informacion adicional");
Nuestra siguiente modificacion sera como agregar vibracion a nuestra notificacion, es decir que el telefono vibre cuando aparezca la misma, al igual que en el caso anterior dentro de este bloque agregaremos la siguiente linea:
.setVibrate(new long[] { 0, 100, 200, 300 })
El metodo contiene un array que define el patron de longitudes expresadas en milisegundos (ms), donde el primer valor sera el tiempo sin vibrar, el segundo es el tiempo vibrado, el tercero de nuevo el tiempo sin vibrar y el ultimo es el tiempo vibrado y este ciclo se puede repetir la cantidad de veces necesarias, al igual que en el caso anterior tambien podemos usar setDefaults() de la siguiente forma:
.setDefaults(Notification.DEFAULT_VIBRATE)
En este ejemplo les recomiendo probarlo en un dispositivo real porque el emulador no puede vibrar, por ultimo agregaremos un parpadeo de led.
Algunos dispositivos moviles disponen de leds y nosotros podemos utilizarlos para llamar la atencion del usuario, para ello agregaremos la siguiente linea:
.setLights(Color.RED, 3000, 1000)
En este caso el primer campo de setLights asignara el color, el segundo indiccara cuanto estara prendido y el ultimo campo cuanto estara apagado y este ciclo se repetira hasta que el usuario atienda la notificacion, en este caso tambien tiene la opcion por defecto y se usaba asi:
.setDefaults(Notificacion.DEFAULT_LIGHTS)
Este caso se podra probar unicamente si tienen un dispositivo que tenga los mismos de lo contrario no hara nada, en estos dos ultimos casos les recomiendo probarlos en equipos fisicos porque los emuladores no muestran estos tipos de aviso. Nuestro bloque de Notification.Builder quedara de la siguiente forma:
NotificationCompat.Builder notific = new NotificationCompat.Builder(this)
.setContentTitle("Creando servicio de musica")
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources()
,android.R.drawable.ic_media_play))
.setWhen(System.currentTimeMillis() + 1000 * 60 * 60)
.setContentInfo("mas info")
.setTicker("Texto en la barra de Estado")
.setSound(Uri.parse("android.resource://"
+ getPackageName() + "/" + R.raw.explosion))
.setVibrate(new long[] { 0, 100, 200, 300 })
.setLights(Color.RED, 3000, 1000)
.setContentText("informacion adicional");
En resumen, hoy hemos visto como agregar mas tipo de notificaciones a la barra de estado, como puede ser un sonido, vibracion o leds (en caso de disponer de ellos), como pueden ser el predeterminado o alguno seteeado por nosotros, espero les haya sido util sigueme en Twitter, Facebook o Google+ para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.50