En Android-koders introduktion til radiomodtagere

Da jeg var barn, boede vi ud i pindene, og vores telefontjeneste var det, der var kendt som en festlinie. Jeg formoder, at nogle af jer, der læser denne blog, ikke har nogen idé om, hvad en festlinje er, så både for at uddanne og date mig, lad mig hurtigt forklare. En festlinje var en telefonlinje, som du delte med en eller flere af dine naboer.

I vores tilfælde delte vi en telefonlinje med fru Stump, den ældre kvinde, der ejede en æbleplantage på tværs af gaden. Da du ville ringe, hentede du modtageren, men inden du ringede (på en rigtig drejelig opkald til ærlighed til godhed), måtte du først lytte og se, om fru Stump allerede var i telefon. Hvis hun var det, var den høflige ting at gøre hænge op. (Fru Stump virkede ældgamle for mig dengang, men hun havde meget skarp hørelse, og jeg kan forsikre dig, hvis du ikke gjorde det høfligt senere den dag, at fru Stump skulle snakke med din mor.)

Hvad har noget af dette at gøre med Android-udvikling? Nå, Android-operativsystemet har en intern mekanisme kaldet en transmission / modtager-model, der fungerer lidt som de gamle partitelefonlinjer. Operativsystemet og endda andre applikationer udsender med jævne mellemrum meddelelser om ting, der sker, såsom batteristatus ændret, Wi-Fi tændt eller telefonens retning ændret. Dette er alle ting, der annonceres i realtid, og hvis du ved, hvordan du henter telefonen og lytter, kan din kode reagere i overensstemmelse hermed uden at det er unødvendigt at stemme for den stat, der interesserer dig.

Du kan læse Googles officielle forklaring på en BroadcastReceiver. Hvis du som mig, selvom du foretrækker en kodeprøve, har jeg oprettet en kort demonstration af, hvordan man opretter, registrerer og bruger en tv-modtager til at lytte til ændringer i enhedens retning. Du kan følge med i vejledningen eller downloade hele projektet og importere det direkte til dit arbejdsområde.

1. Opret et nyt Android-projekt i Eclipse. Målret SDK'en til Android 1.6 eller nyere. Sørg for at ændre startfilen til Main.java.

2. I vores mappe / res / layout ønsker vi at definere layoutet til vores Main.java-fil. Åbn main.xml, og tilføj et par tekstvisninger.

 main.xml 
 "1.0" encoding = "utf-8" ?> 

http://schemas.android.com/apk/res/android

android: layout_width = "fill_parent"

android: layout_height = "fill_parent"

android: orientering = "lodret" >

android: layout_width = "fill_parent"

android: layout_height = "wrap_content"

android: textColor = "# 00ff00"

android: textSize = "20dip"

android: text = "Broadcast Receiver Demo" />

android: layout_width = "fill_parent"

android: layout_height = "wrap_content"

android: text = "(drej telefonen for at aktivere modtageren)" />

3. Lad os tage et kig på Main.java-filen i vores / src-mappe. Til at begynde med vil vi erklære en ny tv-modtager. Jeg har gjort dette inline, men hvis du ikke foretrækker Java's inline-syntaks, kan du altid udvide BroadcastReceiver med din egen brugerdefinerede klasse.

 Main.java- pakke com.authorwjf.broadcast_receiver; 
 import android.app.Aktivitet; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Configuration; import android.os.Bundle; import android.widget.Toast; 
 public class Main udvider aktivitet { 
 privat BroadcastReceiver the_receiver = new BroadcastReceiver () { 
 @Override offentligt tomrum onReceive (Context c, Intent i) { int orientering = getBaseContext (). GetResources (). GetConfiguration (). Orientering; if (orientering == Konfiguration. ORIENTATION_PORTRAIT ) { 

Ristet brød. makeText (getBaseContext (), "Jeg står stadig.", Toast. LENGTH_SHORT ) .show ();

} andet hvis (orientering == Konfiguration. ORIENTATION_LANDSCAPE ) {

Ristet brød. makeText (getBaseContext (), "Hjælp! Jeg er faldet, og jeg kan ikke stå op.", Toast. LENGTH_SHORT ) .show ();

} andet {

Ristet brød. makeText (getBaseContext (), "?! # $% !?", toast. LENGTH_SHORT ) .show ();

}

}

};
 privat IntentFilter-filter = nyt IntentFilter (Intent. ACTION_CONFIGURATION_CHANGED ); 
 } 

4. Når modtageren er defineret og et par handlinger på plads til håndtering af en modtagelse, er det, der er tilbage, at håndtere registrering og afregistrering af modtageren. Det er muligt at registrere din udsendelsesmodtager i Android-manifestet for aktiviteten; kan du finde et eksempel på at gøre dette på Googles officielle dokumentationswebsted. Jeg foretrækker at registrere mine udsendelsesmodtagere i kode, stort set fordi det giver mig muligheden for dynamisk at oprette forbindelse og afbryde dem, som jeg vælger.

 Main.java 

@Override

public void onCreate (Bundle gemtInstanceState) { super .onCreate (gemtInstanceState);

setContentView (R.layout. main );

}
 @Override beskyttet tomrum onResume () { denne .registerReceiver (the_receiver, filter); super .onResume (); } 
 @Override beskyttet tomrum onPause () { denne .unregisterReceiver (the_receiver); super .onPause (); } 

5. Åbn manifestet og aktiver detektering af orienteringsændring ved at føje følgende mulighed til aktiviteten:

 android: configChanges = "orientering" 

Det gør det. Ilæg koden til din enhed eller emulator, og drej derefter din telefon (Ctrl F12 på emulatoren). Når udsendelsen modtages, viser modtageren en passende skålbesked ( figur A ).

Figur A

Se, det er Android's version af en festlinie. Jeg finder udsendelsesmodtagere enkle og yderst nyttige. Husk bare at "hænge på", når du er færdig med at lytte ved hjælp af det afregistrerende modtageropkald; Ellers sender Google muligvis nogen over for at chatte med din mor!

© Copyright 2021 | pepebotifarra.com