Desarrollo de Android Apps - BroadcastReceiver
En este tutorial voy a hablar de los BroadcastReceivers. Dichos componentes permiten registrar eventos que se produzcan en el SO Android, como por ejemplo cuando se recibe una llamada, se está agotando la batería, se enciende el smartphone, se añade un evento al calendario,...
CREAR UN BROADCASTRECEIVER NUEVO
Para crear un nuevo BroadcastReceiver en Android Studio tendremos que hacer clic derecho -> New -> Other -> Broadcast Receiver.
[caption id="attachment_12047" align="aligncenter" width="554"]
Crear un BroadcastReceiver nuevo en Android Studio[/caption]
Una vez hecho esto, quedará definido automáticamente en el manifest, y se creará la clase que hereda de BroadcastReceiver.
- BroadcastReceiver declarado en el manifest:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.jlnavarro.services" > <application android:allowBackup="true" android:label="@string/app_name" . . . <receiver android:name="com.jlnavarro.services.MyReceiver" android:enabled="true" android:exported="true" > </receiver> </application> </manifest>
- Clase MyReceiver que hereda de BroadcastReceiver:
public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving // an Intent broadcast. throw new UnsupportedOperationException("Not yet implemented"); } }
También tendremos que declarar en el manifest los Intents que recibirá la clase. Por ejemplo, incluiremos un evento de los más típicos: el de inicio del SO. De esta forma, siempre que se encienda el smartphone, se llamará a nuestro BroadcastReceiver.
- Intent que recibirá el BroadcastReceiver:
<receiver android:name="com.jlnavarro.services.MyReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" > </action> </intent-filter> </receiver>
Destacar que para que funcione nuestro BroadcastReceiver, muchas veces tendremos que añadir algún permiso. En nuestro caso, añadiremos el que nos permita recibir el Intent indicando que el sistema operativo ha terminado de iniciarse.
- Permiso para poder recibir el ACTION_BOOT_COMPLETED:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
Algunos ejemplos de eventos que podemos capturar son:
- AIRPLANE_MODE: Modo avión.
- BATTERY_LOW: Batería baja.
- BOOT_COMPLETED: Inicio del sistema operativo.
- SCREEN_OFF: Pantalla apagada.
- SCREEN_ON: Pantalla encendida.
Recordad que si trabajamos con Eclipse tendremos que crear la clase y declarar todo lo demás de forma manual.
コスプレ衣装の候補を整理するときは、キャラクター名、作品名、使用シーンを分けて見ると迷いにくくなります。コスプレ計画の初期確認として、鬼滅の刃 キャラクター コスチュームを見ながら準備範囲を考えられます。準備の優先順位を決めておけば、撮影前の確認も落ち着いて行えます。
EJEMPLO DE APLICACIÓN
Para comprobar el funcionamiento del BroadcastReceiver, vamos a hacer una App que inicie el servicio creado en el tutorial anterior, siempre que se encienda el smartphone. Para ello, lo único que tendremos que hacer es iniciar nuestro servicio desde la clase MyReceiver anteriormente creada.
- Iniciar el servicio desde el BroadcastReceiver:
public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Servicio iniciado desde BroadcastReceiver", Toast.LENGTH_SHORT).show(); context.startService(new Intent(context, MyService.class)); } } Acordaos que para detener el servicio tendréis que entrar en la App y pulsar el botón de Off. Hasta aquí el tutorial sobre BroadcastReceiver, y si tenéis alguna duda, ¡no dudéis en preguntar! ¡Un saludo!