Android ist eine der stärksten Kräfte in der Smartphone-Industrie und es hat eine vielversprechende Zukunft. Um etwas mehr darüber zu erfahren, was es alles kann, und wie Sie davon profitieren, lesen Sie diesen Artikel.
Android ist ein Betriebssystem von Google. Es ist leichtgewichtig, quelloffen und einfach zu bedienen. Wahrscheinlich haben Sie von Android als Betriebssystem für eine Menge cooler, neuer Smartphones bereits gehört, aber Android ist nicht nur auf Smartphones begrenzt. Es wurde bereits auch für den E-Book-Reader „Nook“ von Barnes & Noble verwendet. Und auch wenn Sie nichts davon wissen, wird Android zweifelsohne in einer ganzen Reihe von Geräten verwendet, die eine flexible und leichtgewichtige Plattform für die Ausführung von Programmen brauchen. Auch Ihr Toaster könnte eines Tages ein Android-Gerät sein!
Was macht Android so beliebt? Zuerst einmal, es ist frei. Google macht es verfügbar. Zum anderen, es ist quelloffen. Wenn Google eine neue Version des Android veröffentlicht, wird auch der Quellcode zur Verfügung gestellt. Für Software-Entwickler ist es sehr, sehr nützlich. Haben Sie jemals Schwierigkeiten mit dem seltsamen Verhalten einer Plattform bekommen, das Sie nicht erklären konnten? Mit Android können Sie sich in den Quellcode vertiefen, um herauszufinden, was es genau tut. Android beruht auf Java, eine große Anzahl von Entwicklern ist also damit bereits vertraut.
Linux und Java
Android hat zwei Hauptkomponenten: ein zugrunde liegendes Linux-Betriebssystem und das Android-Subsystem darüber. Die meisten Menschen brauchen überhaupt nicht zu wissen oder sich darum zu kümmern, dass Linux unter der Haube arbeitet. Für Entwickler ist es aber sehr angenehm, eine Shell auf dem Gerät zu starten und herumzubohren. Das Linux-Basissystem verleiht Android auch Multi-Processing-Fähigkeiten. Android-Anwendungen sind Linux-Prozesse, die auf Dateien, Sockets und Gerätetreiber zugreifen, und so ziemlich alles tun, was auf einer Linux-Maschine üblich ist. Da Android für kleine Geräte mit begrenzten Ressourcen gemeint ist, ist Androids Linux kein voll ausgestattetes System. Sie werden nicht alles finden, was auf einer üblichen Linux-Box vorhanden ist, aber alles was Sie brauchen.
Der andere Teil von Android ist das mit Java gebaute Subsystem. Google stellte eine Menge an Klassen für grafische Benutzeroberflächen, Interprozesskommunikation, Datenbankverwaltung, Dateiverwaltung, Grafikbearbeitung, sogar Text-zu-Sprache zur Verfügung! Als Entwickler erstellen Sie Anwendungen mit dem Android Software Development Kit (SDK), testen Sie diese in einem Emulator oder auf einem realen Gerät, verpacken sie, und machen Sie sie für die ganze Welt erreichbar (oder nur für einen Teil davon, wie Sie es wünschen).
Es gibt einige wichtige Konzepte in Android, die jeder Entwickler verstehen und wissen sollte. Eine sehr wichtige Voraussetzung für Android-Anwendungen ist, dass sie mit anderen Anwendungen und Diensten reibungslos zusammenarbeiten. Brauchen Sie Strichcode-Funktion in Ihrer Anwendung? Warum dann nicht den Barcode Scanner von ZXing integrieren, der bereits existiert? Wollen Sie Spracherkennung haben? Integrieren Sie Google Voice. Standorte auf Karten anzeigen? Benutzen Sie Google Maps! Bietet Ihre Anwendung eine Funktion an, die für andere Anwendungen von Nutzen wäre? Machen Sie sie für andere Entwickler erreichbar, die dann diese Funktion integrieren. Der Benutzer selbst sieht einfach eine Reihe von Dialogen mit den Endergebnissen. Er braucht nicht zu wissen, dass dabei mehrere Anwendungen beteiligt sind.
Die Intents
Ein grundlegendes Objekt in Android ist das Intent. Ein Intent ist grundsätzlich „etwas, was ich erledigt bekommen will“, und es ist wirklich einfach, eins zu erstellen. Zum Beispiel, um eine Position auf einer Karte anzuzeigen, erstellen und starten Sie ein Intent, ähnlich wie folgt:
Intent intent = new Intent(? ACTION_VIEW, Uri.parse(? "geo:0,0?q=Jacksonville+FL")); startActivity(intent);
oder, um eine Webseite zu zeigen:
Intent intent = new Intent(? ACTION_VIEW, Uri.parse(? "https://www.androidbook.com")); startActivity(intent);
Daraufhin öffnet sich der Webbrowser des Benutzers und zeigt die gewünschte Webseite an. Der Entwickler braucht sich dabei überhaupt nicht darum zu kümmern, wie in diesem Fall der Browser selbst aufgerufen wird. Darüber hinaus kann der Benutzer jeden beliebigen Browser auf seinem Gerät nutzen, und Sie brauchen sich keine Gedanken zu machen, welcher Browser dieser genau ist. Es ist tatsächlich eine sehr gute Sache, dass der Benutzer den Browser seiner Wahl installieren kann, und dieser mit der von Ihnen entwickelten Anwendung einfach automatisch klarkommt.
Intents werden in den meisten Fällen für das Anzeigen von Inhalten, aber auch für Editieren, für Suche oder Benachrichtigungen verwendet. Wird ein Intent gestartet, sucht Android nach einer passenden Anwendung, die mit diesem Intent umgehen kann. Sie sehen im obigen Beispiel, dass das Intent eigentlich nichts über einen Browser aussagt. Android analysiert die URI, zerlegt sie auf Schema, Host und Pfad, um zu entscheiden, worauf sie sich bezieht. Alle Anwendungen (auch Browser) teilen während der Installation Android mit, wozu sie fähig sind, wie zum Beispiel, URIs mit dem Schema „http“ zu behandeln. Viele Anwendungen können auf Intents reagieren, und es ist einfach, Ihre so einzustellen, dass sie dasselbe tut. Verwenden Sie dazu etwa den folgenden Code:
Intent itt = getIntent(); if(itt != null) { String act = itt.getAction(); Uri uri = itt.getData(); switch(act) { case ACTION_VIEW: }
Dieser Code überprüft, ob irgendetwas übergeben wurde, und wenn ja, dann leitet er die angeforderte Aktion ein. Nun behandeln Sie die Daten, die hereingekommen sind, und Sie lassen die vom Benutzer gewünschte Aktion ausführen. Wurde diese Anwendung einfach vom Benutzer selbst direkt gestartet, dann wäre kein Intent hereingekommen und Sie würden eine alternative Aktion ausführen lassen.
Aktivitäten
Ein weiteres wichtiges Konzept ist, dass Android-Anwendungen typischerweise aus Aktivitäten bestehen. Eine Aktivität ist wie es klingt: sie ist im Grunde genommen eine einzelne Tätigkeit, die eine bestimmte Funktion für den Benutzer mit einer Benutzeroberfläche bereitstellt. Die Aktivität „Kontaktliste“ zeigt zum Beispiel die Liste der Kontakte, die Aktivität „Kontakte bearbeiten“ macht die Bearbeitung der Einträge möglich, und so weiter. Aktivitäten rufen andere Aktivitäten auf (selbstverständlich mithilfe von Intents!). In manchen Fällen erwartet man von einer Aktivität, dass sie auch Daten zurücksendet, wie zum Beispiel beim Starten der Aktivität „Camera“, um ein Bild zu knipsen.
Anwendungen können auch mit Diensten und Broadcast-Empfängern verknüpft sein. Dienste sind genau wie sie klingen: es geht grundsätzlich um Aktivitäten ohne Benutzeroberfläche, entweder lokal oder entfernt in Bezug auf die Anwendung. Broadcast-Empfänger sind die Empfänger von Intents für Benachrichtigungen. Zum Beispiel, wenn eine Textnachricht von dem Gerät empfangen wird, wird ein Intent übermittelt, um eine Aktion irgendwo auszulösen. Ein entsprechender Broadcast-Empfänger startet dann entweder eine Aktivität oder einen Dienst. Abbildung 1 zeigt, wie mehrere Anwendungen während eines Prozesses miteinander zusammenarbeiten. Aktivitäten können andere Aktivitäten starten, manchmal um Daten zurückzubekommen. Dienste können mit einbezogen werden, entweder lokal oder entfernt. Broadcast-Nachrichten können empfangen und aufgearbeitet werden.
Erstellen von Benutzeroberflächen
Benutzeroberflächen für Android könnten eine etwas größere Herausforderung bereiten, als die für andere Geräte. Es gibt nämlich sehr viele Android-Geräte von den verschiedensten Herstellern, und jedes einzelne kann unterschiedliche Hardware haben: unterschiedliche Bildschirmgrößen mit unterschiedlichen Auflösungen. Glücklicherweise macht Android es so einfach wie nur möglich, Steuerelemente zu gestalten und Ihrer Anwendung anzupassen. Jede visuelle Komponente einer Benutzeroberfläche ist eine Unterklasse von View, auch die Container von Views sind Views. Das bedeutet, dass eine Benutzeroberfläche eigentlich eine einzelne große Hierarchie von Views ist, mit einem root-View an der Spitze. Die übliche Methode für die Gestaltung von Benutzeroberflächen verwendet XML-Dateien, und diese werden je nach Bildschirm- und Geräteeigenschaften organisiert. Das folgende Beispiel gestaltet die Oberfläche für eine Aktivität mit Titel, Label, Eingabefeld, Drop-Down-Menü und einer Schaltfläche:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android= "https://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/title" android:text="@string/title" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/label" android:text="@string/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/title"/> <EditText android:id="@+id/entry" android:hint="@string/entryHint" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/label" android:layout_below="@id/title"/> <Spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/entry"/> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btnLabel" android:onClick="doClick" android:layout_toRightOf="@id/spinner" android:layout_below="@id/spinner"/> </RelativeLayout>
Die Benutzeroberfläche von Listing 1 sehen Sie in Abbildung 2. Es gibt mehrere Dinge, die wir zu diesem XML-Layout bemerken müssen. Erstens, es gibt keine konkreten Strings für die Labels. Android verwendet Ressource-IDs, die während dem Rendern der Oberfläche zu aktuellen Strings aufgelöst werden. Das bedeutet, dass Sie separate String-Dateien ablegen können, eine für kleine, eine für mittelgroße und eine für große Bildschirme. Sie können separate String-Dateien nicht nur für verschiedene Bildschirmgrößen haben, sondern auch für Querformat (das heißt für gedrehte Bildschirme). Außerdem auch für verschiedene Lokalisierungen und Sprachen. Android versucht die geeignetste Lösung für die Gegebenheiten zu finden und stellt automatisch die Ressourcen für Ihre Anwendung zur Verfügung. Die Oberfläche im obigen Beispiel sieht noch etwas grob aus, aber Sie können auch Stile und Themen relativ einfach definieren, dadurch alle Aspekte der verschiedenen Views ändern, und nahezu jeder Anwendung im Nu ein hübsches Aussehen verleihen.
Listing 2 zeigt wie Ihr Code in etwa aussehen soll, um die oben genannten Kombinationen zum Arbeiten zu bringen.
import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.Editable; import android.util.Log; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; public class MainActivity extends Activity { private Spinner spinner; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.languages, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); spinner = (Spinner)findViewById(R.id.spinner); spinner.setAdapter(adapter); } public void doClick(View view) { String menuChoice = (String)spinner.getSelectedItem(); EditText et = (EditText)findViewById(R.id.entry); String value = et.getText().toString(); value.replace(' ','+'); // Do something interesting. Launch Maps to the location. Intent itt = new Intent(Intent.ACTION_VIEW); itt.setData(Uri.parse("geo:0,0?q="+value)); startActivity(itt); } }
Wie Sie sehen, ist der Code zum Glück frei von eigentlichen Text-Strings und von der Logik, um herauszufinden, was angezeigt werden soll. Diese Aufgaben sind alle Android und den Ressourcen-Dateien überlassen. Worauf Sie alleine achten müssen ist die Anordnung. Für kleinere Bildschirme zum Beispiel setzen Sie das Eingabefeld unter dem Namen, statt daneben. Unser Code braucht dazu keine Änderung. Eine Beispieldatei für strings.xml
sehen Sie in Listing 3.
<resources> <string name="title"><b>My Amazing App!</b></string> <string name="label">Name:</string> <string name="entryHint">City Country</string> <string name="btnLabel">Do it!</string> </resources>
Formatierungsstile definieren Sie mithilfe von Styling-Tags in den Strings, im obigen Beispiel: fett und kursiv für den Titel. Android verfügt über eine Vielzahl an Funktionen, die Ihnen erleichtern, großartige Anwendungen zu erstellen. Nebenbei bemerkt, diese Anwendung tut tatsächlich etwas. Wenn Sie den Namen einer Stadt und eines Landes eintippen, und auf die Taste drücken, wird die Maps-Anwendung gestartet, und die Stadt auf der Karte angezeigt.
Ebenfalls erwähnenswert in Listing 2 ist der Spinner (die Oberflächenkomponente, die wie ein Drop-down-Menü aussieht). Ein Spinner ist eines der Steuerelemente für Listen, und diese verwenden Adapters für das Mapping von listenorientierten Daten an die Benutzeroberfläche. Auf der einen Seite des Adapters befinden sich die eigentlichen Daten, zum Beispiel Datensätze oder Inhalte von einem Inhaltsanbieter, oder eben nur Strings aus einer Ressourcen-Datei (wie in unserem Beispiel). Auf der anderen Seite des Adapters befindet sich View, das die entsprechenden Datenfelder für den Benutzer ersichtlich macht. Im Inneren des Adapters befindet sich das Layout für Views, in unserem Fall android.R.layout.simple_dropdown_item_1line
. Sobald Sie den Adapter mit der Listensteuerung verbinden, sorgt Android für das Anzeigen der entsprechenden Daten aus der Datenquelle auf der Benutzeroberfläche, und es erstellt Views nur für die sichtbaren. Drücken Sie nun auf den Spinner, sehen Sie eine Scroll-Liste mit Möglichkeiten, in der Sie eine für die aktuelle Einstellung auswählen sollen. Steuerelemente für Listen werden nicht nur für das Anzeigen von Daten in Scroll-Listen verwendet, sondern auch in Grids und sogar für Bilder in einer Galerie. Hinweis: Der Spinner spielt in unserem Beispiel eigentlich keine Rolle, ich wollte Ihnen nur ein Steuerelement für Listen vorstellen.
Verwalten von Daten
Selbstverständlich gibt es kaum welche unter den guten Anwendungen, die nicht mit Daten umgehen. Was kann uns also Android in puncto Datenverwaltung noch bieten? Die Antwort lautet: vieles! Außer der Verwaltung der bereits oben angeführten Ressourcen-Dateien, kann Android auch Rohdaten aus Ihren Anwendungspaketen anzeigen, Dateien lesen und schreiben, die sich anderswo auf dem Gerät (vielleicht auf der SD-Karte) befinden, Präferenz-Dateien behandeln, (die neben dem Speichern von Benutzer-Präferenzen auch für die Speicherung von kleinen Datenmengen, wie Highscores in einem Spiel, verwendet werden). Android behandelt auch SQLite-Datenbanken (auch auf dem Gerät gespeichert), Daten, die von einer anderen Anwendung auf dem Gerät verwaltet werden, und so ziemlich alles, was Sie über die Netzwerkverbindung erreichen, einschließlich Datenbanken. Denken Sie daran, dass Android auf Java gebaut ist, deshalb ermöglicht jeder Java-basierte Datenbanktreiber, den Sie in Ihre Anwendung integrieren können, einen Zugriff auf diese Art von Datenbanken. Android bietet SQLite Datenbank-Funktionalität aus der Box. Da all diese Funktionen in Android vorausgesetzt sind, sollte ein Großteil davon für jeden sehr vertraut erscheinen, der Programme in Java schreibt, denn die Mechanismen sind so ziemlich die gleichen.
Eine der wichtigsten Möglichkeiten für die gemeinsame Nutzung von Daten zwischen verschiedenen Anwendungen ist die Implementierung von Inhaltsanbietern (Content-Providern). Diese werden verwendet, um Multimedia-Dateien wie Song- und Film-Dateien, Bilder, Kontakte, Textnachrichten (SMS), E-Mails und E-Mail-Anhänge zu verwalten. Das heißt, es gibt bereits eine Vielzahl von Möglichkeiten, um diese Art von Daten zu verwalten. Sie verwenden besser einen vorhandenen Inhaltsanbieter, als einen eigenen zu schreiben. Sie können natürlich jederzeit einen eigenen schreiben, wenn Sie es unbedingt wollen. Inhaltsanbieter arbeiten mit URIs, was die übliche Methode für Datenreferenzen in Android ist. Wie es aus den bereits weiter oben behandelten Beispielen hervorgeht, standardmäßig fügen Sie Daten mit einer URI hinzu, wenn Sie Intents kursieren lassen. Was wiederum eher das Hinzufügen von Verweisen (Referenzen) als der Daten selbst bedeutet. Die empfangende Anwendung auf der anderen Seite bittet dann den entsprechenden Inhaltsanbieter um die eigentlichen Daten. Auf mobilen Geräten ist es eher ratsam, als große Datenmengen herumzuschicken, denn Speicher- und CPU-Kapazitäten sind auch limitiert. URIs bieten eine gute Lösung dafür. Listing 4 zeigt ein Beispiel für die Anbindung eines Inhaltanbieters für Kontakte an ListView, um eine Liste der Kontakte anzuzeigen, wieder mit Hilfe eines Adapters.
import android.app.ListActivity; import android.content.ContentUris; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.Contacts.People; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; public class ListViewActivity extends ListActivity implements OnItemClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ListView lv = getListView(); Cursor c = managedQuery(People.CONTENT_URI, null, null, null, People.NAME); String[] cols = new String[]{People.NAME}; int[] views = new int[] {android.R.id.text1}; SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, cols, views); this.setListAdapter(adapter); lv.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> adView, View target, int position, long id) { Log.v("ListViewActivity", "in onItemClick with " + ((TextView) target).getText() + ". Position = " + position + ". Id = " + id); Uri selectedPerson = ContentUris.withAppendedId( People.CONTENT_URI, id); Intent intent = new Intent(Intent.ACTION_VIEW, selectedPerson); startActivity(intent); } }
In diesem Beispiel sehen Sie eine Aktivität, die alle Kontakten auflistet, und wenn Sie einen davon anklicken, wird die Anwendung Contacts gestartet, die die Angaben zu dem ausgewählten Kontakt anzeigt. Und das alles mit nicht allzuviel von Code.
Spracherkennung und Text to Speech
Also, was alles bietet Android noch? Eine Menge! Spracherkennung steht auch zur Verfügung, selbstverständlich als Aktivität, erreichbar über Intents. Genau so steht es um die Funktion Text-zu-Sprache. Es gibt eine integrierte Engine, um Text in gesprochene Sprache zu konvertieren, direkt auf dem Gerät. Sie kommt sogar mit verschiedenen Sprachen zurecht. Sobald Sie diese Funktion in Ihrer Anwendung einmal eingestellt haben, starten Sie die Sprachausgabe wie folgt:
tts.speak("This text to speech? stuff is great!", QUEUE_ADD,? null);
Karten und Geokodierung
Dann gibt es noch Karten und Geokodierung. Google bietet eine sehr schöne Google Maps Anwendung an, die Sie mithilfe von Intents erreichen, wie weiter oben beschrieben. So integrieren Sie Karten in eigene Anwendungen, fügen Marker hinzu und zeichnen Linien. Viele Geräte verfügen über GPS-Hardware, womit Sie den genauen Standort des Gerätes ermitteln und auf der Karte anzeigen können. Android bietet alles, was Sie dabei nur benötigen. Mit Geokodierung wandeln Sie Adressen und allgemein bekannte Orte in Breitengrad-Längengrad-Paare, oder auch umgekehrt, bei der Angabe von Breitengrad-Längengrad erhalten Sie Informationen darüber, was sich alles an diesem Standort (oder mindestens in der Nähe) befindet. Die Karten sind eigentlich recht gut ausgestattet. Um zu noch mehr Informationen zu gelangen, aktivieren Sie die Layers, wie Verkehr, Satelliten-Ansicht, Straßen-Ansicht (Street-View mit Fotos). Die Karten erreichen Sie, indem Sie MapView in ihrer XML Layout-Datei integrieren, wie in Listing 5. gezeigt.
<com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:apiKey="YOUR_API_KEY_WOULD_GO_HERE" />
MapView braucht eine ständige Internetverbindung, um richtig zu funktionieren, denn es bezieht die Daten von Google Server-APIs. Aus diesem Grund müssen Sie sich bei Google anmelden, um einen API-Schlüssel zu bekommen, den Sie dann bei der Instanziierung von Karten verwenden. Auf dem Gerät läuft parallel dazu noch eine Aktivität namens MapActivity, diese kümmert sich um die einzelnen Kartenfragmente (map tiles), die sie von Zeit zu Zeit herunterlädt, sowie um Schwenken und Zoomen, und um die Layers zu Verkehr usw. Es gibt sogar ein eigenes Android-Layer namens MyLocationOverlay für Maps, das Ihren tatsächlichen Standort mittels GPS (oder Mobilfunk-Zellendaten oder WiFi-Netzwerk) ermittelt, und diesen auf der Karte in Form eines blinkenden blauen Punktes anzeigt. So einfach geht das:
MapView mapview = (MapView)? findViewById(R.id.mapview); MyLocationOverlay whereAmI =? new MyLocationOverlay(this,? mapview); mapview.getOverlays().add(? whereAmI);
Es gibt noch so viel mehr zu Android zu erzählen, glauben Sie mir. Ich war Mitverfasser eines Buches über 700 Seiten, und nicht einmal dort haben wir es geschafft, alles ausführlich zu behandeln. Bevor wir die Innovationen behandeln, listen wir schnell noch einige wichtigen Funktionen auf: in Android gibt es Klassen für Touchscreens, für Gesten und für alle Arten von Sensoren (für Beschleunigungsmesser, für magnetische, für Licht und Kamera). Es gibt Klassen für 2D-Animation und 3D OpenGL. Android hat die Fähigkeit, dynamische Inhalte direkt auf dem Home-Bildschirm mittels Widgets abzuspielen.
C2DM
Eine besonders interessante neue Funktion von Android ist das sogenannte Cloud to Device Messaging (C2DM). Wie weiter oben bereits erklärt, kann ein Intent einer Anwendung auf einem Gerät genau mitteilen, was zu tun. Seitdem Google-Dienste bereits mit Geräten kommunizieren können (selbstverständlich verschlüsselt), ist es relativ einfach für Google, eine Broadcast-Nachricht zu einem bestimmten Intent auf einem bestimmten Gerät zu schicken. Die Anwendung auf dem Gerät muss dazu am Google-Server bereits für C2DM registriert sein, um zu wissen, wohin die Nachricht geschickt werden soll. So ist es zum Beispiel auch möglich, dass Sie mithilfe einer Erweiterung im Chrome Browser festlegen, dass die gleiche Website auch auf Ihrem Handy aufgerufen wird. Es ist sehr aufregend für die Zukunft, wie Sie Ihr Telefon immer mehr in Ihr Web-Leben integrieren.
Entwicklungsumgebung
Für die Entwicklung von Android-Anwendungen verwenden Sie am besten Eclipse, die quelloffene integrierte Entwicklungsumgebung (IDE) für Windows, MacOS und Linux (nur Intel). Google bietet ein Android Developer Tool (ADT) Plugin für Eclipse an, das sehr gut ist. Die Funktionen Auto-Vervollständigung, integrierte Hilfe und Fehlerprüfung sind sehr praktisch. Selbst die Ausnahmen in Android machen Vorschläge, was fehlerhaft sein könnte. Das Android Software Development Kit (SDK) kommt mit einem Emulator, und mit mehreren sehr nützlichen Tools zum Signieren Ihrer Anwendungen (für die Sicherheit), für Debugging und für die Gestaltung von GUIs. Das Testen ist eine andere Sache, da es so viele Variationen gibt, worauf Sie testen sollten. All die verschiedenen Geräte haben unterschiedliche Bildschirmgrößen und Auflösungen, und der Benutzer kann das Gerät sowohl im Hochformat als auch im Querformat halten. Im Idealfall würden Sie in allen möglichen Konfigurationen testen. Zum Glück stellt Android auch hier etwas Unterstützung bereit. Habe ich bereits erwähnt, dass dies alles kostenlos ist? Sehen Sie die Verweise am Ende dieses Artikels für die Downloads.
Online stellen
Sind Ihre Anwendungen endlich fertig, dann stellen Sie diese am besten im Android Market online, damit Sie diese entweder kostenlos oder für einen Preis mit dem Rest der Welt teilen können. Im Gegensatz zu anderen Sites für Smartphone-Anwendungen, brauchen Sie von Google weder eine Überprüfung noch eine Genehmigung für Ihre App. Ja, Sie müssen diese nicht einmal exklusiv nur im Android Market anbieten. Der Android Market ist nur eine von vielen Absatzstellen, über die Sie Ihre Anwendung den Benutzern oder Kunden anbieten können. Der Android Market ist aber der beste Ort und auch sehr praktisch. Hier werden nur Anwendungen für bestimmte Geräte angeboten, die auf diesen Geräten tatsächlich auch laufen. Wenn Ihre Anwendung zum Beispiel eine Kamera erfordert, zeigt sie der Android Market für Geräte ohne Kamera gar nicht erst an. Wenn Ihre Anwendung Android 2.1 oder höher benötigt, dann sehen Geräte mit älterer Firmware die App ebenfalls nicht. Als Entwickler sind Sie befugt nachzusehen, in welchen Ländern und auf welchen Trägern Ihre Anwendung erreichbar ist. Es gibt auch andere Märkte zur Distribution von Android Apps, zum Beispiel Ihre eigene Homepage oder Google Code. Manche Leute verkaufen ihre Apps, manche integrieren darin Anzeigen (Google kaufte kürzlich AdMob, aber es gibt auch andere Ad-Plattformen für Android), und wieder andere verwenden Abo-Modelle. Nur Ihre Fantasie kann Ihnen Grenzen setzen.