Windows Phone 7-Apps entwickeln - Leseprobe
Transcription
Windows Phone 7-Apps entwickeln - Leseprobe
60109-2 U1+U4 03.05.2011 10:14 Uhr Seite 1 Christian Bleske Christian Bleske Aus dem Inhalt: Know-how ist blau. • Windows Phone 7 im Detail • Betriebssystem-Basics • Das XNA-Framework Programmierung –Tools – Funktionen • Die Oberflächenbeschreibungssprache und Silverlight • Kurze Einführung in C# XAML • Windows Phone Developer Tools Microsofts Windows Phone 7 ist neben Apple iOS und Google Android das dritte große Smartphone-Betriebssystem auf dem Markt – was noch fehlt, sind Apps! Dieses Buch zeigt, wie Sie diese Chance nutzen und Apps für Windows Phone 7 entwickeln. Anhand einer konkreten Beispielapplikation lernen Sie alle wichtigen Funktionen und das Oberflächendesign kennen und programmieren. Zudem zeigt Autor Christian Bleske ausführlich, wie Sie Ihre App fit für den Windows Phone-Marketplace machen. 씰 씰 씰 Windows Phone 7 macht vieles einfacher Mit Windows Phone 7 hat Microsoft viel Ballast abgeworfen. So gibt es die verschachtelten Menüs früherer Windows-Mobile-Versionen nicht mehr. Auch für Entwickler wurde vieles einfacher: Die Applikationslogik wird nun einheitlich in .NET-Sprachen wie C# programmiert, die Benutzeroberfläche in der XML-basierten Sprache XAML gestaltet. Christian Bleske zeigt, wie das Zusammenspiel zwischen C# und XAML funktioniert und wie die beiden Ebenen ineinander greifen. Er führt kurz in die Entwicklungswerkzeuge Windows Phone Developer Tools ein und zeigt, wie Sie schnell überzeugende Bedieneroberflächen für Ihre Apps programmieren. • Projekte anlegen, kompilieren und debuggen • Der Aufbau einer App • Konzept und Umsetzung der Beispiel-App • Layout- und Oberflächentypen • Die Steuerelemente • Dateien laden und speichern • Positionsbestimmung mit Geodaten • Fotos in die App einbinden • Die Lokalisierung der App • Push Notifications • Die App testen • Veröffentlichung der App im Windows Marketplace Von der App-Idee bis zum Marketplace Dieses Buch zeigt, wie Sie eine App für Windows Phone 7 von der ersten Idee bis zum Einstellen in den Marketplace realisieren. Christian Bleske hat dafür eine App entworfen, mit der Sie Daten zu Bauwerken aufnehmen und verwalten können – komplett mit Fotos und Geo-Informationen. Der Autor skizziert, wie Sie die App konzipieren und das Projekt in der Entwicklungsumgebung anlegen. Schritt für Schritt erläutert er Ihnen die einzelnen Funktionen von der Oberflächengestaltung über die Datenspeicherung bis hin zum Einbinden von Bild- und Positionsdaten. Zuletzt zeigt er Ihnen, wie Sie die Anwendung testen und hilft Ihnen, den Zertifizierungsprozess beim Einstellen in den Marketplace zu bestehen. Geld verdienen mit Windows Phone-Apps Apps zu programmieren macht Spaß – und es kann sich lohnen! Wenn Sie mit selbstentwickelten Apps für Windows Phone 7 Geld verdienen wollen, dann müssen Sie sich bei Microsoft registrieren und brauchen eine US-amerikanische Steuernummer. Klingt kompliziert, ist es aber nicht. Christian Bleske ist diesen Weg für Sie gegangen und zeigt, wie Sie auf Anhieb alles richtig machen. Über den Autor: Christian Bleske ist Autor, Trainer und Entwickler. Sein Arbeitsschwerpunkt liegt auf MicrosoftTechnologien. Seine Fachaufsätze erscheinen in vielen namhaften Entwicklerzeitschriften. Er lebt in Witten im Ruhrgebiet. Auf www.buch.cd Der komplette Quellcode der im Buch beschriebenen Beispiel-Applikation 30,– EUR [D] ISBN 978-3-645-60109-2 Besuchen Sie unsere Website www.franzis.de Windows Phone 7-Apps entwickeln Programmierung – Tools – Funktionen > Programmieren Sie für das neue Smartphone-Betriebssystem von Microsoft! > So gestalten Sie griffige Benutzeroberflächen > Das Zusammenspiel von C# und XAML verstehen > So machen Sie Ihre App fit für den Windows Phone-Marketplace Bleske Windows Phone 7-Apps entwickeln Windows Phone 7-Apps • Das .NET Compact Framework Programmierung Tools Funktionen Vorwort von Dr. Frank Prengel, Technical Evangelist für Windows Phone bei Microsoft 5 Geleitwort Sie sind Entwickler und möchten (oder müssen) Ihre erste eigene »App« für Windows Phone 7 entwickeln? Sie suchen nun jemanden, der Sie bei den ersten Schritten an die Hand nimmt und Ihnen ganz pragmatisch das »Laufen« beibringt? Dann ist dieses Buch genau richtig für Sie. Windows Phone 7 hat seit dem Start im Herbst 2010 in der Entwicklergemeinde einen riesigen Anklang gefunden – weit über eine Million Downloads der Windows Phone Developer Tools und Tausende verfügbarer Apps nach kurzer Zeit sprechen hier eine deutliche Sprache. Willkommen an Bord – hier erfahren Sie, wie auch Sie erfolgreich dabei sein können. An Hand einer Beispielanwendung führt Sie der Autor durch den gesamten Entwicklungszyklus einer modernen mobilen Anwendung für Microsofts neue Plattform Windows Phone 7 – von der Installation der kostenlosen Entwicklungswerkzeuge bis hin zur Veröffentlichung im Windows Phone Marketplace. Dank einer Kurzeinführung in die Konzepte der Programmiersprache C# und in die Microsoft-Tools Visual Studio 2010 und Expression Blend, welche für Entwicklung und UI-Design von Windows Phone-Apps eingesetzt werden, finden selbst Einsteiger oder Umsteiger von anderen Plattformen den schnellen Zugang zur praxisorientierten Herangehensweise, in der danach die typischen Entwicklungsschritte beschrieben werden: Anwendungsarchitektur, Oberflächenentwurf, Datenspeicherung, Einbindung von Kamera- und ortsbezogenen Daten, Debugging und Testen. Neben weiteren Themen wie der Nutzung von Gerätesensoren und der Sprachanpassung (für internationale Märkte) wird sogar die Verwendung von Push Notifications, einem speziellen Konzept unter Windows Phone 7, mittels eines cloud-basierten Dienstes auf Windows Azure diskutiert. Abgerundet wird das Ganze durch eine ausführliche Beschreibung des Registrierungs- und Publikationsprozesses in Microsofts App Hub (angereichert durch die persönlichen Erfahrungen des Autors), an dessen Ende dann die Verfügbarkeit der App für die Nutzer im Windows Phone Marketplace steht. Sie sehen schon: dieses Buch ist kein Tausend-Seiten-Wälzer, der sämtliche Windows Phone-Aspekte erschöpfend dokumentiert. Es ist vielmehr eine Anleitung aus der Praxis für die Praxis. Möge es Ihnen helfen, Ihre Ideen schnell und kreativ umzusetzen und Stolperfallen und Umwege auf dem Weg zur Veröffentlichung Ihrer App(s) zu vermeiden. Viel Erfolg! Frank Prengel Technical Evangelist Windows Phone, Microsoft Deutschland http://dr-mobile.net 7 Vorwort Liebe Leserinnen und Leser, Apps, Apps und nochmals Apps. Apple sei Dank – niemand spricht mehr von Anwendungen oder gar Applikationen! Jeder, der ein Smartphone hat, will sie haben! Aber warum sind diese Mini-Anwendungen so faszinierend? Einfach deshalb, weil man sie (in aller Regel) bedienen kann, ohne eine meterdicke Anleitung zu lesen. Das geht, weil es sich um Anwendungen handelt, die speziell für die Lösung einer (kleinen) Aufgabe konzipiert wurden. Außerdem sind sie durch das mobile Telefon überall verfügbar. Was aber macht Apps so interessant für Entwickler? Sicher, man kann damit auch Geld verdienen, wenn sich die selbst geschriebene App gut verkauft. Aber das allein erklärt nicht, warum sich Tausende von Entwicklern auf dieses Thema stürzen. Da muss also noch etwas anderes sein. Jahrelang wurde uns Entwicklern eingetrichtert, dass man Software nur in großen Teams unter Verwendung eines Fünfjahresplans qualitativ hochwertig entwickeln könne. Vorbei war somit die Zeit, in der ein Mann oder eine Frau eine Anwendung allein erstellte. Mit den Apps kommt diese Möglichkeit wieder zurück! Sicher, die eine oder andere App wird im Team entwickelt. Aber der größere Teil wird wohl wieder von Einmannteams realisiert werden können. Seit Oktober 2010 kann man nun auch für Microsofts neuestes Smartphone-OS Windows Phone Apps programmieren. Dieses Buch zeigt Ihnen, wie es geht. Im Gegensatz zu einer App ist das Schreiben eines Buches Teamarbeit. Sicher, zuerst ist da der Autor, der allein in einer dunklen Kammer das Manuskript erstellt. Aber damit aus diesem Manuskript auch ein Buch wird, bedarf es noch einer ganzen Reihe von Personen, die direkt oder indirekt mit der Entstehung des Buches zu tun haben. Bei diesen Menschen möchte ich mich bedanken. Zuerst wäre da natürlich Franz Graser, der Lektor und Programmleiter Professional Series beim Franzis Verlag. Herzlichen Dank! Ohne ihn wäre dieses Buch gar nicht erst entstanden, da er den Anstoß gegeben hat. Außerdem hat er das Buch in mühevoller Arbeit korrigieren müssen. Mein Dank gilt auch den vielen anderen Mitarbeiterinnen und Mitarbeitern des Franzis Verlags, die ich nicht kenne. Außerdem geht mein Dank an die Firma HTC, die kurzfristig, im tiefsten Winter, ein Trophy 7 als Testgerät zur Verfügung stellte. Ferner möchte ich mich auch bei Barbara Steiger, der Microsoft Pressereferentin, für ihre Unterstützung bedanken. Zuletzt sind da noch meine Frau Sanela und meine beiden Söhne Benjamin und Florian. Sie sind die »Leidtragenden«, wenn ich schreibe und für nichts anderes Zeit finde. Vielen Dank! Christian Bleske, im März 2011 9 Inhaltsverzeichnis 1 Einleitung .................................................................................................... 17 1.1 Windows Phone 7 – das etwas andere Handy-OS............................. 17 1.2 Für wen ist dieses Buch gedacht?..................................................... 18 1.3 Die Beispielanwendung ................................................................... 18 1.4 Was zum Start benötigt wird … ......................................................... 20 1.4.1 Windows Vista oder Windows 7 ....................................................... 20 1.4.2 Was ist mit Windows XP?.................................................................. 20 1.4.3 Welches Windows Phone 7 zur Entwicklung? ................................... 21 1.4.4 Die Windows Phone Developer Tools ............................................... 21 1.4.5 Registrierung bei Microsoft .............................................................. 26 1.4.6 Das Microsoft Developer Network .................................................... 26 Teil 1 – Der Einstieg ..................................................................................... 29 2 Windows Phone 7 im Detail.......................................................................... 31 2.1 Basics.............................................................................................. 31 2.1.1 Oberfläche & Apps ........................................................................... 32 2.1.2 Windows Phone 7 – Bestandteile..................................................... 35 2.2 Windows Embedded ........................................................................ 36 2.3 .NET Compact Framework................................................................. 36 2.4 Silverlight ........................................................................................ 37 2.5 Das XNA-Framework ......................................................................... 37 2.5.1 XNA-Bibliotheken für die Denkmal-App ............................................ 38 2.6 Windows Mobile .............................................................................. 38 3 C# im Überblick ........................................................................................... 41 3.1 Variablen, Datentypen und Deklaration............................................ 41 3.1.1 Simple Datentypen .......................................................................... 42 3.1.2 Operatoren ...................................................................................... 44 3.2 Kontrollstrukturen ............................................................................ 46 3.2.1 Fallunterscheidung .......................................................................... 46 3.2.2 Mehrfachauswahl ............................................................................ 46 3.2.3 Schleifen.......................................................................................... 47 3.2.4 Arrays .............................................................................................. 49 3.2.5 Strukturen........................................................................................ 49 10 Inhaltsverzeichnis 3.2.6 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.4 3.5 3.6 3.6.1 3.6.2 Typumwandlung .............................................................................. 51 Klassen............................................................................................ 51 Partielle Klassen .............................................................................. 55 Eigenschaften .................................................................................. 55 Methoden ........................................................................................ 58 Ereignisse ........................................................................................ 62 Konstruktoren und Destruktoren ...................................................... 64 Schnittstellen .................................................................................. 64 Namespaces .................................................................................... 65 Klassendesign der Denkmal-App...................................................... 65 Anlage des Projekts ......................................................................... 67 Hinzufügen der Klasse ..................................................................... 67 4 XAML im Blick .............................................................................................. 73 4.1 Steuerelemente in XAML .................................................................. 73 4.2 Page ................................................................................................ 74 4.3 Application ...................................................................................... 75 5 Entwicklungswerkzeuge .............................................................................. 77 5.1 Microsoft Visual Studio 2010 ........................................................... 77 5.1.1 Visual Studio Express for Windows Phone........................................ 78 5.1.2 Die IDE ............................................................................................. 78 5.1.3 Projektvorlagen für Windows Phone ................................................. 81 5.1.4 Solution Explorer ............................................................................. 83 5.1.5 Properties-Fenster............................................................................ 84 5.1.6 Der Page-Designer............................................................................ 85 5.1.7 XAML-Editor ..................................................................................... 86 5.1.8 Toolbox............................................................................................ 88 5.1.9 C#-Quellcode-Editor......................................................................... 89 5.1.10 Die Eigenschaften eines Projekts ..................................................... 92 5.2 Expression Blend for Windows Phone .............................................. 94 5.2.1 Überblick ......................................................................................... 95 5.2.2 Neues Projekt erstellen .................................................................... 97 5.2.3 Projects-Panel.................................................................................. 98 5.2.4 Assets-Panel .................................................................................... 99 5.2.5 States-Panel .................................................................................. 101 5.2.6 Device-Panel .................................................................................. 102 5.2.7 Objects and Timeline-Panel............................................................ 102 5.2.8 Das Tools-Panel ............................................................................. 106 5.2.9 Properties-Panel ............................................................................ 108 5.2.10 Resources-Panel ............................................................................ 109 5.2.11 Data-Panel ..................................................................................... 110 Inhaltsverzeichnis 5.2.12 5.2.13 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 6 11 Effektives Arbeiten mit Expression Blend ....................................... 110 Action, Bild und Sound .................................................................. 112 Windows Phone Developer Tools ................................................... 114 Application Deployment................................................................. 114 Der Windows Phone Emulator ........................................................ 115 Windows Phone Developer Registration ......................................... 115 Windows Phone Developer Tools – October 2010 Update .............. 115 Das January-Update 2011 .............................................................. 116 Debugging ................................................................................................. 117 6.1 Breakpoints ................................................................................... 117 6.1.1 Breakpoints und schrittweise Ausführung der App ......................... 117 6.2 Fenster und Debug-Optionen ......................................................... 120 6.3 Remote Debugging auf dem Gerät .................................................. 122 Teil 2 – Apps entwickeln ............................................................................ 125 7 Entwicklung einer App ............................................................................... 127 7.1 Aufbau einer App ........................................................................... 127 7.1.1 Der Properties-Ordner .................................................................... 128 7.1.2 Der Ordner References ................................................................... 129 7.1.3 Die Ordner bin und obj................................................................... 130 7.1.4 Lebenszyklus einer App ................................................................. 131 7.1.5 Die Klasse Page ............................................................................. 134 7.1.6 Die Application Bar ........................................................................ 137 7.1.7 Pages und Navigation .................................................................... 142 7.1.8 Daten als Parameter übergeben ..................................................... 143 7.1.9 Daten übergeben via Application-Objekt ........................................ 145 7.1.10 Page-Layout ................................................................................... 148 7.1.11 Portrait- & Landscape-Ansicht ........................................................ 149 7.1.12 Automatische Umschaltung (Portrait / Landscape)......................... 150 7.1.13 Pivot-Ansicht.................................................................................. 153 7.1.14 Panorama-Ansicht.......................................................................... 154 7.1.15 Das Grid-Steuerelement ................................................................. 155 7.1.16 Das StackPanel-Steuerelement ...................................................... 158 7.1.17 Steuerelemente positionieren ........................................................ 158 7.2 MessageBox .................................................................................. 163 7.3 LinearGradientBrush ...................................................................... 165 7.4 Touch-Ereignisse verarbeiten ......................................................... 166 7.5 Pages und Layout der Denkmal-App............................................... 167 12 Inhaltsverzeichnis 8 Die Steuerelemente im Detail..................................................................... 171 8.1 Die Steuerelemente von Silverlight ................................................ 171 8.1.1 Border............................................................................................ 171 8.1.2 Button............................................................................................ 172 8.1.3 Canvas........................................................................................... 173 8.1.4 CheckBox....................................................................................... 174 8.1.5 Ellipse............................................................................................ 175 8.1.6 Grid................................................................................................ 176 8.1.7 HyperlinkButton............................................................................. 179 8.1.8 Image............................................................................................. 179 8.1.9 ListBox........................................................................................... 181 8.1.10 Map ............................................................................................... 182 8.1.11 MediaElement................................................................................ 188 8.1.12 PasswordBox ................................................................................. 190 8.1.13 ProgressBar ................................................................................... 192 8.1.14 RadioButton................................................................................... 193 8.1.15 Rectangle....................................................................................... 194 8.1.16 ScrollViewer................................................................................... 196 8.1.17 Slider ............................................................................................. 196 8.1.18 StackPanel..................................................................................... 197 8.1.19 TextBlock ....................................................................................... 198 8.1.20 TextBox.......................................................................................... 200 8.1.21 WebBrowser................................................................................... 202 8.2 Weiterentwicklung der Denkmal-App ............................................. 204 9 Dateizugriff................................................................................................ 213 9.1 Keine Datenbank – was nun? ......................................................... 213 9.2 Isolierte Speicherung ..................................................................... 214 9.2.1 Die Klasse IsolatedStorageSettings................................................ 215 9.2.2 Die Klasse IsolatedStorageFile ....................................................... 217 9.3 Die Klasse XmlSerializer................................................................. 220 9.4 DataBinding................................................................................... 223 9.5 Lokale Speicherung der Denkmal-App: Daten und DataBinding................................................................................... 225 9.5.1 Die Klasse DataStorage .................................................................. 225 9.5.2 Erweiterung der Klasse MainPage................................................... 229 9.5.3 Erweiterung der Klassen OptionPage, GebaeudePage und AdressePage .................................................................................. 233 Inhaltsverzeichnis 13 Teil 3 – Dienste und Services ..................................................................... 237 10 Positionsbestimmung mit Geodaten .......................................................... 239 10.1 Windows Phone 7 Location Services .............................................. 239 10.2 Anpassungen für die Denkmal-App ................................................ 241 11 Die Vibrationsfunktion nutzen ................................................................... 245 11.1 Die Klasse VibrateController........................................................... 245 12 Kamera und Bild ........................................................................................ 249 12.1 Die Klasse CameraCaptureTask ...................................................... 249 12.2 Die Klasse PhotoChooserTask ........................................................ 250 12.3 Anpassungen für die Denkmal-App ................................................ 252 13 Microsoft.Phone.Task ................................................................................ 255 13.1 Die Klasse EmailComposeTask....................................................... 255 13.2 Marketplace-Tasks......................................................................... 256 13.2.1 MarketplaceHubTask ..................................................................... 256 13.2.2 MarketplaceSearchTask ................................................................. 257 13.2.3 MarketplaceDetailTask................................................................... 257 13.2.4 MarketplaceReviewTask................................................................. 257 13.3 PhoneCallTask ............................................................................... 258 13.4 SearchTask .................................................................................... 258 13.5 SmsComposeTask.......................................................................... 259 13.6 WebBrowserTask ........................................................................... 259 14 Die Klassen Accelerometer und Microphone .............................................. 261 14.1 Der Accelerometer.......................................................................... 261 14.2 Das Mikrofon ................................................................................. 263 15 Lokalisierung............................................................................................. 265 15.1 Ressourcen (Texte) auslagern ........................................................ 265 15.1.1 Ressource für Strings ..................................................................... 266 15.1.2 Ressourcenklasse .......................................................................... 268 15.2 Sprachdateien hinzufügen ............................................................. 270 15.3 Globalisierung ............................................................................... 272 15.4 Anpassungen für die Denkmal-App ................................................ 273 15.4.1 Ressourcen (Texte) im C#-Quellcode .............................................. 275 14 Inhaltsverzeichnis 16 Push Notifications ..................................................................................... 277 16.1 Push-Notification-Typen................................................................. 277 16.2 Infrastruktur benötigt – die Windows Azure Cloud Services ......................................................................................... 279 16.3 Das Windows Azure SDK ................................................................ 279 16.4 Azure-Service erstellen................................................................... 281 16.4.1 Testlauf des Services ..................................................................... 286 16.5 Die Datenquelle (WPF-Client) ......................................................... 287 16.6 Push Notifications empfangen und verarbeiten.............................. 289 16.6.1 Probelauf ....................................................................................... 291 Teil 4 – Registrierung, Test und Deployment .............................................. 293 17 Registrierung............................................................................................. 295 17.1 Registrierung als Entwickler im App Hub ........................................ 295 17.1.1 Überprüfung durch GeoTrust .......................................................... 299 17.1.2 Bankverbindung und Steuernummer.............................................. 302 17.1.3 Status der Anmeldung.................................................................... 303 17.2 Installation der Zune-Software und Einrichtung eines WP-Handys .................................................................................... 304 17.3 Registrierung des Geräts mit dem Windows Phone Developer Registration Tool ........................................................... 306 17.4 IRS und die Formulare W-7 und W-8-BEN........................................ 308 17.4.1 IRS Form W-7.................................................................................. 310 18 Testen der App........................................................................................... 315 18.1 Unit-Tests ...................................................................................... 315 18.2 NUnit for Windows Phone............................................................... 316 18.3 Erweiterung mit Assertions............................................................. 321 18.3.1 Vergleichstests .............................................................................. 321 18.3.2 Statustests .................................................................................... 322 18.3.3 Utility-Methoden ............................................................................ 323 18.4 Überwachung mit Debug & Trace ................................................... 323 18.5 Performance-Informationen ........................................................... 324 18.6 Verteilung testen mit App Deployment ........................................... 325 19 Die App im Marketplace veröffentlichen..................................................... 327 19.1 Vorbereitungen .............................................................................. 327 19.1.1 Capability Detection....................................................................... 327 19.1.2 Dokumentation und Grafiken zusammenstellen............................. 328 19.1.3 Anforderungen an die App ............................................................. 330 19.2 Zertifizierungsrichtlinien ................................................................ 331 Inhaltsverzeichnis 19.3 19.3.1 19.3.2 19.3.3 19.3.4 19.3.5 19.4 19.5 15 Einstellen der App.......................................................................... 334 Hochladen der App ........................................................................ 335 Dokumentation bereitstellen.......................................................... 336 Hochladen des App-Artworks ......................................................... 337 Festlegen des Preises..................................................................... 338 Freigabe zur Zertifizierung.............................................................. 339 Checkliste ...................................................................................... 342 App-Marketing ............................................................................... 343 20 Nachwort ................................................................................................... 345 Stichwortverzeichnis ................................................................................. 347 17 1 Einleitung Sie möchten Apps für Windows Phone 7 entwickeln? Und das möglichst schnell und ohne großen Lernaufwand? Dann sind Sie hier richtig. An dieser Stelle möchte ich Ihnen keine Anleitung geben, wie dieses Buch zu lesen ist. Lesen Sie es doch einfach. Die einzige Bitte, die ich habe, ist: Beginnen Sie (sofern Sie Ihre Neugierde bändigen können) mit dem ersten Kapitel (was Sie durch das Lesen dieser Einleitung ja bereits tun) und hören Sie erst beim letzten Kapitel auf. 1.1 Windows Phone 7 – das etwas andere Handy-OS Wenn Sie bereits ein iPhone oder ein Android-Smartphone ausprobiert haben, dann wird Ihnen sicherlich aufgefallen sein, dass die Benutzerführung von Windows Phone anders ist. Angenehm anders. Endlich einmal ein Betriebssystem von Microsoft, das sich intuitiv bedienen lässt. Das ist doch mal eine gute Nachricht, oder? Wie hat Microsoft diese bessere Bedienbarkeit erreicht? Das ist die schlechte Nachricht: Durch selektives Entfernen bestimmter, in den Augen von Microsoft nicht benötigter Funktionen. Sie werden an der einen oder anderen Stelle Funktionen schmerzlich vermissen. Leider gilt diese Aussage nicht nur für Anwender, sondern auch für Entwickler! Ein Stichwort zu dieser Thematik lautet »Datenbank«. Dazu aber später mehr. Aber grundsätzlich ist Windows Phone 7 nicht nur für den Anwender einfacher. Auch wir Entwickler profitieren von dem neuen Ökosystem um Windows Phone 7 herum – durch neue Entwicklungswerkzeuge, mit denen es sich fast so einfach und angenehm arbeiten lässt wie mit Windows Phone 7 selbst. Gerade wir Entwickler werden ja, was die Usability angeht, nicht besonders verwöhnt. Mit den Windows Phone Developer Tools ändert sich hier aber etwas. Diese Werkzeuge schreien geradezu danach, mit ihnen Software zu entwickeln. Microsoft hat erkannt, dass ein Betriebssystem ohne Software bald vom Markt verschwindet. Also haben die Redmonder es für Entwickler so einfach wie möglich gemacht, neue Anwendungen – pardon, man sagt ja jetzt Apps – dafür zu entwickeln. Wenn Sie bereits mit Visual Studio programmiert haben – vielleicht haben Sie ja Anwendungen für das »alte« Windows Mobile entwickelt –, dann kann ich Ihnen versprechen, dass es mit den Windows Phone Developer Tools noch einfacher geht. Gerade was die Anbindung des Emulators an die Entwicklungsumgebung Visual Studio angeht, hat sich doch einiges getan. Wenn Sie vielleicht schon Apps für das iPhone geschrieben haben, so werden Sie feststellen, dass die Entwicklung für Windows Phone 7 im direkten Vergleich simpler ist, Stichwort »Speicherverwaltung«. Unter Windows Phone müssen Sie sich damit nicht beschäftigen! Denn der Garbage Collector, also die 18 Kapitel 1: Einleitung automatische Speicherbereinigung, wurde vom großen Bruder, dem .NET-Framework, übernommen. Was macht das Entwickeln von Apps für Entwickler eigentlich so interessant? Die Antwort lautet: Das geschlossene System. Es gibt keine Möglichkeit, eine Anwendung einfach zu kopieren. Alles läuft über Microsofts App Hub, das Gegenstück zum Apple App Store. Nur über den Shop können Anwendungen auf ein Windows Phone übertragen werden. So kann man sicher sein, dass die Investition in die Arbeit sich auszahlt – allerdings nur, sofern sich die App auch verkauft. 1.2 Für wen ist dieses Buch gedacht? Dieses Buch richtet sich an Leser, die über gute bis sehr gute Kenntnisse in der Programmierung mit mindestens einer Sprache wie beispielsweise C, Pascal (Delphi) oder auch Visual Basic verfügen. Sollten Sie mit Begriffen wie Klasse, Objekt, Instanz, Eigenschaft oder Methode noch nicht viel anfangen können, dann lege ich Ihnen Kapitel 3 ans Herz. Dort wird etwas Basiswissen zu diesem Thema vermittelt. Einsteiger in die Programmierung sollten aber noch zusätzliches Material heranziehen, um sich zurechtzufinden. Außerdem gehe ich davon aus, dass Ihnen Grundbegriffe in Bezug auf grafische Benutzeroberflächen bekannt sind. Das bedeutet: Sie sollten wissen, was ein Button, eine TextBox oder eine ComboBox sind. Zwar geht Kapitel 8 intensiv auf diese Steuerelemente (Controls) ein, aber an der einen oder anderen Stelle werden diese Begriffe schon vorher verwendet, ohne sie explizit zu erläutern. 1.3 Die Beispielanwendung Jedes Buch sollte einen »roten Faden« enthalten, der die einzelnen Teile zusammenbindet. In diesem Fall ist das eine App für Windows Phone 7, die sukzessiv entwickelt wird. Die einzelnen Kapitel schließen, soweit es sinnvoll ist, immer mit einer Erweiterung dieser Anwendung ab. Das in einem Kapitel vermittelte Wissen kann somit gleich sinnvoll an einem Beispiel aus der realen Welt getestet werden. Trotzdem finden Sie in den Kapiteln auch kurze Quick & Dirty-Beispiele, die Sie direkt ausprobieren können und sollen. Der Bogen zieht sich von der Planung der App bis zum Einstellen der Anwendung in den App Hub von Microsoft. Es werden in den einzelnen Kapiteln nur die Punkte erläutert, die für das Entwickeln der Anwendung unmittelbar oder mittelbar interessant sind. Das bedeutet aber auch, dass einige Bereiche der Programmierung von Windows Phone 7 nicht angesprochen werden. Davon ist unter anderem das XNA-Framework betroffen, das sich hauptsächlich an Entwickler richtet, die ein Spiel für das Smartphone schreiben möchten. Betrachten Sie das Buch also bitte nicht als komplette Referenz zur Windows Phone-Entwicklung, sondern mehr als praxisorientierte Anleitung. An dieser Stelle soll kurz die Beispielanwendung vorgestellt werden. Die Denkmal-App, so der Name der Anwendung, richtet sich an Anwender, die für die Instandhaltung von 1.3 Die Beispielanwendung 19 historischen Bauwerken zuständig sind. Solche Leute gibt es tatsächlich. Man findet sie in der Regel in Kommunen, die ja ein Auge auf diese Gebäude haben müssen. Bild 1.1: Die Beispiel-App Denkmal Der Sourcecode der Anwendung ist unter folgender URL verfügbar: Lesezeichen www.buch.cd Download-Adresse für den Quellcode der Beispielanwendung Sie sollten ihn auch herunterladen, da dies das Nachvollziehen des Projekts doch sehr vereinfacht. Bewusst ist das Beispielprojekt nicht allzu komplex gehalten, damit Ihnen die Einarbeitung leichter fällt. Bei einigen Beispielen von Microsoft beschleicht einen nämlich manchmal das Gefühl, dass sich hier jemand ausgetobt hat. 20 1.4 Kapitel 1: Einleitung Was zum Start benötigt wird … Neben Geduld benötigen Sie natürlich auch etwas Hard- und Software. Der PC, der zur Entwicklung verwendet wird, sollte über eine Dual-Core-CPU mit mindestens 2 Gigahertz Taktfrequenz verfügen. 2 Gigabyte Hauptspeicher sind unter Windows Vista oder Windows 7 zu empfehlen. Gehen Sie davon aus, dass die Installation aller Entwicklungswerkzeuge auf der Festplatte einen Umfang von ca. 3 Gigabyte in Anspruch nimmt. Außerdem benötigen Sie zwingend eine Grafikkarte, die DirectX 10 unterstützt. Sie ist deshalb notwendig, weil der Windows Phone 7-Emulator zwingend eine Grafikkarte voraussetzt, für die es einen WDDM-1.1-Treiber gibt. Dies ist auch der Grund, weshalb Windows XP offiziell zur Entwicklung von Apps nicht geeignet ist. Auch ein Gerät mit Windows Phone 7 wäre natürlich nicht schlecht, um die Applikation zu testen, obwohl die ersten Schritte auch ohne Smartphone zu bewältigen sind. Spätestens jedoch wenn die Anwendung getestet und verteilt werden soll, kommen Sie nicht um diese Investition herum. 1.4.1 Windows Vista oder Windows 7 Ob Sie Windows Vista oder Windows 7 als Plattform für die Entwicklung nutzen, spielt eigentlich keine Rolle. Wenn Sie Vista einsetzen, beachten Sie bitte nur, dass Windows Vista mit dem Service Pack 2 ausgerüstet ist. Natürlich werden auch die 64-Bit-Varianten beider Betriebssysteme unterstützt. 1.4.2 Was ist mit Windows XP? Windows XP wird offiziell nicht unterstützt. Sobald Sie versuchen, die Windows Phone Developer Tools unter Windows XP zu installieren, werden Sie während des Setup-Vorgangs darauf hingewiesen. Muss man jetzt direkt zu Windows Vista oder Windows 7 wechseln? Nicht unbedingt! Es gibt eine Möglichkeit – mit Einschränkungen –, die Windows Phone Developer Tools auch unter Windows XP zu installieren. Hierzu müssen Sie zuerst das komplette ISO-Image der Installationsdateien herunterladen und anschließend in einem Verzeichnis entpacken. Alternativ können Sie auch das Web-Setup-Paket herunterladen und mit dem Befehl vm_web.exe /x entpacken. Egal für welche Variante Sie sich entschieden haben, im nächsten Schritt müssen Sie die Textdatei baseline.dat in einem Editor (z.B. Notepad) öffnen. Suchen Sie im Editor nun nach dem Abschnitt mit der Kennzeichnung [gencomp7788]. Haben Sie den entsprechenden Abschnitt gefunden, so suchen Sie nun nach dem Eintrag InstallOnLHS und ändern Sie diesen Wert von 1 auf 0. Anschließend muss noch ein Wert angepasst werden. Es handelt sich um InstallOnWinXP. Auch der Wert dieses Eintrags muss von 1 auf 0 angepasst werden. Zuletzt muss die Datei baseline.dat gespeichert werden. Anschließend kann das Setup »normal« aufgerufen werden, und nun gelingt die Installation auch unter Windows XP. 1.4 Was zum Start benötigt wird … 21 Der Windows Phone 7-Emulator läuft trotz dieser Änderung natürlich nicht. Er benötigt nach wie vor eine DirectX 10-Installation. Aber die Tools lassen sich so zumindest unter Windows XP benutzen. Microsoft leistet allerdings keinen Support für die Lösung mit Windows XP. Lesezeichen http://bit.ly/8YxX8H http://www.microsoft.com/downloads/en/details.aspx?FamilyID=04704acf-a63a-4f97952c-8b51b34b00ce Download aller WPDT-Versionen (Windows Phone Developer Tools) 1.4.3 Welches Windows Phone 7 zur Entwicklung? Muss das Testhandy mit Windows Phone von einem bestimmten Hersteller stammen? Die eindeutige Antwort ist nein! Microsoft hat die Vorgaben, was die Hardwarevoraussetzungen eines Smartphones mit Windows Phone 7 betrifft, sehr eng gesetzt. Sie können also davon ausgehen, dass jedes Telefon z. B. über eine Kamera und einen GPSSensor verfügt. Es ist lediglich nicht festgelegt, ob ein Gerät über eine echte Tastatur verfügt oder die Tastatur softwaremäßig zur Verfügung stellt. Das bedeutet: Sie können die Auswahl des Geräts Ihrem persönlichen Geschmack überlassen. 1.4.4 Die Windows Phone Developer Tools Im vorherigen Abschnitt wurden die Windows Phone Developer Tools (WPDT) schon kurz angeschnitten. Alles, was Sie zur Entwicklung einer App für Windows Phone 7 benötigen, steckt in den Windows Phone Developer Tools. Das Beste daran ist: Die Entwicklungsumgebung kostet nicht einen Euro. Aber auch wenn Sie Microsofts Entwicklungsumgebung Visual Studio 2010 bereits installiert haben, beispielsweise die Professional-Variante, können Sie die WPDT bedenkenlos installieren. Die Tools zur App-Entwicklung integrieren sich dann in die vorhandene Version. Installation der WPDT Bevor Sie die Tools nutzen können, müssen sie von der entsprechenden Microsoft-Webseite heruntergeladen werden. Es gibt zwei Wege zur Installation. Der erste führt über den Download eines sogenannten Web-Installers. Wählen Sie diesen Weg, so wird zuerst nur eine knapp 3 Megabyte große Setup-Datei aus dem Internet heruntergeladen. Diese führen Sie aus. Anschließend prüft der Installer, welche weiteren Komponenten für die Installation benötigt werden. Sie werden automatisch heruntergeladen, und die Installation startet. Dieser Weg empfiehlt sich unter zwei Gesichtspunkten. Der erste ist, dass bereits einige .NET-Komponenten auf dem Rechner installiert sind, beispielsweise wenn eine Installation von Visual Studio 2010 Express bereits vorhanden ist. Der notwendige Zeitraum zur Installation verkürzt sich so zum Teil drastisch. Der Nachteil an dieser Variante ist: Auf jedem Computer, auf dem die IDE (Integrated Development 22 Kapitel 1: Einleitung Environment = integrierte Entwicklungsumgebung) installiert werden soll, muss der Download erneut gestartet werden. Wenn Sie also vorhaben, die WPDT auf mehr als nur einem Computer zu installieren, dann empfiehlt es sich, das komplette ISO-Image herunterzuladen. Welche Sprachversion? Eigentlich spielt es keine Rolle mehr, ob Sie die deutsche Variante oder eine andere Sprache bevorzugen. Die WPDT gibt es neben Englisch zurzeit auch in Deutsch, Französisch, Italienisch oder Spanisch. Ein Vorteil der englischen Version ist, dass Updates oder Patches etwas früher zur Verfügung stehen als für die lokalisierten Versionen. Deswegen wird hier die englische Sprachversion beschrieben. Nach dem Aufruf der Setup-Datei beginnt die Installation. Es wird zuerst der obligatorische Dialog zur Akzeptierung der Lizenzbedingungen angezeigt. Im nächsten Schritt kann man sich entscheiden, ob die Entwicklungsumgebung direkt installiert oder das Setup vorher noch konfiguriert werden soll. Die Möglichkeiten zur Anpassung sind allerdings stark beschränkt. Man kann sich lediglich den Ordner aussuchen, in dem die WPDT installiert werden. Bild 1.2: Installation der WPDT Je nach Umfang der zu installierenden Komponenten kann die Installation schon einige Minuten in Anspruch nehmen. Nach der Installation finden Sie einige neue Punkte im Startmenü von Windows. Neben Visual Studio Express 2010 for Windows Phone gibt es noch Einträge für das XNA Game Studio 4.0, Microsoft Expression Blend 4 sowie die Developer Tools mit dem Emulator. 1.4 Was zum Start benötigt wird … 23 Nach einigen Starts von Visual Studio Express 2010 werden Sie aufgefordert, einen Registrierungscode einzugeben. Sie erhalten ihn, wenn die Schaltfläche Obtain a registration key online im Dialog betätigt wird. Bild 1.3: Dialog zur Registrierung von Visual Studio Hinweis zu Visual Studio 2010 Professional Sollte bereits Visual Studio 2010 Professional auf dem Computer installiert sein, so wird Visual Studio Express 2010 for Windows Phone nicht separat installiert, sondern in die vorhandene Visual-Studio-Installation integriert, allerdings nur dann, wenn beide IDEs dieselbe Sprache unterstützen. In Visual Studio Professional findet man anschließend im Projektvorlagen-Dialog einen neuen Eintrag Silverlight for Windows Phone. Bild 1.4: Der erweiterte ProjektvorlagenDialog von VS 2010 Professional 24 Kapitel 1: Einleitung Tipp: Den folgenden Abschnitt können Sie überspringen, wenn Sie sich bereits mit Visual Studio auskennen. Schnellstart mit HalloWelt Nach der Installation möchte man sich zuerst einmal in der Entwicklungsumgebung umsehen. Dieser Tatsache soll an dieser Stelle mit einem Quick & Dirty-Projekt Rechnung getragen werden. In der weiteren Beschreibung wird davon ausgegangen, dass Visual Studio 2010 in der Express Phone Edition verwendet wird. Deshalb wird Visual Studio 2010 Professional nicht separat beschrieben. Die Entwicklungsumgebung ist unter dem Punkt Microsoft Visual Studio 2010 Express im Startmenü zu finden. Nach dem Start der IDE kann ein neues Projekt entweder über das File-Menü (Datei-Menü) oder aber über den entsprechenden Punkt auf der StartPage von Visual Studio erstellt werden: Bild 1.5: Neues Projekt in Visual Studio anlegen Nach einem Mausklick wird der Dialog (New Project / Neues Projekt) mit den zur Verfügung stehenden Projektvorlagen angezeigt. Hier muss jetzt der Eintrag Windows Phone Application (Windows Phone Anwendung) aus den vorhandenen Templates ausgewählt werden. Im unteren Bereich des Dialogs befindet sich ein Eingabefeld für den Projektnamen. Dort kann auch der Speicherort des Projekts festgelegt werden. Als Projektnamen geben Sie bitte HalloWelt ein. Anschließend muss die OK-Schaltfläche betätigt werden. Es dauert einen kleinen Moment, in dem Visual Studio aus der Projektvorlage das Anwendungsgerüst generiert. 1.4 Was zum Start benötigt wird … 25 Bild 1.6: Das geöffnete Projekt in Visual Studio In diesem Einführungsbeispiel werde ich nur die Punkte von Visual Studio erläutern, die zur Umsetzung notwendig sind. Alles andere folgt später. Sobald das Projekt in Visual Studio komplett geladen wurde, sehen Sie im linken Bereich die Toolbox mit den verfügbaren Steuerelementen. Schließen Sie diesen Bereich. Der Bereich für den PhoneDesigner wird nun größer angezeigt. Markieren Sie den Bereich im Phone-Designer, in dem in großen Buchstaben page name steht. Die Markierung wird durch vier Punkte an den Ecken und eine farbliche Änderung des Rahmens angezeigt. Im rechten unteren Bereich der Entwicklungsumgebung befindet sich das PropertiesFenster (Eigenschaften-Fenster). Hier werden die Eigenschaften eines Steuerelements zur Bearbeitung angezeigt. Suchen Sie in den vorhandenen Eigenschaften nun nach der Text-Eigenschaft. In der Eigenschaft steht noch der Default-String page name. Löschen Sie ihn und schreiben stattdessen die Zeichenkette Hallo Welt hinein. Bild 1.7: Der neu eingefügte String »Hallo Welt« im Designer 26 Kapitel 1: Einleitung Nach Abschluss der Eingabe mit Enter wird umgehend die Änderung auch im PhoneDesigner sichtbar, siehe Bild 1.7. Damit sind bereits alle Arbeiten für das HalloWeltBeispiel erledigt. Die Anwendung kann jetzt gestartet werden. Mit einem Mausklick auf oder alternativ mit Betätigung der Taste F5 wird die App kompiliert und automatisch im Emulator gestartet. 1.4.5 Registrierung bei Microsoft Eine App können Sie natürlich jederzeit im Emulator testen. Das ist allerdings nur die halbe Miete. Erst wenn sich die App auf einem »echten« Windows Phone befindet, kann man testen, ob sich die Anwendung wirklich so verhält wie gewünscht. Außerdem möchte man ja wahrscheinlich früher oder später Geld mit der App verdienen. In beiden Fällen müssen Sie sich im Microsoft App Hub anmelden. Der App Hub ist das Entwicklerportal für Windows Phone. Hier finden Sie Tools und Ressourcen zur Erstellung von Apps. Außerdem ist der App Hub das Tor zum Windows Phone Marketplace. Das ist für Windows Phone das Pendant zum App Store für das iPhone: eine Plattform, um die geschriebenen Applikationen an den Mann bzw. die Frau zu bringen. Den App Hub erreichen Sie über folgende Adresse: Lesezeichen http://create.msdn.com/en-US/ MSDN App Hub Sobald Sie sich bei Microsoft registriert haben, bekommen Sie eine Möglichkeit, die geschriebene Anwendung direkt auf ein registriertes Gerät zu laden. Die Registrierung kostet für ein Jahr 75 Euro. Sofern Sie Student sind, können Sie sich sogar kostenfrei anmelden. Was erhalten Sie außerdem, wenn Sie sich dort registrieren? • Sie können eine unbegrenzte Anzahl von Anwendungen in den Microsoft App Hub hochladen, sofern sie kostenpflichtig sind. • Sie können bis zu 100 kostenfreie Apps zum Testen einreichen. Jede weitere kostenfreie App schlägt mit 19,99 US-Dollar zu Buche. • Die Apps, die Sie hochladen, werden inhaltlich und codeseitig geprüft. Für die Registrierung benötigen Sie eine Windows-Live-ID. Neben dem Individual- und Studentenprogramm gibt es auch eine Möglichkeit, sich im Company-Programm zu registrieren. Das Company-Programm ist für Unternehmen gedacht, 1.4.6 Das Microsoft Developer Network Das Microsoft Developer Network, kurz MSDN, ist die Informationsressource für Programmierer, die mit Entwicklungswerkzeugen von Microsoft arbeiten. Natürlich gibt es eine Homepage innerhalb des MSDN, die speziell für das Thema Windows Phone 7 1.4 Was zum Start benötigt wird … 27 geschaffen wurde. Im Developer Center für Windows Phone finden Sie neben Tipps & Tricks und FAQs auch App-Beispiele und Foren, in denen Sie recherchieren und Fragen stellen können. Die Homepage erreichen Sie über folgende Adresse: Lesezeichen http://bit.ly/90hwKk Developer Center für Windows Phone 41 3 C# im Überblick In diesem Kapitel dreht sich alles um die Sprache C#. Neben Visual Basic ist sie zurzeit die einzige Möglichkeit, Anwendungen für Windows Phone zu programmieren. Hier wird gezeigt, wie man in C# Klassen erstellt und wie Eigenschaften, Methoden und Ereignisse mit C# realisiert werden. Dieses Kapitel soll nicht direkt als Einführung in die objektorientierte Programmierung mit C# dienen. Es richtet sich in erster Linie an Entwickler, die bereits mit einer objektorientierten Sprache wie Java gearbeitet haben, und soll ihnen einen Eindruck von der Arbeit mit C# vermitteln. Wenn Sie aber bisher zumindest prozedural programmiert haben, so finden Sie mit den Grundlagen zur Objektorientierung in diesem Kapitel einen Einstieg in die OOP. 3.1 Variablen, Datentypen und Deklaration Variablen können in C# (so wie auch in C oder C++) an einer beliebigen Stelle im Programm deklariert werden. Einzige Bedingung: Dies muss innerhalb einer Klasse oder Methode geschehen. class eineKlasse { public eineKlasse() { int zahl; } } Zuerst wird in C# der Datentyp der Variablen mit dem entsprechenden Schlüsselwort festgelegt, anschließend folgt der Name der Variablen. Die Zuweisung eines Wertes geschieht in C# wie folgt: zahl = 10; Zuerst wird in einer neuen Zeile die Variable bzw. deren Name geschrieben. Es folgen der Zuweisungsoperator – ein Gleichheitszeichen – und dann der Wert, z. B. eine Zahl, deren Wert die Variable speichern soll. Zuletzt folgt nach der Ziffer noch ein abschließendes Semikolon. C# ist case-sensitiv, es wird also zwischen Groß- und Kleinschreibung unterschieden. Ein Beispiel: int zahl = 5; int ZAHL = 10; 42 Kapitel 3: C# im Überblick Die Variablen zahl und ZAHL sind somit nicht (wie z. B. in Visual Basic oder Pascal) identisch! Im Beispiel wurden also zwei Variablen deklariert und mit unterschiedlichen Werten initialisiert. 3.1.1 Simple Datentypen Im vorherigen Abschnitt wurde die Deklaration und Initialisierung von Variablen beschrieben. Eigentlich gibt es in C# keine simplen Datentypen, da alles ein Objekt ist bzw. sich auch hinter diesen Typen eine Klasse verbirgt. Da aber in vielen Sprachen wie z. B. Java diese Trennung vorhanden ist, wird auch in dieser Erläuterung eine Trennung zwischen komplexen Typen (z. B. Klassen) und simplen Typen (z. B. Integer-Zahlen) vorgenommen. String und Character Für die Speicherung von einzelnen Zeichen und Zeichenketten gibt es in C# die Datentypen Character (char) und String (string). Um ein Zeichen zu speichern, wird der Datentyp char verwendet. Muss eine Zeichenkette, also z. B. ein ganzes Wort, gespeichert werden, so wird der Datentyp string verwendet. Für die Deklaration von Strings und Characters gibt es eine unterschiedliche Syntax: char EinZeichen; string MehrereZeichen; EinZeichen = 'A'; MehrereZeichen = "Eine Zeichenkette"; Auffällig sind hier die Verwendung des Hochkommas bei der Character- und die Verwendung des Anführungszeichens bei der String-Zuweisung. Obwohl es sich bei dem Typen String streng genommen um eine Klasse handelt, muss eine Variable dieses Typs nicht explizit mit dem new-Schlüsselwort erzeugt werden! Ganz- und Fließkommazahlen Zur Speicherung von Zahlen in Variablen werden in C# zwei Typengruppen unterschieden. Einmal sind da die Datentypen für die ganzen Zahlen und zum anderen gibt es zur Speicherung von Fließkommawerten auch entsprechende Datentypen. Ähnlich wie bei den Zeichenketten gibt es auch hier unterschiedliche Typen. Die Tabellen 3.1 und 3.2 enthalten eine Übersicht. Bezeichnung/Typ Wertebereich Byte 0 – 255 Int16 -32768 bis 32767 Int32 -2147483648 bis 2147483647 Int64 -9223372036854775808 bis 9223372036854775807 3.1 Variablen, Datentypen und Deklaration Bezeichnung/Typ Wertebereich Sbyte -128 bis 127 UInt16 0 bis 65535 UInt32 0 bis 4294967295 UInt64 0 bis 18446744073709551615 43 Tabelle 3.1: Datentypen für die Speicherung ganzer Zahlen Bezeichnung/Typ Wertebereich float 1.5 x 10-45 bis 3.4 x 1038 double 5.0 x 10-324 bis 1.7 x 10308 decimal 1.0 x 10-28 bis 7.9 x 1028 Tabelle 3.2: Datentypen für die Speicherung von Fließkommazahlen Die Deklarierung und Initialisierung kann zusammen oder getrennt erfolgen: double TypDouble; TypDouble = 1234.50; int TypInt = 10; Wahrheitswerte C# kennt natürlich auch den Typ Boolean zur Bezeichnung von Wahrheitswerten. Eine Variable von diesem Typ kann nur zwei Zustände (wahr oder falsch) annehmen. bool wahrOderfalsch; wahrOderfalsch = true; Aufzählungen Aufzählungstypen definieren einen begrenzten Wertebereich. Es wird also eine Variable deklariert, deren mögliche Inhalte bereits bei der Deklaration festgelegt werden. Denken Sie hierbei an ein Kinderspielzeug, in das nur bestimmte geometrische Figuren gesteckt werden können. Generell kann man festhalten, dass ein Aufzählungstyp innerhalb eines definierten Blocks (z. B. Klammern) angelegt wird. enum aufzaehlung { Gestern, Heute, Morgen }; Konstanten In C# werden Konstanten mit dem Schlüsselwort const deklariert: const double EuroDmWechselkurs = 1.95583; 44 Kapitel 3: C# im Überblick 3.1.2 Operatoren Neben Variablen und Datentypen benötigt man zur Programmierung natürlich noch etwas mehr. C# kennt Operatoren zur Zuweisung von Werten, zum Vergleich, zur Berechnung. Der Zuweisungsoperator = wird benutzt, um einer Variablen einen Wert – dies kann eine Zeichenkette oder Zahl sein – zuzuweisen: string Variable = "Hallo Welt"; Als Vergleichsoperator wird in C# das doppelte Gleichheitszeichen == verwendet: Zahl == 5 Darüber hinaus kann auch wie in Java eine spezielle Methode namens equals zum Vergleich einer Instanz verwendet werden: Zahl.equals(5) Das Gegenstück zum Vergleichsoperator in C# ist der Ungleichheitsoperator <>, mit ihm kann geprüft werden, ob zwei Werte ungleich sind: 6 <> 5 Mit logischen Operatoren können in C# Verknüpfungen von Aussagen getroffen werden: (A==1) && (B==2) (A<1) || (B>2) (A==1) && (!(B==1)) Im Beispiel sind der UND-Operator (&&), der ODER-Operator (||) und der NOT- oder Negationsoperator (!) zu sehen. Durch die Verwendung von Klammern können die Operatoren beliebig kombiniert werden. So geschehen im letzten Beispiel, in dem der UND-Operator in Kombination mit dem NOT-Operator zu sehen ist. Neben den bis jetzt aufgeführten Operatoren können für Vergleiche auch die Operatoren in Tabelle 3.3 eingesetzt werden. Operator Beschreibung < Kleiner als > Größer als <= Kleiner oder gleich >= Größer oder gleich Tabelle 3.3: Vergleichsoperatoren 3.1 Variablen, Datentypen und Deklaration 45 Zur Berechnung können die Operatoren in Tabelle 3.4 benutzt werden. Operator Beschreibung + Additionsoperator - Subtraktionsoperator * Multiplikationsoperator / Divisionsoperator \ Operator für die Division von Integerwerten. mod Divisionsrest-Operator (Modulo) Tabelle 3.4: Arithmetische Operatoren Tabelle 3.5 enthält eine Übersicht der wichtigsten Operatoren in C#. Operator Beschreibung = Zuweisungsoperator == Vergleichsoperator != Ungleichheitsoperator && UND-Operator || ODER-Operator ! Negationsoperator (NOT-Operator) ^ Logischer Oder-Operator Tabelle 3.5: C#-Operatoren Variablen deklarieren mit var Sind Sie es leid, für jede Variable den korrekten Datentyp herauszusuchen? Seit C# 3.0 ist auch das kein Problem mehr. Mit dem Schlüsselwort var lassen sich Variablen (und somit auch Objekte) innerhalb einer Methode deklarieren, ohne einen Typ angeben zu müssen. Vielleicht kennen Sie noch aus Delphi- oder Visual-Basic-Zeiten den VariantDatentyp. In einer solchen Variablen ließ sich wirklich alles unterbringen, angefangen vom Character bis hin zu einem Bild. Hat man zuvor eine Integer-Variable wie folgt deklariert: int zahl = 5; so ist es mit var möglich, das Ganze auch wie folgt zu schreiben: var zahl = 5; Natürlich ist somit auch die folgende Deklarierung und anschließende Zuweisung korrekt: var zeichenkette = "Eine Zeichenkette"; 46 Kapitel 3: C# im Überblick Allerdings bedeutet die Verwendung von var nicht, dass ein Variant-Datentyp benutzt wird! Es ist vielmehr so, dass trotz der Verwendung von var zuletzt der korrekte Datentyp eingesetzt wird. Der Compiler analysiert die entsprechenden Codeabschnitte und wählt anschließend den passenden Datentyp aus. Er ersetzt also quasi das var-Schlüsselwort durch den passenden Datentyp. Somit wird die Anwendung auch nicht langsamer, und es wird auch nicht mehr Speicher benötigt! Um es noch einmal deutlich zu sagen: Mit var ist kein neuer Datentyp eingeführt worden, sondern es wird dem Entwickler lediglich etwas Arbeit abgenommen. So führen beispielsweise die folgenden Zeilen zu einer Fehlermeldung in Visual Studio: var zahl = 3; zahl += 1; zahl = "Hallo"; Der Compiler erkennt zahl durch die Zuweisung des Wertes als Variable vom Typ Integer. Einer Integer-Variablen kann man keinen String zuordnen! Wenn man das im Auge behält, spricht eigentlich nichts gegen dieses Schlüsselwort. Allerdings kann die Verwendung von var die Lesbarkeit des Codes beeinträchtigen. Nicht mehr, nicht weniger. 3.2 Kontrollstrukturen Es folgt eine Übersicht der Befehle und Anweisungen zur Steuerung des Programmflusses in C#. 3.2.1 Fallunterscheidung Basierend auf einer Boole’schen Auswertung kann auch in C# mit der If-else-Anweisung eine Verzweigung innerhalb des Programmflusses ausgeführt werden: int a = 5; int b = 10; if (a>b) { MessageBox.Show("Der Wert in a ist größer als in b"); } else { MessageBox.Show("Der Wert in b ist größer als in a"); } 3.2.2 Mehrfachauswahl Neben der einfachen Fallunterscheidung kennt C# natürlich die Mehrfachauswahl, die auch als case-Anweisung bekannt ist. Eine Mehrfachauswahl wird in C# mit dem Befehl switch eingeleitet. Nach jedem case-Zweig muss in C# zusätzlich eine break-Anwei- 3.2 Kontrollstrukturen 47 sung eingefügt werden. Folgt keine break-Anweisung, so wird auch der nachfolgende Zweig durchlaufen. int auswahl; auswahl = 22; switch (auswahl) { case 5: MessageBoc.Show("Die break; case 10: MessageBoc.Show("Die break; case 20: MessageBoc.Show("Die break; default: MessageBoc.Show("Die break; } Variable enthält den Wert 5"); Variable enthält den Wert 10"); Variable enthält den Wert 20"); Variable enthält weder 5, 10 noch 20!"); Listing 3.1 Der letzte Zweig default wird durchlaufen, sofern kein vorheriger case-Fall zutreffend war. 3.2.3 Schleifen In C# gibt es vier unterschiedliche Schleifentypen. Da sind zuerst die sogenannten kopfund fußgesteuerten Varianten. Neben diesen beiden Typen gibt es in C# auch noch eine Zählschleife. Darüber hinaus ist es auch in C# möglich, mit einer sogenannten foreachSchleife Listen von Objekten zu durchlaufen. Schleife kopfgesteuert Das folgende Beispiel demonstriert den Einsatz einer kopfgesteuerten Schleife in C#. In C# werden diese auch als while-Schleifen bezeichnet: int a = 0; int b = 10; while (a<=b) { a = a + 1; } 48 Kapitel 3: C# im Überblick Schleife fußgesteuert Eine fußgesteuerte Schleife wird in C# mit dem do while-Konstrukt gebildet: int a = 5; int b = 10; do { a = a + 1; } while (a > b); Zählschleife Es folgt die Syntax einer Zählschleife in C#. for (int i = 1; i <= 10; i++) { a = a + i; MessageBox.Show(a.toString()); } Das Listing zeigt die aufsteigende Variante, möglich wäre aber auch, die Schleife absteigend laufen zu lassen: int i = 10; i > 1; i-- foreach-Schleife Erst in den letzten Jahren kam zu den klassischen Schleifen die foreach-Schleife hinzu. Sie ist unter anderem in PHP verbreitet und wurde in C# übernommen. Eine foreachSchleife wird immer dann benutzt, wenn eine unbestimmte Anzahl an Elementen vom Anfang bis zum Ende durchlaufen werden soll. int[]sammlung = new int[] {0, 1, 2, 3, 4, 5}; foreach (int i in sammlung) { System.Console.WriteLine(i); } Im Beispiel wird ein Integer-Array (siehe folgenden Abschnitt) erzeugt und mit Werten initialisiert. Anschließend wird mittels der foreach-Schleife jedes einzelne Element ausgegeben. Die foreach-Schleife wird hauptsächlich in Verbindung mit Sammlungstypen (Collections) oder Arrays benutzt. 3.2 Kontrollstrukturen 3.2.4 49 Arrays Arrays werden in C# analog zu den Variablen zuerst mit dem verwendeten Datentyp deklariert: int[] zahlenArray = new int[10]; Durch die Angabe von [10] wird die Dimension des Arrays festgelegt. Im Beispiel sind es zehn Stellen. Jede Stelle kann durch Angabe des Arraynamens in Kombination mit dem entsprechenden Index angesprochen werden: zahlenArray[5] = 5; Sollen alle zehn Stellen des Arrays beispielsweise mit einem Integer-Wert initialisiert werden, so wird dies am besten mit einer for-Schleife erledigt: int[] zahlenArray = new int[10]; for (int i = 1; i <= 10; i++) { zahlenArray[i] = i; } Ein Array kann auch in C# mehr als nur eine Dimension haben. Dann wird es wie folgt deklariert: int[,] matrix = new int[10,10]; Im Beispiel ergibt sich ein zweidimensionales Array mit 10 x 10 Feldern. Die einzelnen Zellen können wie bisher über einen Index angesprochen werden. Allerdings besteht dieser Index jetzt aus zwei Angaben. Um beispielsweise die dritte Zelle in der dritten Reihe ansprechen zu können, muss sowohl der Index für die Reihe als auch für die Spalte angegeben werden: matrix[3,3] = 11; 3.2.5 Strukturen Eine Struktur ermöglicht die Zusammenfassung unterschiedlicher Variablen zu einer Struktur, die dann über einen Namen angesprochen werden kann. Die einzelnen Variablen dieser Struktur können gezielt aufgerufen und es können Werte zugewiesen werden. Für eine Person könnte dies wie folgt aussehen: Person • Nachname • Vorname • Personalnummer In C# werden Strukturen mithilfe des Schlüsselwortes struct umgesetzt. Um bei dem Beispiel Person zu bleiben, würde für den Vor- und Nachnamen je eine Variable vom 50 Kapitel 3: C# im Überblick Typ String innerhalb der Struktur angelegt. Um die Personalnummer zu speichern, wird eine Variable vom Typ Integer definiert. In C# ergibt sich somit folgende Struktur: public struct Person { public string Nachname; public string Vorname; public int Personalnummer; } Die einzelnen Variablen sind somit Bestandteil der Struktur und können mittels einer Variablen des Typs angesprochen werden. Die Struktur kann so noch nicht genutzt, sondern muss erst erzeugt werden: class Program { public struct Person { public string Nachname; public string Vorname; public int Personalnummer; } static void Main(string [] args) { Person person; person.Nachname = "Bleske"; person.Vorname = "Christian"; person.Personalnummer = 123456; } } Listing 3.2 Im Beispiel ist zu sehen, wie die einzelnen Variablen der Struktur angesprochen werden können, nämlich mittels des Punktoperators. Die Kennzeichnung der Variablen mit dem Schlüsselwort public bewirkt, dass die Variablen angesprochen werden können. Das Gegenstück wäre die Kennzeichnung private. Eine mit private gekennzeichnete Variable kann außerhalb der Struktur nicht angesprochen werden. Mehr hierzu im Abschnitt 3.3 über Klassen. 3.3 Klassen 3.2.6 51 Typumwandlung C# unterstützt natürlich die Umwandlung von einem Typ in einen anderen: int i = 20; double d = 0; d = i; i = (int)d; Bei der Umwandlung des Integer-Werts in den Double-Typ handelt es sich um eine implizite Konvertierung. Daten können an dieser Stelle nicht verloren gehen, da ein kleiner in einen größeren Typ umgewandelt wird. Bei der folgenden expliziten Umwandlung wird hingegen zumindest der Nachkommaanteil des Double-Wertes abgeschnitten. Daten gehen also verloren. Da alle Typen, auch die simplen, in C# von einer gemeinsamen Basisklasse abgeleitet sind, besitzen die Objekte auch eine abgeleitete Methode zur Umwandlung in eine Zeichenkette, die mit Objektname.ToString() aufgerufen wird. Außerdem gibt es noch eine spezialisierte Klasse namens Convert zur Typumwandlung: string zeichen = Convert.ToString(i); Die Klasse Convert ist mehrfach überladen, das heißt, es werden alle möglichen Umwandlungsfunktionen (ToByte, ToInt, ToString …) bereitgestellt. 3.3 Klassen Der folgende Abschnitt gibt eine kurze Einführung in die objektorientierte Programmierung mit C#. Der Schwerpunkt liegt dabei auf den Möglichkeiten, die die Sprache im Rahmen der objektorientierten Programmierung bietet. Was sind Objekte? Die objektorientierte Programmierung galt bei ihrer Einführung als die Lösung für die immer komplexer werdenden Programme und Problemstellungen. Statt die reale Welt in Prozeduren und Funktionen zu transformieren, war es mit der objektorientierten Programmierung erstmals möglich, eine reale Struktur in Form eines Programms nachzubilden. Statt also eine Person nur mit Funktionen und Prozeduren zu beschreiben bzw. die einzelnen Daten, wie z. B. Nachname, Vorname usw., zu verarbeiten, ist es mit der objektorientierten Programmierung möglich, ein reales Objekt in Form eines Programms nachzubilden. Diese Art der Programmierung kommt dem menschlichen Denken näher als die prozedurale Programmierung. So verfügt ein Objekt, z. B. eine Person, über Eigenschaften (Name, Größe oder auch Personalnummer), und eben diese Eigenschaften lassen sich mit der objektorientierten Programmierung in Form von Programmcode nachbilden. Ein Objekt ist dabei der zentrale Dreh- und Angelpunkt während der Entwicklung. So kann ein Objekt nicht nur Daten enthalten, sondern es stehen auch Methoden innerhalb des Objektes bereit, um diese Daten zu manipulieren. Ein Beispiel für ein Objekt ist ein 125 Teil 2 – Apps entwickeln Der erste Teils des Buches befasste sich hauptsächlich mit den Werkzeugen zum Entwickeln von Apps. Im zweiten Teil des Buches geht es um das Detailwissen, das zur Entwicklung von Apps benötigt wird. 127 7 Entwicklung einer App Eine App ist mehr als nur eine Seite, auf der sich ein paar Steuerelemente befinden. Eine App besteht vielmehr aus kleinen Bausteinen, die später, wenn das Projekt kompiliert wird, zusammen eine Anwendung ergeben. 7.1 Aufbau einer App Legen Sie in Visual Studio ein neues Projekt an. Wählen Sie als Vorlage die Windows Phone Application aus. Es dauert einen Moment, dann ist in der Entwicklungsumgebung auf der linken Seite der Phone-Designer und auf der rechten der XAML-Editor zu sehen. Richten Sie Ihren Blick nun auf den Solution-Explorer von Visual Studio. Erweitern Sie alle Ordner und betätigen Sie anschließend die Schaltfläche Show All Files. Bild 7.1: Eine Windows Phone App im Solution-Explorer In dieser Ansicht sind fast alle Elemente des Projekts sichtbar. Es fehlen lediglich die Dateien, die im Anschluss an die Kompilierung eines Projekts in den Ordnern Debug und Release vorhanden sind. 128 7.1.1 Kapitel 7: Entwicklung einer App Der Properties-Ordner Geht man von oben nach unten, so ist da zuerst der Ordner Properties. Dieser enthält drei Dateien: AppManifest.xml, AssemblyInfo.cs und WMAppManifest.xml. Die Datei AppManifest.xml enthält Informationen über die von der App benötigten/verwendeten Bibliotheken (DLL). In dieser Datei ist zumindest ein Verweis auf die Projektdatei enthalten. Im Beispiel ist dies WindowsPhoneApplication.dll. In der Datei könnten aber noch weitere Bibliotheken aufgeführt sein. <Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" EntryPointAssembly="WindowsPhoneApplication" EntryPointType="WindowsPhoneApplication.App" RuntimeVersion="3.0.40624.0"> <Deployment.Parts> <AssemblyPart x:Name="WindowsPhoneApplication" Source="WindowsPhoneApplication.dll" /> </Deployment.Parts> </Deployment> Ferner kann der Datei AppManifest.xml auch der Einstiegspunkt (EntryPointType) in die Anwendung entnommen werden. Im Beispiel ist dies WindowsPhoneApplication.App. Genau dieser Punkt ist direkt zu Beginn innerhalb der Datei App.xaml zu finden: <Application x:Class="WindowsPhoneApplication.App" //Quellcode entfernt… In der Datei AppManifest.xml sind also wie gesagt alle vom Projekt verwendeten Bibliotheken zu finden. Sie wird nicht in das Projekt kompiliert, sondern ist immer separat verfügbar. Wenn das Projekt später in den Marketplace geladen wird, muss diese Datei mit übertragen werden. Als Nächstes folgt im Properties-Ordner die Datei AssemblyInfo.cs. In dieser Datei werden die Eigenschaften der App definiert. Beispielsweise die Versionsnummer, der Name oder ein Copyright-Vermerk. Zuletzt findet man im Properties-Ordner die Datei WMAppManifest.xml. Diese Datei enthält detaillierte Informationen über die Anwendung. So ist hier unter anderem der Titel der App hinterlegt. Außerdem ist hier der Name der Icon-Datei gespeichert und das Page-Objekt, mit dem die Anwendung gestartet wird, ist hinterlegt. Darüber hinaus enthält die Datei Informationen über von der App verwendete Funktionen. Also zum Beispiel, ob die App das Mikrofon verwendet oder Netzwerkdienste in Anspruch nimmt. Das folgende Listing zeigt den Inhalt einer WMAppManifest.xml. <Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" AppPlatformVersion="7.0"> 7.1 Aufbau einer App 129 <App xmlns="" ProductID="{cfacaa54-5055-4461-9168-551c61c827c7}" Title="WindowsPhoneApplication" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="WindowsPhoneApplication author" Description="Sample description" Publisher="WindowsPhoneApplication"> <IconPath IsRelative="true" IsResource="false">ApplicationIcon.png</IconPath> <Capabilities> <Capability Name="ID_CAP_MICROPHONE"/> <Capability Name="ID_CAP_NETWORKING"/> <Capability Name="ID_CAP_PHONEDIALER"/> <Capability Name="ID_CAP_PUSH_NOTIFICATION"/> <Capability Name="ID_CAP_SENSORS"/> <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/> </Capabilities> <Tasks> <DefaultTask Name ="_default" NavigationPage="MainPage.xaml"/> </Tasks> <Tokens> <PrimaryToken TokenID="WindowsPhoneApplicationToken" TaskName="_default"> <TemplateType5> <BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI> <Count>0</Count> <Title>WindowsPhoneApplication</Title> </TemplateType5> </PrimaryToken> </Tokens> </App> </Deployment> Listing 7.1: WMAppManifest.xml Auch diese Datei muss mit in den Marketplace übertragen werden. 7.1.2 Der Ordner References Innerhalb des Projektmappen-Explorers folgt als Nächstes der Ordner References. In diesem Ordner werden alle Silverlight-Bibliotheken aufgeführt, die im Projekt verwendet werden. In der Regel sind dies: Microsoft.Phone, Microsoft.Phone.Interop, mscorelib, system, System.core, System.Net, System.Windows sowie System.xml. 130 7.1.3 Kapitel 7: Entwicklung einer App Die Ordner bin und obj Es folgen die Ordner bin (das Kürzel steht für »Binary«) mit den Unterverzeichnissen Debug und Release sowie obj, das ebenfalls je einen Ordner mit der Bezeichnung Debug und Release enthält. In den Ordnern Debug und Release, welche in bin enthalten sind, befinden sich die folgenden Dateien: AppManifest.xml, ApplicationIcon.png, Background.png, WindowsPhoneApplication.dll, WindowsPhoneApplication.pdb und WindowsPhoneApplication.xap. Während die Funktion der Konfigurationsdatei und der Bilddateien bekannt ist, stellt sich die Frage, wofür die anderen drei Dateien benötigt werden. Die DLL enthält die eigentliche Anwendung, und die Datei von Typ .pdb (das Kürzel steht für »Program Debug Database«) ist eine Symboldatei und wird zum Debuggen der App benötigt. Es bleibt die Datei mit der Kennung .xap. Hierbei handelt es sich um die Zusammenfassung aller Dateien im Verzeichnis in einem Archiv. Vergleichbar ist dieses Prinzip mit den JAR-Archiven von Java-Projekten. Es handelt sich also um eine komprimierte Zusammenfassung. Diese wird später auch auf das Windows Phone übertragen. Schauen Sie sich das Ganze doch einmal in einem Komprimierungsprogramm wie z. B. 7z an. In dieser Anwendung lässt sich die Datei nämlich öffnen und einsehen. Bild 7.2: Eine dekomprimierte XAP-Datei Wenn Sie die Dateikennung in .zip ändern, so können Sie die darin enthaltenen Dateien auch dekomprimieren. Bei einer XAP-Datei handelt es sich also um eine kompilierte Silverlight-Datei, die so für die Auslieferung benutzt werden kann. Im bin-Ordner und seinen Unterverzeichnissen ist alles enthalten, was zur Verteilung der App benötigt wird. In den obj-Ordner und die zugehörigen Unterverzeichnisse wird alles kopiert, was zum Kompilieren der App benötigt wird. Das bedeutet: Nur im binOrdner wird man ggf. zusätzlich benötigte Assemblies (DLLs) wie zum Beispiel ThirdParty-Controls finden, die nicht in die fertige Datei kompiliert werden, nicht aber im obj-Ordner. 7.1 Aufbau einer App 131 Zuletzt bleiben im Projekt noch die Dateien App.xaml und App.xaml.cs sowie eine oder auch mehrere Page-Dateien (zumindest MainPage.xaml und MainPage.xaml.cs) übrig. In Kapitel 4 wurden die Bedeutung dieser Dateien und ihre Beziehung untereinander erläutert. Verpackt als XAP-Datei kommt die App dann über den Microsoft Marketplace auf ein Windows Phone. 7.1.4 Lebenszyklus einer App Sobald die App im Marketplace ausgewählt wurde und man sich für die Installation entschieden hat, wird die XAP-Datei auf das Handy übertragen. Bild 7.3: Das Marketplace-Symbol Dort angelangt, wird die App automatisch erkannt und installiert. Dies geschieht ohne Interaktion mit dem Anwender. Die App wird allerdings nicht automatisch auf dem Startbildschirm abgelegt. Es ist erforderlich, durch einen Klick auf das Symbol in die Programmübersicht des Handys zu wechseln. Bild 7.4: Übersicht über die installierten Apps Berührt man den Programmnamen und hält den Eintrag gedrückt, wird anschließend ein Menü geöffnet, siehe Bild 7.5, in dem zwei Menüpunkte vorhanden sind. Mit dem einen lässt sich die App wieder deinstallieren, mit dem anderen kann ein App-Symbol als Live Tile in die Startseite des Handys eingefügt werden. Bild 7.5: Das App Live Tile auf der Startseite Das Live Tile kann von der Startseite wieder entfernt werden, indem es gedrückt und einen Moment lang »gehalten« wird. Anschließend öffnet sich ein Symbol, das nach 132 Kapitel 7: Entwicklung einer App Betätigung das Live Tile wieder entfernt. Ein kurzes Antippen startet die App. Der sogenannte Lebenszyklus der Anwendung beginnt. Starten, Ausführen und Beenden einer App Einstiegspunkt in die Anwendung ist die Klasse App, die aus den zwei Dateien App.xaml und App.xaml.cs besteht. Der XAML-Teil, der für die GUI zuständig ist, wurde in Kapitel 4 bereits vorgestellt. Jetzt geht es um die Ausführung der App, und dort rückt der in C# generierte Quellcode in den Fokus. public partial class App : Application { public App() { //Quellcode entfernt } private void Application_Launching(object sender, LaunchingEventArgs e) { } private void Application_Activated(object sender, ActivatedEventArgs e) { } private void Application_Deactivated(object sender, DeactivatedEventArgs e) { } private void Application_Closing(object sender, ClosingEventArgs e) { } //Quellcode entfernt } Listing 7.2: Die Datei App.xaml.cs Starten und Beenden Die vier Methoden Application_Launching, Application_Closing, Application_ Activated und Application_Deactivated in der Datei App.xaml.cs spielen eine zentrale Rolle im Lebenszyklus der App. Beim Start werden zunächst der Inhalt des Konstruktors abgearbeitet und dann das Ereignis Application_Launching ausgeführt. Im Anschluss läuft die Anwendung. Um die Anwendung zu beenden, muss der Back-Button des 7.1 Aufbau einer App 133 Handys auf der Startseite der App betätigt werden. Sobald der Back-Button betätigt wurde, wird im Code die Methode Application_Closing ausgeführt. Nach Abarbeitung des in dieser Methode enthaltenen Codes ist die Anwendung beendet. Wenn Sie entsprechende Breakpoints setzen, dann können Sie dieses Verhalten nachvollziehen. Aktivieren und Deaktivieren Jetzt gibt es aber noch die beiden Ereignisse Application_Activated und Application_ Deactivated. Sie werden offensichtlich zu einem anderen Zeitpunkt aufgerufen. Letztere Ereignisse werden in einem Kontext ausgeführt, der erst einmal nichts mit dem Starten oder Beenden der App zu tun hat. Startet man eine App und betätigt anschließend den Windows-Button, werden Sie feststellen, dass – wie erwartet – wieder der Startbildschirm angezeigt wird. Setzt man im Quelltext jetzt aber zwei Breakpoints, einen bei Application_Deactivated und den anderen im Ereignis Application_ Closing, und wiederholt den Versuch, so stellt man fest, dass das Ereignis Application_ Deactivated ausgeführt wird und nicht – wie erwartet – Application_Closing. Warum dieser Unterschied? In beiden Fällen wird die Anwendung offensichtlich geschlossen, denn selbst geschriebene Apps können nicht im Hintergrund ausgeführt werden. Sie erinnern sich sicher noch an den Back-Button. Mit ihm kann man durch die App navigieren und sich die bereits einmal aufgerufenen Pages wieder anzeigen lassen. Das Ganze funktioniert auch anwendungsübergreifend. Wird nun eine andere Anwendung gestartet oder der Windows-Button betätigt, so merkt sich Windows Phone im Gegensatz zum Schließen der App den aktuellen Zustand, damit der Anwender zu ihm zurückkehren kann. Deshalb wird auch nicht das Application_Closing-Ereignis ausgeführt, sondern Application_Deactivated. Sobald also eine App deaktiviert wird, versieht Windows Phone sie mit einem sogenannten Tombstone (zu Deutsch: Grabstein) und merkt sich den Status der App. Über den Back-Button besteht dann die Möglichkeit, zur App inklusive des aktuellen Status zurückzukehren. Trotzdem wird auch nach Ausführung von Application_Deactivated die App beendet. Es gibt mehrere Situationen, in denen eine App deaktiviert wird. Dies sind: Betätigung des Windows-Buttons, Timeout und Aufruf des Lock-Fensters sowie wenn eine andere App im Vordergrund ausgeführt wird. In allen genannten Fällen wird die zuvor ausgeführte App nicht beendet, sondern »nur« deaktiviert. Wenn die App deaktiviert und mit einem Tombstone versehen wurde, können zu ihrer erneuten Aktivierung unterschiedliche Dinge passieren. Entweder der Anwender betätigt den Back-Button so lange, bis er zur App zurückkehrt, oder eine andere Anwendung (z. B. die zum Telefonieren) gibt den Screen wieder frei, und die App wird wieder aktiviert. Das wird durch Auslösen des Ereignisses Application_Activated eingeleitet. Anschließend wird die zuletzt angezeigte Seite der App wieder aufgerufen, und man kann dort weiterarbeiten, wo man zuletzt aufgehört hat. 134 Kapitel 7: Entwicklung einer App Die vier Ereignisse in der Klasse App beschreiben den Lebenszyklus einer App also sehr gut. Dieser besteht aus: • dem Start der App (Application_Launching) • der Deaktivierung (Application_Deactivated) • der erneuten Aktivierung (Application_Activated) • der endgültigen Beendigung der App (Application_Closing) Praktisch können Sie diesen Lebenszyklus auch bei der Denkmal-App beobachten. Durch die Verwendung der Kamerafunktion innerhalb der App wird auch diese deaktiviert, um ein Foto erstellen zu können. Anschließend wird die App wieder aktiviert, damit mit ihr weitergearbeitet werden kann. Hinweis: In Abschnitt 7.1.9, »Speichern und Wiederherstellen des Anwendungsstatus«, wird ein Beispiel vorgestellt, wie der Status einer Anwendung gespeichert (Application_Activated) und wiederhergestellt (Application_Deactivated) werden kann. 7.1.5 Die Klasse Page Zentrales Element jeder App ist eine Page-Instanz. Mindestens eine Page gibt es in jeder App, die MainPage. Diese Seite wird bereits in der Datei WMAppManifest.xml referenziert und dort als Startseite festgelegt. Was für die Klasse App gilt, gilt auch für die PageKlasse. Sie besteht aus zwei Teilen. Der Code-Teil basiert auf C#, der GUI-Teil auf XAML. Eine Page-Instanz wird immer von der Klasse PhoneApplicationPage abgeleitet. Wird ein neues Projekt über eine Vorlage erstellt, so ist zumindest immer eine Page Bestandteil des Projekts. Neue Page-Objekte können über das Kontextmenü des Solution-Explorers über die Menüpunkte Add -> New Item in das Projekt eingefügt werden. Sobald eine Page im Solution-Explorer von Visual Studio markiert wurde, wird der Page-Designer zusammen mit dem zugehörigen XAML-Code angezeigt. 7.1 Aufbau einer App 135 Bild 7.6: Eine Page im Designer Eine neu eingefügte Page enthält allerdings immer zusätzliche Steuerelemente. Dies sind zwei TextBlock-Controls, die den Page- und den Application-Titel enthalten, sowie zwei Grid-Steuerelemente für das Basislayout. Der XAML-Teil Entfernt man diese Steuerelemente aus der Page, so bleibt ein Container zurück, der nur noch wenig Code enthält: <phone:PhoneApplicationPage x:Class="WindowsPhoneApplication.MainPage" <! -- Quellcode entfernt --> FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480" shell:SystemTray.IsVisible="True"> </phone:PhoneApplicationPage> Enthalten sind dann nur noch einige Namespaces und einige gesetzte Eigenschaften. Der C#-Teil Der C#-Teil der Page wird sichtbar, wenn man entweder über das Properties-Fenster einen Ereignis-Handler in der Page-Instanz erzeugt oder aber über den Solution-Explorer die Page-Ansicht dort erweitert. 136 Kapitel 7: Entwicklung einer App Bild 7.7: Erweiterte Ansicht im Solution-Explorer Ein Doppelklick auf das Icon öffnet die Codeansicht der Klasse in Visual Studio. using using using using using using using using using using using using System; System.Collections.Generic; System.Linq; System.Net; System.Windows; System.Windows.Controls; System.Windows.Documents; System.Windows.Input; System.Windows.Media; System.Windows.Media.Animation; System.Windows.Shapes; Microsoft.Phone.Controls; namespace WindowsPhoneApplication { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); } } } Neben den standardmäßig hinzugefügten Bibliotheken, welche via Using-Klausel eingebunden wurden, ist natürlich die Page-Klasse selbst Bestandteil der Datei. Eine einzelne Methode (InitializeComponent) wird im Konstruktor der Page vordefiniert aufgerufen. Positioniert man den Cursor auf dem Methodennamen und betätigt die Taste F12, so wird man automatisch zur Definition der Methode geführt. public void InitializeComponent() { if (_contentLoaded) { return; } _contentLoaded = true; System.Windows.Application.LoadComponent(this, new System.Uri("/WindowsPhoneApplication;component/MainPage.xaml", System.UriKind.Relative)); this.LayoutRoot = ((System.Windows.Controls.Grid)(this.FindName("LayoutRoot"))); 7.1 Aufbau einer App 137 this.TitlePanel = ((System.Windows.Controls.StackPanel)(this.FindName("TitlePanel"))); this.ApplicationTitle = ((System.Windows.Controls.TextBlock)(this.FindName("ApplicationTitle"))); this.PageTitle = ((System.Windows.Controls.TextBlock)(this.FindName("PageTitle"))); this.ContentPanel = ((System.Windows.Controls.Grid)(this.FindName("ContentPanel"))); } Schaut man sich diese Methode etwas näher an, so fällt auf, dass hier auf den zweiten Teil der Klasse, den XAML-Code, zugegriffen wird. Mittels der Methode LoadComponent wird die zugehörige XAML-Datei gelesen, um dort enthaltene Informationen, z. B. den ApplicationTitle, zu lesen. Eigenschaften und Methoden Blickt man auf die Eigenschaften einer Page, so fallen einige Punkte ins Auge. Die erste Eigenschaft ist ApplicationBar. Dahinter verbirgt sich die Möglichkeit, eine PageInstanz mit einer Leiste für besondere Funktionen auszustatten, die für den Anwender direkt erreichbar sein sollen. Im folgenden Abschnitt wird diese Funktion vorgestellt. Anschließend folgen die beiden Eigenschaften BorderBrush und BorderThickness, mit denen sich Farbe und Stärke des Rahmens einer Page einstellen lassen. Auch der verwendete Font lässt sich konfigurieren. Dies geschieht mit FontFamily, FontSize, FontStretch, FontStyle und FontWeight. Mittels der Eigenschaft Foreground lässt sich die verwendete Farbe im Vordergrund der Page festlegen. Auch die Ausrichtung einer Page lässt sich über eine Eigenschaft Orientation steuern. Hierzu später mehr. Die Höhe und Breite einer Page werden über Height und Width festgelegt. Verschiedene Ereignisse, auf die eine Page reagiert, lassen sich nutzen, um den Programmfluss zu steuern. Betätigt beispielsweise ein Anwender den Back-Button, so wird das Ereignis BackKeyPress ausgelöst. Einen Ereignishandler hierfür können Sie durch einen Doppelklick im Register Events von Visual Studio automatisch erzeugen. Sobald eine Page vollständig geladen wurde, wird das Ereignis Loaded ausgelöst. OrientationChanged reagiert, sobald die Ausrichtung einer Page sich ändert, und das Ereignis Unloaded wird ausgelöst, wenn die Page vom Anwender verlassen wird. In Abschnitt 7.4 wird vorgestellt, wie man mit dem Ereignis ManipulationStarted arbeitet. Es wird verwendet, um zu überprüfen, ob ein Anwender die Oberfläche des Smartphones berührt hat. 7.1.6 Die Application Bar Wenn Sie eine neue Page einfügen oder auch ein neues Projekt beginnen, so finden Sie innerhalb einer Page im XAML-Teil folgenden Code, der auskommentiert ist: 60109-2 U1+U4 03.05.2011 10:14 Uhr Seite 1 Christian Bleske Christian Bleske Aus dem Inhalt: Know-how ist blau. • Windows Phone 7 im Detail • Betriebssystem-Basics • Das XNA-Framework Programmierung –Tools – Funktionen • Die Oberflächenbeschreibungssprache und Silverlight • Kurze Einführung in C# XAML • Windows Phone Developer Tools Microsofts Windows Phone 7 ist neben Apple iOS und Google Android das dritte große Smartphone-Betriebssystem auf dem Markt – was noch fehlt, sind Apps! Dieses Buch zeigt, wie Sie diese Chance nutzen und Apps für Windows Phone 7 entwickeln. Anhand einer konkreten Beispielapplikation lernen Sie alle wichtigen Funktionen und das Oberflächendesign kennen und programmieren. Zudem zeigt Autor Christian Bleske ausführlich, wie Sie Ihre App fit für den Windows Phone-Marketplace machen. 씰 씰 씰 Windows Phone 7 macht vieles einfacher Mit Windows Phone 7 hat Microsoft viel Ballast abgeworfen. So gibt es die verschachtelten Menüs früherer Windows-Mobile-Versionen nicht mehr. Auch für Entwickler wurde vieles einfacher: Die Applikationslogik wird nun einheitlich in .NET-Sprachen wie C# programmiert, die Benutzeroberfläche in der XML-basierten Sprache XAML gestaltet. Christian Bleske zeigt, wie das Zusammenspiel zwischen C# und XAML funktioniert und wie die beiden Ebenen ineinander greifen. Er führt kurz in die Entwicklungswerkzeuge Windows Phone Developer Tools ein und zeigt, wie Sie schnell überzeugende Bedieneroberflächen für Ihre Apps programmieren. • Projekte anlegen, kompilieren und debuggen • Der Aufbau einer App • Konzept und Umsetzung der Beispiel-App • Layout- und Oberflächentypen • Die Steuerelemente • Dateien laden und speichern • Positionsbestimmung mit Geodaten • Fotos in die App einbinden • Die Lokalisierung der App • Push Notifications • Die App testen • Veröffentlichung der App im Windows Marketplace Von der App-Idee bis zum Marketplace Dieses Buch zeigt, wie Sie eine App für Windows Phone 7 von der ersten Idee bis zum Einstellen in den Marketplace realisieren. Christian Bleske hat dafür eine App entworfen, mit der Sie Daten zu Bauwerken aufnehmen und verwalten können – komplett mit Fotos und Geo-Informationen. Der Autor skizziert, wie Sie die App konzipieren und das Projekt in der Entwicklungsumgebung anlegen. Schritt für Schritt erläutert er Ihnen die einzelnen Funktionen von der Oberflächengestaltung über die Datenspeicherung bis hin zum Einbinden von Bild- und Positionsdaten. Zuletzt zeigt er Ihnen, wie Sie die Anwendung testen und hilft Ihnen, den Zertifizierungsprozess beim Einstellen in den Marketplace zu bestehen. Geld verdienen mit Windows Phone-Apps Apps zu programmieren macht Spaß – und es kann sich lohnen! Wenn Sie mit selbstentwickelten Apps für Windows Phone 7 Geld verdienen wollen, dann müssen Sie sich bei Microsoft registrieren und brauchen eine US-amerikanische Steuernummer. Klingt kompliziert, ist es aber nicht. Christian Bleske ist diesen Weg für Sie gegangen und zeigt, wie Sie auf Anhieb alles richtig machen. Über den Autor: Christian Bleske ist Autor, Trainer und Entwickler. Sein Arbeitsschwerpunkt liegt auf MicrosoftTechnologien. Seine Fachaufsätze erscheinen in vielen namhaften Entwicklerzeitschriften. Er lebt in Witten im Ruhrgebiet. Auf www.buch.cd Der komplette Quellcode der im Buch beschriebenen Beispiel-Applikation 30,– EUR [D] ISBN 978-3-645-60109-2 Besuchen Sie unsere Website www.franzis.de Windows Phone 7-Apps entwickeln Programmierung – Tools – Funktionen > Programmieren Sie für das neue Smartphone-Betriebssystem von Microsoft! > So gestalten Sie griffige Benutzeroberflächen > Das Zusammenspiel von C# und XAML verstehen > So machen Sie Ihre App fit für den Windows Phone-Marketplace Bleske Windows Phone 7-Apps entwickeln Windows Phone 7-Apps • Das .NET Compact Framework Programmierung Tools Funktionen Vorwort von Dr. Frank Prengel, Technical Evangelist für Windows Phone bei Microsoft