Broadcast Receivers in Android with Practical Example

Page 1 sur 4Lecteur de document UniversityLib

Broadcast Receivers in Android with Practical Example

Android Development · notes

Atelier 5 - 1

Les Broadcast Receiver :

Walid ZEDDINI www.zeddini.com

Qu'est ce qu'un BroadCast Receiver Pour pouvoir recevoir des intents, Android vous permet de créer une classe qui implémente BroadcastReceiver. Ces objets sont conçus pour recevoir des intents (intentions) et appliquer des comportements spécifiques à votre code. L'interface BroadcastReceiver ne possède qu'une seule méthode onReceive() que votre classe devra implémenter. Un BroadcastReceiver ne vit que le temps de traiter votre onReceive(). L'instance peut être supprimée par le Garbage Collector. Les receivers sont limités : ils ne peuvent pas ouvrir de boîte de dialogue par exemple. Le système Android envoie l'intention à tous les BroadCast Receiver abonnés par ordre de priorité (priorité de votre BroadCast dans le fichier AndroidManifest.xml). Si un BroadCast souhaite interrompre la réception du Broadcast à ceux d'un niveau inférieure de priorité, il faut utiliser la méthode abortBroadcast().

Activité 1 : Broadcast Avec Activity

Créer un projet Android «BroadBatteryIndicator» qui affiche le % de charge disponible dans la batterie de vos appareils. La barre de progression sera utilisée pour afficher le% de batterie.

Nous allons créer un projet qui s'appellera BroadBatteryIndicator, avec la version si PC performant 8.0 ou 7.0 sinon 6.0 du SDK.

Publicité

• Nom de l'application : BroadBatteryIndicator

• Package : tn.rnu.isi.broadbatteryindicator

• Activité : MainActivity

Dans le dossier res/layout, nous allons créer un layout simple pour notre application qui a une vue de texte pour afficher le% de batterie dans les TextView et la barre de progression pour afficher l'% de batterie graphiquement.

Votre activity_main.xml doit ressembler à ça :

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

xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity">

Publicité

<TextView

android:id="@+id/textfield" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="40dip" />

<ProgressBar

android:id="@+id/progressbar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="20dip" android:max="100" android:maxHeight="500dip" android:maxWidth="300dip" android:minHeight="100dip" android:minWidth="200dip" />

</LinearLayout>

Au sein de l’activity, nous allons déclarer et instancier un objet " mBatInfoReceiver ", de la classe "BroadcastReceiver" et rajouter la méthode OnReceive à implémenter.

Votre code doit ressembler à ça :

Publicité

private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {

@Override public void onReceive(Context c, Intent i) {

int level = i.getIntExtra("level", 0); ProgressBar pb = (ProgressBar) findViewById(R.id.progressbar); pb.setProgress(level); TextView tv = (TextView) findViewById(R.id.textfield); tv.setText("Battery Level: " + Integer.toString(level) + "%");

}

};

Dans la méthode onCreate() de l’activity, appeler la méthode registerReceiver :

@Override

Publicité

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); registerReceiver(mBatInfoReceiver, new IntentFilter(

}

Intent.ACTION_BATTERY_CHANGED));

CODE SOURCE Le code source du projet BroadBatteryIndicator.rar est téléchargeable à partir du lien: https://drive.google.com/open?id=1KB1nxESaMXUEOsDXBXCB6DZNnTtcu1JH