Android - Funkempfangs

Funkempfangsgerät einfach zu reagieren, um Nachrichten von anderen Anwendungen oder vom System selbst ausgestrahlt.Diese Nachrichten werden irgendwann genannt Ereignissen oder Absichten. Beispielsweise können Anwendungen auch zu initiieren Übertragungen, damit andere Anwendungen wissen, dass einige Daten auf das Gerät heruntergeladen worden und ist für sie zu verwenden, so dass diese ausgestrahlt Empfänger, die diese Kommunikation abzufangen und entsprechende Maßnahmen einzuleiten.
Es gibt folgende zwei wichtige Schritte, um BroadcastReceiver arbeitet für die System ausgestrahlt Absichten -
  • Erstellen der Rundfunkempfänger.
  • Registrieren von Broadcast-Receiver
Es gibt eine zusätzliche Schritte für den Fall, Sie gehen, um Ihre kundenspezifische Absichten umzusetzen, dann müssen Sie diese Absichten zu erstellen und zu senden.

Erstellen der Rundfunkempfänger

Ein Rundfunkempfänger wird als Unterklasse implementiertBroadcastReceiver Klasse und das Überschreiben der onReceive () -Methode, wo jede Nachricht als empfangen Intent Objektparameter.
public  class  MyReceiver  extends  BroadcastReceiver  { 
   @Override 
   public  void onReceive ( Context context ,  Intent intent )  { 
      Toast . makeText ( context ,  "Intent . Erkannt ",  Toast. LENGTH_LONG.) Show 
   
();}}

Registrieren von Broadcast-Receiver

Eine Anwendung lauscht spezifischen Broadcast Absichten durch die Registrierung eines Rundfunkempfängers in AndroidManifest.xml Datei.Betrachten wir werden registrieren MyReceiver für System erzeugten Ereignis ACTION_BOOT_COMPLETED die durch das System ausgelöst wird, sobald das Android-System den Bootvorgang abgeschlossen ist.

BROADCAST-RECEIVER

<application 
   android:icon = "@drawable/ic_launcher" 
   android:label = "@string/app_name" 
   android:theme = "@style/AppTheme"  > 
   <receiver  android:name = "MyReceiver" >
   
      <intent-filter> 
         <Action  android: name = "android.intent.action.BOOT_COMPLETED"> 
         </ Action> 
      </ intent-filter>
   
   </ Empfänger> 
</ application>
Nun, wenn Ihr Android-Gerät gebootet wird, wird es von BroadcastReceiver abgefangen werden MyReceiver und innen implementierte Logik onReceive ()wird ausgeführt.
Es gibt mehrere System generierten Ereignisse definiert als endgültige statische Felder in der Intent-Klasse. Die folgende Tabelle listet einige wichtige Systemereignisse.
Event ConstantBezeichnung
android.intent.action.BATTERY_CHANGEDDauerhaften Broadcast, die den Ladezustand, Niveau, und weitere Informationen über die Batterie.
android.intent.action.BATTERY_LOWZeigt niedrigen Batteriestand auf dem Gerät.
android.intent.action.BATTERY_OKAYZeigt die Batterie ist jetzt in Ordnung, nachdem er gering.
android.intent.action.BOOT_COMPLETEDDiese wird einmal gesendet werden, nachdem das System gebootet wurde.
android.intent.action.BUG_REPORTZeigen Aktivität für einen Fehler melden.
android.intent.action.CALLFühren Sie ein Gespräch mit jemandem durch die Daten festgelegt.
android.intent.action.CALL_BUTTONDer Benutzer betätigt die Schaltfläche "Anruf", um die Dialer oder andere geeignete UI für ein Anruf gehen.
android.intent.action.DATE_CHANGEDDas Datum hat sich geändert.
android.intent.action.REBOOTLassen Sie das Gerät neu starten.

Rundfunk Benutzerdefinierte Intents

Wenn Sie möchten, dass Ihre Anwendung selbst sollte generieren und senden individuelle Absichten dann müssen Sie erstellen und senden Sie diese Absichten mit Hilfe der sendBroadcast () Methode in Ihrem Aktivitätsklasse.Wenn Sie die Verwendung sendStickyBroadcast (Intent) Methode ist es die Absicht klebrig, also die Absicht, die Sie senden Aufenthalte rund, nachdem die Sendung beendet ist.
public  void broadcastIntent ( View view ) 
{ 
   Intent intent =  new  Intent (); 
   intent . setAction ( "com.tutorialspoint.CUSTOM_INTENT" ); 
   sendBroadcast ( intent ); 
}
Diese Absicht com.tutorialspoint.CUSTOM_INTENT kann auch in ähnlicher Weise registriert werden, wie wir System erzeugt Vorsatz Für registriert.
<application 
   android:icon = "@drawable/ic_launcher" 
   android:label = "@string/app_name" 
   android:theme = "@style/AppTheme"  > 
   <receiver  android:name = "MyReceiver" >
   
      <intent-filter> 
         <Action  android: name = "com.tutorialspoint.CUSTOM_INTENT"> 
         </ Action> 
      </ intent-filter>
   
   </ Empfänger> 
</ application>

Beispiel

Dieses Beispiel wird Ihnen erklären, wie das Erstellen BroadcastReceiverindividuelle Absicht, abfangen. Sobald Sie mit benutzerdefinierten Absicht vertraut sind, dann sind Sie bei Ihrer Bewerbung auf System erzeugten Absichten abfangen programmieren. Lassen Sie uns also befolgen Sie die folgenden Schritte aus, um die Android-Anwendung wir erstellt ändern Hallo Welt Beispiel Kapitel -
SchrittBezeichnung
1Sie werden Android-Studio verwenden, um ein Android-Anwendung erstellen und benennen es als meine Anwendung unter einem Paketcom.example.My Anwendung wie in der erläutert Hallo Welt BeispielKapitel.
2Ändern Haupttätigkeit Datei MainActivity.java hinzufügenbroadcastIntent () Methode.
3Erstellen Sie eine neue Datei namens java MyReceiver.java unter dem Paket com.example.My Anwendung, eine BroadcastReceiver definieren.
4Eine Anwendung kann eine oder mehrere benutzerdefinierte und System Absichten ohne Einschränkungen zu behandeln. Jeder Gedankenstrich die Sie abfangen wollen, müssen in Ihrem eingetragen werdenAndroidManifest.xml Datei mit <Empfänger ... /> Tag
5Ändern Sie den Standardinhalt der res / layout / activity_main.xml-Datei, um eine Schaltfläche auf Vorsatz ausgestrahlt sind.
6Keine Notwendigkeit, ändern Sie den String-Datei, Android Studio kümmern string.xml Datei.
7Führen Sie die Anwendung auf Android-Emulator zu starten, und überprüfen Sie das Ergebnis der Änderungen in der Anwendung durchgeführt.
Im Anschluss ist der Gehalt des modifizierten Haupttätigkeit Datei src / com.example.My Anwendung / MainActivity.java. Diese Datei kann jedes der grundlegenden Lebenszyklus Methoden umfassen. Wir haben gegebenbroadcastIntent () Methode, um eine benutzerdefinierte Absicht ausgestrahlt.
Paket com. Beispiel. Meine  Anwendung;

import android . os . Bundle ; 
import android . app . Activity ; 
import android . view . Menu ; 
import android . content . Intent ; 
import android . view . View ;

öffentliche  Klasse  MainActivity  erstreckt  Aktivität  {

   @Override 
   public  void onCreate ( Bundle savedInstanceState )  { 
      super . onCreate ( savedInstanceState ); 
      setContentView ( R . layout . activity_main ); 
      }
   
   @Override 
   public  boolean onCreateOptionsMenu ( Menu menu )  { 
      getMenuInflater (). inflate ( R . menu . activity_main , menu ); 
      return  true ; 
      }
   
   // Eine benutzerdefinierte ausgestrahlt intent. 
   public  void broadcastIntent ( View view ){ 
      Intent intent =  new  Intent (); 
      intent . setAction ( "com.tutorialspoint.CUSTOM_INTENT" ); 
      sendBroadcast ( intent ); 
   } 
}
Im Anschluss wird der Inhalt des src / com.example.My Anwendung /MyReceiver.java:
Paket com. Beispiel. Meine  Anwendung;

import android . content . BroadcastReceiver ; 
import android . content . Context ; 
import android . content . Intent ; 
import android . widget . Toast ;

public  class  MyReceiver  extends  BroadcastReceiver  { 
   @Override 
   public  void onReceive ( Context context ,  Intent intent )  { 
      Toast . makeText ( context ,  "Intent . Erkannt ",  Toast. LENGTH_LONG.) Show 
   
();}}
Im Anschluss wird der modifizierte Inhalt der AndroidManifest.xml Datei. Hier haben wir hinzugefügt <service ... /> Tag, um unseren Service gehören:
<manifest  xmlns: android = "http://schemas.android.com/apk/res/android" 
   Paket = "com.example.My Application" 
   Android: Versioncode = "1" 
   Android: versionname =  "1.0">
   
   <verwendet-sdk 
      Android: minSdkVersion = "8" 
      Android: targetSdkVersion = "22"  />
   
   <application 
       android:icon = "@drawable/ic_launcher" 
       android:label = "@string/app_name" 
       android:theme = "@style/AppTheme"  >
       
       <Aktivität 
          android: name = ".MainActivity" 
          android: label = "@ String /  title_activity_main">
       
          <intent-filter> 
             <action  android:name = "android.intent.action.MAIN"  /> 
             <category  android:name = "android.intent.category.LAUNCHER" /> 
          </intent-filter>
          
       </ Tätigkeit>
       
       <Empfänger  android: name = "MyReceiver">
       
       <intent-filter> 
          <Action  android: name = "com.tutorialspoint.CUSTOM_INTENT"> 
          </ Action> 
       </ intent-filter>
       
       </ Empfänger>
       
   </ application> 
</ manifest>
Im Anschluss wird der Inhalt sein res / layout / activity_main.xml Datei eine Schaltfläche enthalten, um unsere eigene Absicht ausgestrahlt -
<RelativeLayout  xmlns:android = "http://schemas.android.com/apk/res/android" 
   xmlns:tools = "http://schemas.android.com/tools"  android:layout_width = "match_parent" 
   android:layout_height = "match_parent"  android:paddingLeft = "@dimen/activity_horizontal_margin" 
   android:paddingRight = "@dimen/activity_horizontal_margin" 
   android:paddingTop = "@dimen/activity_vertical_margin" 
   android:paddingBottom = "@dimen/activity_vertical_margin"  tools:context = ".MainActivity" >
   
   <TextView 
      android:id = "@+id/textView1" 
      android:layout_width = "wrap_content" 
      android:layout_height = "wrap_content" 
      android:text = "Example von Broadcast" 
      android:layout_alignParentTop = "true" 
      android:layout_centerHorizontal = "true" 
      android:textSize = "30dp"  />
      
   <TextView 
      android:id = "@+id/textView2" 
      android:layout_width = "wrap_content" 
      android:layout_height = "wrap_content" 
      android:text = "Tutorials Punkt " 
      android:textColor = "#ff87ff09" 
      android:textSize = "30dp" 
      android:layout_above = "@+id/imageButton" 
      android:layout_centerHorizontal = "true" 
      android:layout_marginBottom = "40dp"  />
      
   <ImageButton 
      android:layout_width = "wrap_content" 
      android:layout_height = "wrap_content" 
      android:id = "@+id/imageButton" 
      android:src = "@drawable/abc" 
      android:layout_centerVertical = "true" 
      android:layout_centerHorizontal = "true"  />
      
   <Button 
      android:layout_width = "wrap_content" 
      android:layout_height = "wrap_content" 
      android:id = "@+id/button2" 
      android:text = "Broadcast Intent" 
      android:onClick = "broadcastIntent" 
      android:layout_below = "@+id/imageButton" 
      android:layout_centerHorizontal = "true"  />

</ RelativeLayout>
Im Anschluss wird der Inhalt sein res / Werte / strings.xml zwei neue Konstanten definieren -
<resources>     
    <string  name = "menu_settings"> Einstellungen </ string> 
    <string  name = "title_activity_main"> My Application </ string> 
</ resources>
Lassen Sie uns versuchen, unsere modifizierten laufen Hallo Welt! Anwendung, die wir gerade geändert. Ich nehme an, Sie geschaffen hatte AVD dabei Umfeld Set-up. Um die App vom Android-Studio, öffnen Sie eine der Aktivität Dateien Ihres Projekt auszuführen, und klicken Sie auf Eclipse-Run IconAusführen-Symbol in der Werkzeugleiste. Android Studio installiert die App auf Ihrem AVD und startet es und wenn alles in Ordnung ist mit der Einrichtung und Anwendung, wird es folgende Emulator-Fenster anzuzeigen -
Android Broadcast-Demo
Nun, unsere individuelle Absicht zu senden, lassen Sie uns auf klickenBroadcast-Intent-Taste, wird dies unsere eigene Absicht ausgestrahlt"com.tutorialspoint.CUSTOM_INTENT", die durch unsere registrierten BroadcastReceiver dh MyReceiver abgefangen werden und wie pro unsere implementierte Logik ein Toast auf dem Boden erscheinen der Simulator wie folgt -
Android Broadcast-Intent
Sie können versuchen, Durchführung der anderen BroadcastReceiver zu System abfangen erzeugten Absichten wie Systemstart, das Datum geändert, Batterie usw.
Share on Google Plus

About ptjqatar

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.

0 التعليقات:

Kommentar veröffentlichen