viernes, 8 de mayo de 2015

Notificaciones en android


En ejemplos anteriores hemos visto mensajes usando Toast, pero en esta ocasión veremos las notificaciones que son mensajes que quieren informar algo de mayor importancia para el usuario, sin mas aquí el ejemplo.

1.- Creamos un nuevo archivo en android

2.- Así se sera nuestra estructura para este proyecto



3.- Creamos un archivo .xml en res/layout y le llamamos notification.xml

4.- Agregamos el siguiente código.


notification.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Aqui los detalles de la notificacion"
        />
</LinearLayout>



5.- Ahora en src/nombrePaquete agregaremos una nueva activity llamada Notificacion.java


6.- Le agregaremos el siguiente código

Notificacion.java

package depredador1220.master.kenny;

import android.app.Activity;
import android.os.Bundle;

//import a utilizar
import android.app.NotificationManager;

public class Notificacion extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //agregamos la interfaz de la notificacion
        setContentView(R.layout.notification);

        //Creamos un objeto notification manager
        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        //Ahora cancelamos la notificacion
        notificationManager.cancel(getIntent().getExtras().getInt("notificacionID"));
    }
}



7.- En el AndroidManifest.xml agregamos lo siguiente

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="depredador1220.master.kenny"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="13"/>
    <!--Agregamos un permison Vibrate para que nos avise con una vibracion del telefono-->
    <uses-permission android:name="android.permission.VIBRATE"/>
    <application android:label="kenny">
        <activity android:name="MyActivity">
                  <android:label="kenny">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <!--Agregamos el activity-->
        <activity android:name=".Notificacion" android:label="Detalles de la notificacion"/>
        <intent-filter>
            <action android:name="android.intent.action.MAIN"></action>
            <category android:name="android.intent.category.DEFAULT"></category>
        </intent-filter>
       <!--Aqui termina las declaraciones-->
    </application>
</manifest>


8.- Ahora toca llenar el main.xml le agregamos el siguiente código


main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >

    <Button
            android:id="@+id/btnNotificacion"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Mostrar notificacion"
            android:onClick="onClick"
            />

</LinearLayout>


9.- Para el MyActivity,java pondremos lo siguiente.


MyActivity.java

package depredador1220.master.kenny;

import android.app.Activity;
import android.os.Bundle;

//imports a utilizar
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.view.View;

public class MyActivity extends Activity {

    int notificacionID = 1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void onClick(View v)
    {
        displayNotificacion();
    }

    protected void displayNotificacion()
    {
        Intent i = new Intent(this, Notification.class);
        i.putExtra("notificacionID", notificacionID);

        //el PendingIntent carga la actividad si el usuario selecciona esta notificacion
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, i, 0);

        NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        //Creamos la notificacion, para acceder al icono en Intellij IDEA se usa esta declaracion
        //y en android studio solo con R.drawable y el icono que contenga
        Notification notification = new Notification(android.R.drawable.ic_dialog_info ,
                "Recordatorio: Apoya al sitio dando clic en la publicidad", System.currentTimeMillis());

        //Creamos unos mensajes
        CharSequence destinatario = "Alarma del sistema";
        CharSequence mensaje = "Aqui casual con el depredador1220";

        notification.setLatestEventInfo(this, destinatario, mensaje, pendingIntent);

        //espera 100 ms, vibra 250 ms, pausa por 100ms y vuelve a vibrar por 500ms
        notification.vibrate = new long[]{100, 250, 100, 500};
        nm.notify(notificacionID, notification);
    }

}


10.-Y probamos, recuerda que la vibración la podemos experimentar mejor en un teléfono físico.







No hay comentarios:

Publicar un comentario