CLASE 03

Broadcast Receiver

ViewGroups

BROADCAST RECEIVERS

Reciben mensajes propios o del sistema

Permisos

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Depende el tipo de mensaje para el que nos queramos registrar, es posible que necesitemos un permiso.

Los permisos brindan seguridad al usuario.

Nos dicen que nivel que accedo va a tener la aplicación.

 

Se presentan cada vez que se va a instalar una aplicación, es importante presetarle atención y saber que significa cada uno.

Registro Estático

<receiver android:name=".AirplaneReceiver" >
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

Se registra de manera estática cuando se hace en el manifiesto. Tiene la ventaja de que permanece registrado aún cuando la aplicación no esta visible.

public void onReceive(Context con, Intent i){
    if(i.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")){
        ConnectivityManager conMan = (ConnectivityManager) con 
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo netInfo = conMan.getActiveNetworkInfo();
 
        if (null == netInfo){
            info += "Desconectado";
        }else{
            info += netInfo.getTypeName();
        }
    }
}        

Registro Dinámio

// Registrar
IntentFilter filter = new IntentFilter();
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
registerReceiver(airplaneReceiver, filter);

// Desregistrar
unregisterReceiver(airplaneReceiver);

Es responsabilidad del desarrollador registrar y des-registrar el receiver.

private BroadcastReceiver airplaneReceiver =  new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent){
        if(i.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")){
            ConnectivityManager conMan = (ConnectivityManager) con 
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
    
            NetworkInfo netInfo = conMan.getActiveNetworkInfo();
        }
    }
}        

ViewGroups

Organizan las Views

LinearLayout

Ordena las vistas en filas o columnas, dependiendo de su orientación: vertical u horizontal.

No permiten más de una vista en cada una de estas filas o columnas.

RelativeLayout

Permite ordenar las vistas de manera relativa, ya sea entre ellas o respecto a su padre. Es necesario que las vistas tengan un ID, porque es lo que se usa para referenciarlas.

Es el más flexible de los ViewGroups

Weight (peso)

Es una propiedad muy interesante de las vistas, que permite darle un peso a cada una de ellas.

Util para dimensionar las vistas de manera relativa

ScrollView

Es un tipo de ViewGroup que nos resuelve el scroll (en este caso vertical).

Sólo puede tener una única view/viewGroup hijo que es la que va a scrollear.

 

Su dual, para hacer scroll de manera horizontal es el HorizontalScrollView

NOTIFICATIONS

Lanzar una Notificación

private static void showNotification(String eventtext, Context mContext, Intent i) {
    PendingIntent contentIntent = PendingIntent.getActivity(mContext, 0,
        i, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder mBuilder = 
        new NotificationCompat.Builder(mContext)
       .setSmallIcon(R.drawable.ic_launcher) 
       .setContentTitle("TITULO") 
       .setContentText(eventtext) 
       .setTicker("nueva notif") 
       .setContentIntent(contentIntent) 
       .setAutoCancel(true); 

    // Gets an instance of the NotificationManager service
    NotificationManager mNotifyMgr = (NotificationManager) 

    mContext.getSystemService(Context.NOTIFICATION_SERVICE);
    // Builds the notification and issues it. 
    mNotifyMgr.notify(1, mBuilder.build());
}

Gracias!

No dejen de consultar cualquier duda que surja

sebasira@gmail.com

Android - Clase 03

By Ing. Sebastian M. Irazabal

Android - Clase 03

  • 489