You are on page 1of 39

Bachelorarbeit

Android L3T E-Book


Gernot Solic

Abteilung Vernetztes Lernen / Zentraler Informatik Dienst Technische Universitt Graz

Betreuer: Univ.-Doz. Dipl.-Ing. Dr.techn. Martin Ebner

Graz, im November 2011

Abstract
The Android L3T E-Book is an application which transfers the existing L3T E-Book to the Android platform. The focus of the software development was set on tablet computers. The software was especially optimized for the Samsung Galaxy Tab i9000. The application is able to download the articles of the book in a very easy and comfortable way. The book is organized by PDF les, and this les are provided by the L3T publishing server. The application supports basically functionality as displaying, zooming, moving and page switching operations. The software oers some additional features: bookmarking, annotations and highlighting. An implemented version control system manages the dierent article versions. It is possible to manage and modify the PDF documents on the server. The updating process can version and manage the articles, as the user needs this versioning option. The application can handle one or more dierent versions of an article in the data storage of the application. The Android L3T E-Book was created with the Android SDK level 8. Android is based on the Linux kernel, software is mainly developed in Java and run on the Dalvik Virtual Machine (DVM). Android SDK Level 8 supports no native PDF rendering engine. An externally library had to be included, to solve this problem. The PDF rendering is done by the MuPDF library, which is written in C. To include native C code in the project, the NDK was used to handle that. The software was licensed with GNU General Public License (GPL).

Kurzfassung
Das Android L3T E-Book ist eine Applikation, die das L3T E-Book in einer komfortablen Form auf die Android Plattform bringt. Dabei wurde die Applikation fr das Galaxy Tab optimiert. Die Anwendung bietet einen einfachen strukturierten Download der einzelnen Artikel. Die Artikel werden als PDF Dateien angeboten, und knnen direkt vom Server geladen werden. Implementiert wurden grundlegende Funktionalitten wie Anzeigen, Zoomen, Verschieben und Blttern. Zustzlich zur Grundfunktionalitt wurde die Applikation noch um weitere Funktionalitten erweitert, dazu gehren: Lesezeichenfunktion, Markierungen und Anmerkungen. Auerdem bietet die Anwendung eine Versionsverwaltung fr die einzelnen Artikel. Um eine einfache Administration fr das L3T Projekt zu gewhrleisten, knnen am Datenserver die PDF Dateien ohne Probleme aktualisiert werden. BenutzerInnen knnen bei einer Aktualisierung selbst entscheiden ob eine alte Version behalten werden soll, oder ob nur neue Versionen der Artikel in der Applikation existieren. Die Applikation ist in der Lage alte und neue Artikel als PDF Dateien parallel zu verwalten. Realisiert wurde die Anwendung mit dem Android SDK Level 8 (Android Froyo 2.2). Das Android Betriebssystem basiert auf einem Linux Kernel, Anwendungen werden in Java geschrieben und mit Dalvik Virtual Machine (DVM) auf der Plattform ausgefhrt. Da dieses API Level kein PDF Rendering Modul beinhaltet, musste auf eine zustzliche Bibliothek (MuPDF) zurckgegrien werden. Die Quelltextbasis von MuPDF ist jedoch nur als C Quelltext verfgbar. Mit dem Android Native Development Kit (NDK) ist es jedoch mglich nativen C Code ohne die virtuelle Maschine auszufhren. Alle brigen Klassen sowie die Funktionalitt wurden, im Rahmen der Bachelorarbeit erstellt. Die Software wurde unter GNU General Public License (GPL) gestellt.

Inhaltsverzeichnis
1 Einfhrung 1.1 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Betriebssystem Android 2.1 Allgemein . . . . . . . . . . . . . 2.2 Android fr Mobiltelefone . . . . 2.3 Android fr Tablets . . . . . . . . 2.4 Hardware . . . . . . . . . . . . . 2.5 Android SDK und AVD Manager 2.5.1 Android Froyo 2.2 . . . . . 2.6 Eclipse und ADT Plugin . . . . . 2.7 Android NDK . . . . . . . . . . . 2.8 Bibliotheken . . . . . . . . . . . . 2.8.1 MuPDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 3 3 4 5 5 6 7 7 8 9 10 10 10 10 11 11 11 12 12 13 13 13 13 14 14 14 15 15

3 Android L3T E-Book 3.1 Einleitung . . . . . . . . . . . . . . . . 3.2 Anforderungen und Evaluierung . . . . 3.2.1 Anforderungen . . . . . . . . . 3.2.2 Evaluierung der Anforderungen 3.3 Konzept und Planung . . . . . . . . . . 3.4 Benutzerinterface und Design . . . . . 3.4.1 bersichtsmen . . . . . . . . . 3.4.2 Artikelanzeige . . . . . . . . . . 3.4.3 Optionsmen . . . . . . . . . . 3.4.4 Dialoge . . . . . . . . . . . . . 3.5 Implementierung . . . . . . . . . . . . 3.5.1 Quelltext . . . . . . . . . . . . 3.5.2 Assets . . . . . . . . . . . . . . 3.5.3 Java Native Interface (JNI) . . 3.5.4 Ressourcen . . . . . . . . . . . 3.6 Aufbau und Packages . . . . . . . . . . 3.6.1 at.tugraz.l3t.main . . . . . . . .

IV

3.6.2 at.tugraz.l3t.book . . . . . . . . . . . . 3.6.3 at.tugraz.l3t.helper . . . . . . . . . . . 3.6.4 at.tugraz.l3t.worker . . . . . . . . . . . 3.6.5 at.tugraz.l3t.annotation . . . . . . . . 3.6.6 at.tugraz.l3t.bookmark . . . . . . . . . 3.6.7 at.tugraz.l3t.marker . . . . . . . . . . . 3.7 PDF Datenmanagement . . . . . . . . . . . . 3.7.1 Denition ber XML . . . . . . . . . . 3.7.2 XML Parsing . . . . . . . . . . . . . . 3.7.3 Lokale XML Denition . . . . . . . . . 3.7.4 Externer Speicher . . . . . . . . . . . . 3.7.5 Aktualisierung und Versionsverwaltung 3.8 Konguration . . . . . . . . . . . . . . . . . . 3.9 Manifest . . . . . . . . . . . . . . . . . . . . . 3.9.1 Manifest . . . . . . . . . . . . . . . . . 3.9.2 Application . . . . . . . . . . . . . . . 3.9.3 Permissions . . . . . . . . . . . . . . . 3.10 Anwendungsdaten . . . . . . . . . . . . . . . . 3.10.1 Lesezeichen . . . . . . . . . . . . . . . 3.10.2 Markierungen . . . . . . . . . . . . . . 3.10.3 Anmerkungen . . . . . . . . . . . . . . 3.11 GNU General Public License . . . . . . . . . . 4 Android Market 4.1 Allgemein . . . . . . . . 4.2 APK Datei . . . . . . . 4.3 Entwicklerkonto . . . . . 4.3.1 Google Checkout 4.4 Verentlichung . . . . . 4.4.1 APK Signierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

15 16 16 16 17 17 17 18 18 18 19 19 19 20 20 20 20 21 22 22 23 23 24 24 24 25 25 25 25

5 Fazit und Ausblick 27 5.1 Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.2 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Akronymliste Literaturverzeichnis 28 29

Abbildungsverzeichnis
2.1 2.2 3.1 3.2 Marktanteile der mobilen Betriebssysteme (Q1 2011) [PS11] . . . . . . Aufbau des Native Development Kits [Gar11b] . . . . . . . . . . . . . . Design Mock-Up in der Planungsphase . . . . . . . . . . . . . . . . . . Design des Benutzerinterfaces . . . . . . . . . . . . . . . . . . . . . . . 4 8 12 13

VI

Tabellenverzeichnis
2.1 2.2 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 Samsung Galaxy Tab P1000 Spezikationen [Sam11] . . . . . . . . . . Anwendungsevaluierung . . . . . . . . . . . . . . . . . . . . . . . . . . Klassenbeschreibung fr at.tugraz.l3t.main . . . Klassenbeschreibung fr at.tugraz.l3t.book . . . Klassenbeschreibung fr at.tugraz.l3t.helper . . Klassenbeschreibung fr at.tugraz.l3t.worker . . Klassenbeschreibung fr at.tugraz.l3t.annotation Klassenbeschreibung fr at.tugraz.l3t.bookmark Klassenbeschreibung fr at.tugraz.l3t.marker . . Aufbau der Lesezeichendaten . . . . . . . . . . . Aufbau der Markierungsdaten . . . . . . . . . . Aufbau der Anmerkungsdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 8 15 15 16 16 16 17 17 22 23 23

VII

1 Einfhrung
Im Rahmen dieser Bachelorarbeit soll das L3T Buch, welches in PDF Form vorhanden ist auf die Android Plattform gebracht werden. Dabei wurde als Applikationssprache Java verwendet. Um dieses Projekt realisieren zu knnen, wurde vor der Implementierung der Software ein passendes Konzept erstellt, um den Ablauf und die Planung der Arbeit optimal zu organisieren. Zu Beginn musste die Android Plattform evaluiert werden, um einen berblick ber das gesamte System zu erhalten. Es musste ein passendes Software Development Kit (SDK) Level gewhlt werden, um mglichst viele Endgerte zu untersttzen. Dabei wurde das SDK Level 8, fr Android 2.2 Froyo gewhlt. Als anfngliche Schritte musste das Software Development Kit (SDK) einer Analyse bezglich der Funktionalitt unterzogen werden. Eine externe Bibliothek zur Anzeige von PDF Formaten kam zum Einsatz, da keine native PDF Darstellung zur Verfgung stand. Dabei wurde auf nativen C Quelltext zurckgegrien, der mit Hilfe des Native Development Kit (NDK) im Projekt zum Einsatz kam.

1.1 Zielsetzung
Diese Bachelorarbeit behandelt das Thema Softwareentwicklung unter Android. Dabei wurde eine E-Book Applikation fr die Android Plattform erstellt, die ein vorhandenes E-Book auf Android portiert. Die Bachelorarbeit behandelt den Ablauf und die Planung diese Projekts. Das Projekt liefert einen Einblick in die Entwicklung und den Ablauf der Softwareplanung mit dem Android SDK. Zentrales Thema der Bachelorarbeit ist jedoch die Implementation der Anwendung. Lsungsanstze fr die aufgetretenen Probleme whrend der Entwicklung werden ebenfalls diskutiert. Dabei soll aufgezeigt werden, auf welche Besonderheiten bei der Erstellung von Applikationen fr die Android Plattform zu achten ist.

KAPITEL 1. EINFHRUNG

1.2 Motivation
Durch die rapide technologische Entwicklung des Mobilfunksektors, erleben auch deren Betriebssysteme und Softwareprogramme einen rasanten Aufschwung und stellen einen neuen protablen Markt fr Applikationsentwickler dar. Um das bestehende Lehrbuch fr Lernen und Lehren mit Technologien E-Book (L3T) einer breiten Masse zugnglich zu machen, wurde im Rahmen dieser Bachelorarbeit das sehr weit verbreitete Android Betriebssystem gewhlt, um auch in den mobilen Sektor vorzudringen. Es ist ein schneller Einstieg in die mobile Softwareentwicklung mglich, da Android auf Java aufsetzt und eine Grundfunktionalitt inklusive Benutzerinterface vorgegeben ist. Die Applikation soll es dem Benutzer ermglichen, einfach auf das L3T E-Book Zugri zu erhalten indem diese Applikation auf das mobile Endgert installiert wird, und so ein sehr einfaches Konzept zur Verwaltung des Buches zur Verfgung steht. Die einzelnen Kapitel knnen angewhlt und angezeigt werden. Es ist keine zustzliche Software fr die Darstellung ntig. Um einen mglichst einfachen Zugang zur Applikation zu erhalten, wurde diese im Android Markt verentlicht. Die interessierten Benutzer knnen die Applikation ber diesen Android Market mit ihrem mobilen Android Endgert beziehen. Voraussetzung fr den Bezug dieser Anwendung ist ein Tablet mit Android 2.2 Froyo.

2 Betriebssystem Android
2.1 Allgemein
Android ist ein speziell fr mobile Gerte entwickeltes Betriebssystem, welches sich immer grerer Beliebtheit erfreut. Android wird von Google und seinen Partner, der Open Handset Alliance, entwickelt. Grundlage fr Android ist Linux mit der Kernelversion 2.6. Der Linux Kernel ist verantwortlich fr die grundlegende Funktionalitt des mobilen Betriebssystems, dabei bernimmt er Aufgaben im Bereich Speicher-, Prozess-, Treiberverwaltung sowie die Anbindung an die aktuellen Netzwerktechnologien. Oziell ist Android seit dem 21. Oktober 2008 verfgbar und entlich zugnglich. Im Unterschied zu proprietren Betriebssystemen ist Android seit seiner Verentlichung freie Software und somit auch quelloen, und fr jedermann frei zugnglich und modizierbar [Wik11b]. Durch das Open-Source-Konzept 1 hinter Android, gibt es eine sehr breite Produktpalette von androiden Systemen. Android kann sehr leicht an verschiedenartige Hardware angepasst werden, und ist somit bei einer groen Anzahl von Hardwareherstellern im Einsatz. Daher ist Android auch Marktfhrer der eingesetzten mobilen Betriebssysteme weltweit (Stand 2011)[Gar11c]. Die schnelle Portierbarkeit, sowie mgliche Modikationen, erlauben es den Hardwareherstellern mit geringem nanziellen Aufwand Android an ihre Hardware anzupassen.

2.2 Android fr Mobiltelefone


Die grte Verbreitung von Android ndet man hauptschlich am Mobilfunkmarkt, da Android anfangs eigentlich nur fr Mobiltelefone konzipiert wurde. Durch die schnelle Verbreitung des Systems ab 2009 erkannte man dessen groes Potential, und es wurden Konzepte erstellt um Android auf mglichst vielen verschiedenen Hardwaresystemen zu ermglichen. Mittlerweile setzen sehr viele groe renommierte Hardwarehersteller Android ein, und somit gibt es derzeit ein sehr breit gefchertes Portfolio an androiden Mobiltelefonen.
1

Oener Quelltext

KAPITEL 2. BETRIEBSSYSTEM ANDROID

Abbildung 2.1: Marktanteile der mobilen Betriebssysteme (Q1 2011) [PS11] Durch das starke Wachstum, gibt es auch viele neue Mrkte und Mglichkeiten fr Softwareentwickler. Ein neuer Markt fr mobile Applikationen nete sich, da das Basisbetriebssystem nur grundlegende Funktionalitt bot, und die Benutzer jedoch spezielle Anwendungen bentigen. Durch die immer leistungsstrkernen Smartphones der neuen Generation , ist es mglich immer komplexere und umfangreichere Programme fr mobile Endgerte zu erstellen. Durch die Java-Basis die das Android-kosystem bietet, kann auf ein groes Repertoire an Klassen und Bibliotheken zurckgegrien werden. Durch die erhebliche Vielzahl an verfgbaren Mobiltelefonen und auch durch die kurzen Entwicklungszyklen von Android, haben SoftwareentwicklerInnen auch Probleme bei der Entwicklung zu lsen. So spielen dabei die starke Fragmentierung sowie die verschiedenen Entwicklerzweige von Android eine starke Rolle bei der Implementierung von Applikationen [Spe08].

2.3 Android fr Tablets


Die sehr schnelle Eroberung des Mobilfunkmarktes durch Smartphones und die zeitgleiche Revolution der Tablet Computer weisen den neuen Weg, in welche Richtung sich die Hardwarenachfrage der Kunden entwickelt. Benutzerfreundlichkeit, Einfachheit und Mobilitt wurden Schlagworte fr diese neuartige Generation von Tablet Computern. Als 2010 das iPad von Apple Inc. in San Francisco angekndigt wurde, stellte dies den ersten neuen Schritt in die Richtung Tablets dar. Durch den Erfolg des iPads das eine sehr ranierte Marketingstrategie zu Grunde hatte, verfolgten auch andere Hardwarehersteller die Idee eines mobilen Tablets strker. Das Konzept eines Tablet Computers wurde schon sehr viel frher entworfen und gebaut, jedoch konnten sich derartige Gerte nicht ausreichend stark am Markt platzieren. Android in der Entwicklungslinie 2.x wurde grundstzlich fr Mobiltelefone entworfen,

2.4. Hardware

kann und wird jedoch auch Tablets eingesetzt. Mit der Entwicklungslinie 3.x wurde eine speziell fr Tablets verbesserte Android Version konzipiert. Dabei untersttzt Android in der Version 3.x, besser bekannt unter dem Synonym Honeycomb, auch Multicoresysteme und bietet zudem eine verbesserte Benutzeroberche fr Displays mit hheren Ausungen. Bei der Entwicklung von Software fr Tablet Gerte ist dabei zu beachten, dass sich Android 2.x und 3.x hneln, aber doch Unterschiede in der Entwickler-API aufweisen. Mit Ice Cream Sandwich Android Version 4.x sollen die zwei Entwicklerzweige 2.x und 3.x zusammengefasst werden um eine geringere Fragmentierung und eine Vereinheitlichung zu erreichen [And11a].

2.4 Hardware
Zu Beginn musste die Entscheidung getroen werden, ob das L3T E-Book fr Mobiltelefone und Tablets optimiert werden sollte, die Entscheidung el auf die Optimierung fr Tablets. Da es sich um ein E-Book handelt, sollte das Display des Gertes nicht zu klein ausfallen, um auch ein komfortables und schonendes Lesen zu ermglichen. Aufgrund der geringen Displaygren bei aktuellen Mobiltelefonen wurde die Applikation zielorientiert fr Tablet Gerte entwickelt. Als Referenz- und Entwicklungsmodell wurde eine Samsung Galaxy Tab P1000 fr den Entstehungsprozess herangezogen. Spezikationen sind aus Tabelle 2.1 ersichtlich. Prozessor Flash Speicher Display Akku Galaxy Tab P1000 Single Core Cortex-A8 1.06GHz 16GB 7 Zoll WSVGA (1024x600) Li-Polymer (4000mAh)

Tabelle 2.1: Samsung Galaxy Tab P1000 Spezikationen [Sam11] Die verbaute Hardware, in diesem Tablet, sollte fr das Darstellung von PDF Inhalten ausreichend sein. Jedoch ergaben sich im Laufe der Implementierung und Entwicklung kleine Leistungsprobleme. Neuere Gerte sollten dieses Leistungsproblem durch deren Mehrkernprozessoren nicht mehr aufweisen.

2.5 Android SDK und AVD Manager


Das Android Software Development Kit (SDK) ist das Hauptwerkzeug zur Entwicklung von Applikationen unter Android. Unter anderem beinhaltet das SDK Werkzeuge zur Erstellung von Applikationen, diverse Debugging-Werkzeuge und Beispielprogramme zur

KAPITEL 2. BETRIEBSSYSTEM ANDROID

Veranschaulichung. Zustzlich dazu werden mit dem SDK auch die Standardbibliotheken fr die vorhandenen Android-Versionen ausgeliefert. Die SDK-Werkzeuge erlauben die Verarbeitung des Quellcodes eines Programmes in dessen fr Java Virtual Machine (JVM) optimierten Bytecode. Anschlieend werden die Class-Dateien in fr Dalvik Virtual Machine (DVM) verstndliche Dalvik Executables (.dex) konvertiert. Auf Android-Gerten wird eine optimierte DVM zur Ausfhrung von diesem Programmcode eingesetzt. Im Unterschied zu einer standardisierten JVM welche auf Stackbasis arbeitet, wird die DVM auf einer Register basierten Struktur eingesetzt um eine mglichst performante Ausfhrung des Codes zu ermglichen, da Prozessor- und Speicherleistung auf mobilen Endgerten nur begrenzt zur Verfgung stehen. Durch den Einsatz der DVM ist es nicht mglich Standardbibliotheken wie Java SE, Java ME, AWT und Swing einzusetzen. Stattdessen wird eine eigene Bibliothek zur Verfgung gestellt die an die Apache Harmony2 Java Bibliothek angelehnt ist [Goo11a] [And11e]. Das Android SDK kann direkt von der Entwicklerseite geladen werden. Bei erfolgreicher Installation knnen anschlieend die gewnschten API Stufen automatisch ber die SDK Anwendung bezogen und installiert werden. Um Applikationen zu testen, mssen diese entweder auf reeller Hardware oder auf ein virtuelles emuliertes Gert bertragen und installiert werden. Diese Aufgabe bernimmt Android Virtual Device Manager (AVD). Mit diesem Werkzeug knnen virtuelle Android Gerte erstellt und verwaltet werden. Dabei ist es mglich zu bestimmen, auf welches API Level sich das virtuelle Gert sttzt, sowie hardwarespezische Einstellungen bezglich Ausung und Speicher. Am virtuellen Gert knnen die Applikationen in einem simulierten Umfeld auf deren Funktionalitt geprft werden. Auerdem stellt die Emulierung eine Debugfunktionalitt zur Verfgung um Fehler im Quellcode schnell zu lokalisieren. Im Gegensatz zu realer Hardware hat der Emulator nicht dieselbe Leistung. Auf realer Hardware wird die Anwendung grundstzlich ssiger ausgefhrt als bei Emulation [Goo11a].

2.5.1 Android Froyo 2.2


Das L3T E-Book fr Android wurde auf Basis des Samsung Galaxy Tab P1000 mit Android Froyo 2.2 entwickelt. Android 2.2 wurde am 20. Mai 2010 verentlicht. Die grten Vernderungen zum bestehenden System Eclair 2.1 waren Optimierungen am Linuxkernel in Hinsicht auf die Arbeitsspeicherauslastung, Arbeitsspeichernutzung ber die 256 MByte Grenze hinweg und Leistungsverbesserungen fr CPU intensive Anwendungen mit Hilfe von Dalvik JIT. Fr die Entwicklung des L3T E-Books war die Plattform-API ausreichend, jedoch zeigten sich Probleme hinsichtlich der Untersttzung der Darstellung von Portable Document Formates (PDF), welches nicht durch die API abgedeckt wurde. Es musste auf eine externe Bibliothek zurckgegrien werden, um eine Darstellung dieses Formats zu ermglichen [And10].
2

http://harmony.apache.org/ - August 2011

2.6. Eclipse und ADT Plugin

2.6 Eclipse und ADT Plugin


Um die L3T-E-Book-Applikation zu realisieren wurde die weit verbreitete Eclipse IDE eingesetzt. Dabei handelt es ich um eine integrierte Entwicklungsumgebung fr Java und diverse andere Programmiersprachen. In Kombination mit dem Android Development Tools Plugin (ADT) stellt Eclipse die Standardentwicklungsumgebung, fr das Erstellen von Androidapplikationen dar. Das ADT Plugin gliedert sich nahtlos in die Eclipseumgebung ein und stellt dem Benutzer und der Benutzerin zahlreiche ntzliche Funktionen fr den Entwicklungsprozess zur Verfgung. Zu den Hauptfunktionalitten gehren Debugging, Android Framework API Integration, Erstellungs- und Signierfunktion von Android Applikationen [Ecl11]. Das ADT-Plugin bietet von Projekterstellung bis zur Verentlichung nahezu alle Funktionen, die eine reibungslose Softwareentwicklung ermglichen. Dabei ist das ADT abwrtskompatibel und kann fr jedes Android-API-Level gleichermaen eingesetzt werden. Mit dem ADT-Plugin knnen auch die XML Kongurationsdateien einfach ber eine grasche Schnittstelle bearbeitet und konguriert werden. Das Benutzerinterface fr Anwendungen unter Android kann ebenfalls mit dem ADT-Plugin realisiert werden, dies kann entweder ber exakte XML Spezikationen oder direkt ber den GUI-Builder erfolgen. Es ist auch mglich XML sowie den GUI-Builder parallel einzusetzen, da sich der GUI-Builder des XML Spezikationsschemas bedient.

2.7 Android NDK


Durch das Native Development Kit (NDK) ist es mglich Android Anwendungen auf einer C/C++ Quelltextbasis zu entwickeln oder zu ergnzen. Es ist somit mglich nativen Quelltext in der virtuellen Davlik Maschine zu nutzen. Zu empfehlen ist der Einsatz des NDK bei sehr leistungsintensiven Applikationen, wobei eine Leistungssteigerung durch nativen Quelltext nicht garantiert werden kann, da ein Kontextwechsel bei jedem nativem Funktionsaufruf vollzogen werden muss. Seit der NDK Version 6 ist es auch mglich Maschinencode fr x86 Architekturen zu erstellen, grundstzlich dient das NDK jedoch wie bis zur Version 5 fr Maschinencode fr ARM Prozessoren. In Abbildung 2.2 der Aufbau und die Funktionsweise des NDK [Goo11d] [And11e]. Das NDK wurde bei dem L3T-E-Book-Projekt aktiv eingesetzt, da die benutzte Bibliothek fr die Darstellung von PDF Dateien nur in C implementiert wurde und nicht direkt auf Java Basis genutzt werden kann. Die nativen Methoden mssen dennoch im Javaquelltext speziziert und aufgerufen werden. Durch die spezielle Denition ber ein Keyword der Syntax werden native Methoden in Android Applikationen gekennzeichnet. Der passende Methodenaufruf muss in einer kompilierten Bibliothek vorhanden sein.

KAPITEL 2. BETRIEBSSYSTEM ANDROID

Abbildung 2.2: Aufbau des Native Development Kits [Gar11b] Native Bibliotheken werden direkt mit der Installationsdatei (APK) ausgeliefert, und stehen der Applikation direkt zur Verfgung.

2.8 Bibliotheken
Um das Projekt mit PDF Untersttzung realisieren zu knnen, wurde eine externe Bibliothek eingebunden. Anfangs musste eine Evaluierung durchgefhrt werden um eine optimale Auswahl zu treen und auch die Kompatibilitt fr Android zu gewhrleisten. Eine kurze bersicht der evaluierten quelloenen Anwendungen zeigt Tabelle 2.2.
Anwendung APV Droidreader APDFViewer AndPDF Adobe Reader Leistung schnell mittelmig langsam sehr langsam schnell Darstellung korrekt fehlerhaft fehlerhaft fehlerhaft korrekt Bibliothek MuPDF MuPDF Poppler Java PDF Renderer keine Angabe

Tabelle 2.2: Anwendungsevaluierung Gewhlt wurde anhand der entscheidenden Kriterien die MuPDF Bibliothek, da sie die beste Leistung liefert. Auerdem gab es teilweise Probleme bei der Darstellung von eingebetteten Schriftarten sowie Grakfehler unter den anderen Bibliotheken [Art11].

2.8. Bibliotheken

2.8.1 MuPDF
MuPDF ist eine auf C Quelltextbasis vorhandene Bibliothek unter GNU General Public License (GPL). Durch den Einsatz der Bibliothek fr das L3T E-Book wurde, der Quellcode der Applikation ebenfalls unter die GPL gestellt und ist somit freie Software. Eingesetzt wurde MuPDF zur Darstellung von PDF Dateien. Dabei wird das Rendering 3 im nativen Quelltext vollzogen und nur ein Bitmap4 fr die aktuelle Ansicht generiert. Dieses Bitmap Objekt wird als Java Objekt bergeben und kann somit im Java Quelltext eingesetzt werden. Bei Seitenwechsel oder Ansichtswechsel muss immer ein Kontextwechsel von Java Bytecode5 in der DVM in den nativen Maschinencode stattnden. Dieser Wechsel ist rechenintensiv und nimmt dementsprechend Zeit in Anspruch, wodurch sich die Anzeige beim Betrachten verzgern kann. Durch die Untersttzung von PDF bis zur Version 1.7 ist eine gute Kompatibilitt hinsichtlich der Einbindung fr Schriftarten gegeben. Diese werden im L3T E-Book fr diverse berschriften verwendet [Art11].

3 4 5

Berechnung der Darstellung einer PDF Datei Rastergrak Sammlung von Befehlen fr eine VM

3 Android L3T E-Book


3.1 Einleitung
Das vorhandene L3T Buch diente als Grundlage fr die Idee, eine selbststndig Applikation auf Basis dieses Buches fr mobilen Endgerte zu entwerfen. Primr wurden dabei iOS von Apple und Android von Google als Zielplattformen fr die Applikation in Betracht gezogen. Diese beiden System wurden gewhlt, da sie die beiden grten mobilen Plattformen darstellen, die derzeit am Markt erhltlich sind (Stand 2011) [Gar11c]. Dabei wurde die Aufgabe in zwei Projekte aufgeteilt, da sich die beiden Entwicklerplattformen grundlegend voneinander unterscheiden. Um dem Benutzer und der Benutzerin eine mglichst komfortabel lesbare Form fr das E-Book zur Verfgung zu stellen, sollte die Applikation hauptschlich fr Tablet Gerte ausgelegt werden. Die folgenden Kapitel behandeln die Entstehung der Applikation am Samsung Galaxy Tab i9000.

3.2 Anforderungen und Evaluierung


3.2.1 Anforderungen
Die L3T-E-Book-Applikation soll als eine selbstndig lauhige Anwendung fr Android Gerte konzipiert werden. Die Artikel des Buches sollen fr die BenutzerInnen einfach ber eine Client-Server Architektur geladen werden knnen, dabei wird das System unter anderem auch neue Inhalte und Aktualisierungen des Buches verwalten knnen. Die Artikel sollen in einer bersicht dargestellt und bei Bedarf angezeigt werden. Dabei sind beim Betrachten des Artikels grundlegende Funktionen wie Zoom und Ausrichtung der aktuellen Seite ntig. Innerhalb eines Artikels knnen die BenutzerInnen ber die Seiten navigieren. Zustzlich soll es mglich sein Anmerkungen auf einer bestimmten Position auf einer Seite zu setzen, sowie eine Funktion zum Markieren. Dem Benutzer und der Benutzerin soll ebenfalls die Mglichkeit gegeben werden Lesezeichen fr bestimmte Artikel zu setzen und selbst zu benennen. Um das E-Book auch fr Projektoren nutzen zu knnen, soll ein Prsentationsmodus implementiert werden, der alle berssigen und nicht bentigten Interfaceelemente ausblendet. Um fr die BenutzerInnen weitere

10

3.3. Konzept und Planung

11

Informationen zum L3T-Projekt zur Verfgung zu stellen, soll es zustzlich einen Abschnitt mit verschiedenen Verknpfungen zu sozialen Netzwerken geben.

3.2.2 Evaluierung der Anforderungen


Mit Hilfe des Android SDK Level 8 und der Java Standardbibliothek ist es mglich den Groteil der Anforderungen abzudecken. Fr die Darstellung der PDF-Dateien wurde die externe Bibliothek MuPDF integriert. Das grasche Benutzerinterface wurde per XML Schema deniert, und es wurden vorhandene Interfaceelemente zur Lsung der Aufgabe verwendet. Fr die Ansicht von berechneten Bitmaps musste die Basisklasse View stark erweitert werden, um die Benutzereingaben zu erfassen und den Inhalt der PDF Datei an der aktuellen Position zu errechnen. Die restliche Anwendungslogik ist durch eigene Java Klassen in der Applikation implementiert.

3.3 Konzept und Planung


Um die Vorgaben hinsichtlich der Anforderungen zu erfllen, wurde ein Konzept entworfen, wie die Applikation grundstzlich aufgebaut sein sollte. Auerdem wurden erste Entwurfsmuster fr die Benutzeroberche erstellt. Ziel war es ein einfach zu bedienendes Oberchendesign zu erschaen. Dabei wurden skizzierte Muster entworfen um aus den ersten Designideen ein provisorisches Interface zu erhalten (Mock-Up). Danach wurde ein Konzept fr die Organisation der Klassen erstellt. Dabei mussten die Packages 1 und deren Klassen deniert und eingeteilt werden. Die Architektur des Systems wurde durch die Klassenfunktionalitt bestimmt, um eine optimale Abstimmung der Module und Packages zu erhalten. Erste spezische Entwurfsmuster wurden per Bildbearbeitungsprogramm erstellt, in Abbildung 3.1 ein exemplarisches Entwurfsmuster (Mock-Up).

3.4 Benutzerinterface und Design


Eingeteilt wurde die Oberche in zwei primre Bereiche, bersichtsmen und Artikelanzeige, um die Applikation so benutzerfreundlich wie mglich zu halten. Zustzliche Funktionalitt wurde in das Optionsmen gekapselt. Die Optionsmenfunktionen werden ber Benutzerdialoge gesteuert. Als Basis zur Darstellung der verschiedenen Ansichten dient die ViewFlipper Klasse2 . Diese wechselt zwischen dem bersichtsmen

Namensrume fr Java-Klassen

12

KAPITEL 3. ANDROID L3T E-BOOK

Abbildung 3.1: Design Mock-Up in der Planungsphase und der Artikelanzeige. Dies ist notwendig um bei einem Ansichtswechsel die einzelnen Ansichten nicht neu zu erzeugen [And11c].

3.4.1 bersichtsmen
Im bersichtsmen werden die Artikel ber die ListView Komponente3 dargestellt, die Daten fr die ListView werden ber den zugehrigen Adapter bereitgestellt. Grundstzlich werden der Titel und die Versionsnummer des Artikels als Listenelement angezeigt. Durch einfache Berhrung des jeweiligen Artikels wird dieser in der Artikelanzeige genet und kann dort betrachtet werden. Sollten mehrere Version durch das Versionsverwaltungssystem zur Verfgung stehen, so wird dies ebenfalls angezeigt. Mit einer langen Berhrung net sich der Auswahldialog fr die gewnschte Artikelversion [And11c].

3.4.2 Artikelanzeige
In der Artikelanzeige wird der aktuell ausgewhlte Artikel in PDF Form dargestellt. Dabei wird ein Bitmap auf eine PixMapView gezeichnet. Grundoperationen wie Zoom und Verschieben werden intuitiv per Berhrungen gesteuert. Auerdem gibt es eine Navigationsleiste fr Seitenwechsel, Lesezeichen, Markierungen und Anmerkungen, sowie die dazugehrigen Mens zur Stift- und Farbauswahl.

2 3

http://developer.android.com/reference/android/widget/ViewFlipper.html - November 2011 http://developer.android.com/reference/android/widget/ListView.html - November 2011

3.5. Implementierung

13

3.4.3 Optionsmen
ber das Optionsmen knnen Lesezeichen aufgerufen werden, der Prsentationsmodus gestartet werden, Aktualisierungen vorgenommen werden und Informationen zum L3T Projekt sowie zur Lizenzierung abgerufen werden.

3.4.4 Dialoge
Es gibt jeweils einen Dialog fr die Lesezeichenauswahl, Aktualisierung, Farbauswahl und Texteingabe. Die Dialoge werden aus dem bersichtsmen, Artikelanzeige und Optionsmen aufgerufen, je nach gewhlter Funktion.

Abbildung 3.2: Design des Benutzerinterfaces

3.5 Implementierung
3.5.1 Quelltext
Als Grundlage fr eine eziente Implementierung wurden anfangs ein Java Projekt erstellt, die grundlegenden Packages angelegt. Als Versionsverwaltung wurde Apache Subversion4 eingesetzt. Der Quelltext des L3T E-Books wird direkt ber den Quelltextordner src verwaltet, dabei spiegelt die Ordnerstruktur die Packagehierarchie wider.

Subversion Versionsverwaltung

14

KAPITEL 3. ANDROID L3T E-BOOK

3.5.2 Assets
Um Bilder und Texte direkt als Ressource im Quelltext verwenden zu knnen werden in Android Anhnge (Assets) verwendet. Diese knnen ber die dynamisch generierte Ressourcenklasse R angesprochen und eingebunden werden. Assets werden im E-Book fr die Anzeige der Lizenz und der Webverknpfungen verwendet.

3.5.3 Java Native Interface (JNI)


Native Quelltext sowie Bibliotheken werden im Ordner jni verwaltet. Dabei muss eine Anbindung an Java geschaen werden, um den Kontextwechsel zu ermglichen. ber make kann der vorhandene Quelltext einer Bibliothek einfach in eine dynamische Bibliothek kompiliert werden. Die kompilierten Bibliotheken werden im Ordner libs abgelegt und direkt in die Installationsdatei integriert.

3.5.4 Ressourcen
Drawables: Sie dienen zur Darstellung von Bildern im Interface. Dabei knnen Drawables in drei Qualittsstufen unterteilt werden. Android entscheidet selbststndig anhand von Displaygre welche Bilder in welcher Qualitt bei Ausfhrung der Applikation zum Einsatz kommen. Layout: Um ein grasches Benutzerinterface zu erstellen, knnen Layouts angelegt werden. Diese werden als XML Schema deniert. Knnen jedoch auch direkt ber den Interface Builder zusammengestellt werden. Basis fr den Interface Builder ist das angelegte XML Layout. Menu: Wie Layouts knnen auch Mens ber XML Schema deniert werden. Dabei gibt es wiederum die direkte Beschreibung ber XML, oder die Zusammenstellung per Benutzermen. Values: Mit Hilfe von Values ist es mglich Zeichenketten die im Quelltext verwendet werden, als Variablen zu denieren. Somit ist es nicht ntig Benennungen direkt im Quelltext zu hinterlegen. ES kann eine einfach bersetzung der Applikation in andere Sprachen erfolgen.

3.6. Aufbau und Packages

15

3.6 Aufbau und Packages


3.6.1 at.tugraz.l3t.main
Im Package main werden die grundlegenden Klassen der Applikation verwaltet. Die Anbindung der restlichen Packages erfolgt ber das main Package wie aus Tabelle 3.1 ersichtlich.
Klasse EBook Config MuPDFCore PixmapView Adapter OnItemClickListener OnItemLongClickListener ButtonHandler NotificationHandler Funktion Applikationsstart Kongurationsdatei fr diverse URLs und Speicherorte Bindeglied zwischen Java und MuPDF Darstellungsansicht fr das berechnete Bitmap Zustndig fr die Verwaltung der ListView Elemente Interface fr normale Berhrung Interface fr lange Berhrung Verwalter der Interfacebuttons Benachrichtigung des GUI-Threads aus einem HelperThread

Tabelle 3.1: Klassenbeschreibung fr at.tugraz.l3t.main

3.6.2 at.tugraz.l3t.book
Im book Package wird das E-Book als Klasse verwaltet, wobei sich diese Klasse book in Sektionen und Artikel aufteilt. Zustzlich beinhaltet das Package noch Dateispezikationen der PDF Artikel sowie den Parser fr die XML Daten. Die Artikelobjekte denieren die einzelnen PDF Artikel des L3T E-Books. Dabei werden die Metadaten der Artikel als Attribute gespeichert. Artikelobjekte werden zu Sektionen hinzugefgt, siehe Tabelle 3.2.
Klasse Article ArticleFile Book BookFactory Section XMLParser Funktion Verwaltungsklasse fr Artikel Verwaltungsklasse fr Artikeldateien (PDF) Verwaltungsklasse fr Sektionen Erzeugungsklasse fr Bcher aus XML Daten Verwaltungsklasse fr Artikel Analyse von XML Daten

Tabelle 3.2: Klassenbeschreibung fr at.tugraz.l3t.book

16

KAPITEL 3. ANDROID L3T E-BOOK

3.6.3 at.tugraz.l3t.helper
Das helper Package stellt Funktionen fr Kodierung, Dekodierung, Datenspeicherbereinigung und Objektserialisierung zur Verfgung, siehe Tabelle 3.3.
Klasse Base64Coder CleanStorage Serializer Funktion Klasse zur Kodierung und Dekodierung von Base64 Datenspeicherbereinigung Objektserialisierung

Tabelle 3.3: Klassenbeschreibung fr at.tugraz.l3t.helper

3.6.4 at.tugraz.l3t.worker
Das worker Package ist zustndig fr die Aktualisierungsfunktionalitt. Der Aktualisierungsprozess luft ber einen eigenen Thread im Hintergrund. Die Benutzeroberche wird nicht durch den Aktualisierungsvorgang beeinusst, siehe Tabelle 3.4.
Klasse Updater XMLUpdater Funktion Zustndig fr das Aktualisieren der PDF Artikel Dateien Zustndig fr das Aktualisieren der Buchstruktur und Artikelversionen

Tabelle 3.4: Klassenbeschreibung fr at.tugraz.l3t.worker

3.6.5 at.tugraz.l3t.annotation
Das annotation Package stellt die Funktionen fr die Anmerkungen zur Verfgung. Dabei werden die einzelnen Anmerkungen ber einen separate Verwaltungsklasse sortiert. Anmerkungsobjekte beinhalten den Text sowie die Position, siehe Tabelle 3.5.
Klasse Annotation AnnotationManager Annotations Funktion Anmerkungsobjekt mit Positionsangaben und Text Verwalter fr eine Anmerkungssammlung Anmerkungssammlung

Tabelle 3.5: Klassenbeschreibung fr at.tugraz.l3t.annotation

3.7. PDF Datenmanagement

17

3.6.6 at.tugraz.l3t.bookmark
Das bookmark Package stellt die Funktionen fr die Lesezeichen zur Verfgung. Lesezeichen werden ber einen Dialog angelegt und knnen per Optionsmen aus einem Listendialog jederzeit abgerufen werden, siehe Tabelle 3.6.
Klasse Bookmark BookmarkDialog BookmarkManager Funktion Lesezeichen mit Positionsangaben und Benennung Eingabedialog fr neue Lesezeichen Verwaltungsklasse fr Lesezeichen

Tabelle 3.6: Klassenbeschreibung fr at.tugraz.l3t.bookmark

3.6.7 at.tugraz.l3t.marker
Das marker Package, siehe Tabelle 3.7, stellt die Markierungsfunktion zur Verfgung. Dabei kann der Markierer als Stift oder zum Hervorheben verwendet werden, zustzlich gibt es einen Benutzerdialog fr die Auswahl der gewnschten Stiftfarbe. Fr einen stufenlosen bergang beim Zoomen, wird der Pfad gespeichert um fr jede Zoomstufe die genau Skalierung zu erzeugen.
Klasse MarkerManager MarkerPoint MarkerPath MarkerPaths ColorPickerDialog Funktion Verwaltungsklasse fr Markierungen XY Koordinatenpunkt fr den Pfad Pfad aus einer Punktmenge Verwaltungsklasse fr Pfade Benutzerdialog fr die Farbauswahl

Tabelle 3.7: Klassenbeschreibung fr at.tugraz.l3t.marker

3.7 PDF Datenmanagement


Die einzelnen Artikel des L3T-E-Books werden als PDF-Dateien frei zugnglich ber die L3T-Redaktionsplattform verwaltet und organisiert. Die PDF-Artikel werden mit Hilfe von HTTP-Requests ber diese Redaktionsplattform bezogen.

18

KAPITEL 3. ANDROID L3T E-BOOK

3.7.1 Denition ber XML


Das L3T Buch wird ber ein Serverscript als XML Datei geladen. Die XML Denition die ber dieses Interface bezogen wird, beinhaltet das komplette L3T Buch inklusive der Metadaten zu den einzelnen Kapiteln und Artikeln. In Abbildung 3.1 ein exemplarischer Aufbau der XML Struktur der per HTTP-Request erhaltenen XML Daten.
<ojs type="sections"> <issue id="1"> <issueTitle>L3T Buch</issueTitle> ... <data> <section id="17"> <sectionTitle>Spezial</sectionTitle> <data> <article id="1"> <title>Title</title> ... <files> <file> <fileUrl>...</fileUrl> <fileSize>2122780</fileSize> ... <originalFileName>example.pdf</originalFileName> <md5checksum>...</md5checksum> </file> </files> ...

Listing 3.1: Serverseitige XML Daten

3.7.2 XML Parsing


Die XML-Daten werden mit Hilfe des org.w3c.dom Packages zerlegt, und anschlieend in die entsprechende Datenstruktur verpackt. Die XML Parser Klasse verwendet dabei Element, Node und Nodelist um die XML Tags aufzulsen. Es werden die Attribute und Textinhalte als book Objekte im Speicher hinterlegt. Die Klasse book stellt die Basis fr das aktuelle L3T Buch dar.

3.7.3 Lokale XML Denition


Um Buchdenition nicht bei jedem Start der Anwendung vom Server neu laden zu mssen, wird lokal ein eigenes XML-Dokument erzeugt. Der Aufbau ist identisch

3.8. Konguration

19

des vom Server bertragenen XML-Dokuments, jedoch werden einige berssige Metadaten verworfen, da sie fr die Anwendung nicht relevant sind.

3.7.4 Externer Speicher


Fr das Laden der PDF-Daten ist ein eigener Thread zustndig. Dieser Thread vergleicht anhand der Dateigre ob eine bestimmte Datei auch korrekt bertragen wurde. Dabei wird die Angabe ber die Gre aus den Metadaten extrahiert. Gespeichert werden die PDF-Artikel direkt in den externen Speicher. Als Dateiname fungiert der Dateiname aus den Metadaten.

3.7.5 Aktualisierung und Versionsverwaltung


Bei jedem Anwendungsstart wird berprft ob eine neue Version des Buches vorhanden ist. Dabei wird ein neues XML-Dokument vom Server geladen und mit dem aktuellen lokalen Bestand des L3T-Buches verglichen. Die BenutzerInnen werden ber eine neue Version benachrichtigt, und knnen den Aktualisierungsvorgang starten. Die AnwenderInnen haben die Wahl die alten Artikel zu berschreiben oder mehrere Versionen eines Artikels parallel zu verwalten. Die neuen PDF-Dokumente werden einfach anhand ihres Dateinamens auf dem externen Speicher abgelegt, da der Dateiname auch die Versionsnummer beinhaltet. Aktualisierungen knnen auch manuell vorgenommen werden.

3.8 Konguration
Um die Konguration der Applikation schnell ndern zu knnen, wurde die Konguration in eine eigene selbststndige Klasse verlegt, und als Singleton implementiert. Die Konguration steht durch dieses Designmuster der gesamten Anwendung zur Verfgung. Auerdem werden in der Konguration die Datenspeichernamen fr die Lesezeichen, Markierungen und Anmerkungen deniert. Der Speicherort fr die geladenen PDF-Artikel kann ebenfalls ber die Kongurationsklasse deniert und gendert werden.

20

KAPITEL 3. ANDROID L3T E-BOOK

3.9 Manifest
Das Android-Manifest muss bei jeder Android-Applikation vorhanden sein, es bendet sich im Wurzelverzeichnis des Projektes. Im Manifest werden Metadaten zum Projekt deniert. Denition des Einstiegspunktes in die Applikation und Basis Package des Quelltextes sind Pichtangaben, ohne diese Angaben ist die Applikation nicht lauhig. Auerdem mssen Versionsnummer und Versionscode eingetragen werden, um bei der Verentlichung von neuen Versionen der Applikation einen reibungslosen Aktualisierungsvorgang zu ermglichen. Das Manifest gliedert sich in mehrere Bereiche.

3.9.1 Manifest
Im Abschnitt Manifest werden wie bereits erwhnt Versionsnummer und Versionscode. eingetragen. Auerdem muss ein eindeutiger Packagename eingetragen werden um Kollisionen mit anderen Softwareanwendung auszuschlieen. Fr das L3T E-Book wurde das Wurzelpackage mit at.tugraz.l3t deniert. Somit mssen alle Subpackages als Prx das Wurzelpackage im Namen tragen, um eine Eindeutigkeit zu gewhrleisten.

3.9.2 Application
Im Application Abschnitt knnen weitere Metadaten abhngig vom Projekt eingetragen werden. Dabei knnen Einstellungen fr den Applikationsname und das Applikationssymbol getroen werden. Zustzlich knnen noch weitere Daten optional angegeben werden. Der Application Abschnitt bietet auch Einstellungsmglichkeiten fr Debuggingarbeiten 5 des Quelltextes.

3.9.3 Permissions
Eine wichtige Sektion im Manifest stellt der Bereich Permissions dar. ber diesen Bereich werden die Rechte der Applikation deniert. Um Anwendungen in ihren Berechtigung einzuschrnken, und somit das Sicherheitsrisiko der EndbenutzerInnen zu minimieren, mssen Rechte fr bestimmte Vorgnge im System explizit angefordert werden. Es existiert eine sehr umfangreiche Liste der einstellbaren Rechte fr das System. Bei Installation auf einem mobilen Gert werden die AnwenderInnen ber diese Zugrisrechte der Applikation informiert und mssen diese besttigen. Die BenutzerInnen knnen anhand der Auistung der Berechtigungen entscheiden, ob sie die jeweiligen
5

Fehlersuche und Fehlerbereinigung

3.10. Anwendungsdaten

21

Anwendungen auf ihrem Gert installieren mchten, und ob die Zugrisrechte der Applikation gerechtfertigt sind. Der E-Book Anwendung wurden folgende Rechte erteilt [BP10]. android.permission.INTERNET Dient zur Freigabe der Internetverbindung. Es spielt dabei keine Rolle ber welches Interface sich das Gert zum Internet verbindet. Es wird bentigt um das serverseitige XML-Dokument des Buches zu laden, sowie das Laden der einzelnen PDF-Artikel. android.permission.ACCESS_NETWORK_STATE Dient zur Feststellung der Verfgbarkeit des Internetzugris. Die Applikation muss feststellen ob das Gert eine Verbindung hergestellt hat, bevor Daten geladen werden knnen. android.permission.WRITE_EXTERNAL_STORAGE Dient zur Freigabe des externen Datenspeichers. Da die PDF-Dateien nicht direkt auf dem Speicher abgelegt werden drfen, muss eine Freigabe fr den externen Speicher erfolgen.

3.10 Anwendungsdaten
Um einen frheren Zustand nach Ausfhrung einer Applikation wieder herzustellen, ist es erforderlich Daten zu einem Programmzustand zu speichern. Im L3T E-Book stellen Lesezeichen, Markierungen und Anmerkungen diese Anwendungsdaten dar. Diese Daten mssen von der Anwendung korrekt gespeichert werden, um nach Beendigung und Neustart der Anwendung wieder zur Verfgung zu stehen. Die Android Plattform bietet verschiedene Anstze um Anwendungsdaten zu speichern [And11b]. Shared Preferences werden als Schlssel-Wert Paare gespeichert. Jeder Schlssel ist eindeutig, und verweist auf einen eingetragenen Wert. Dabei knnen beliebig viele dieser Datenstrukturen von System angefordert werden. Dabei werden Shared Preferences unter Android als Map geladen. Modiziert werden diese Maps ber die Editor Klasse. Mit der es mglich ist viele Eintrge zu ndern und anschlieend die nderungen zu speichern. Die Shared Preferences Methode ist wenn mglich zu verwenden, da sie einen schnellen Zugri auf Daten ermglicht. Internal Storage wird zur privaten Dateispeicherung verwendet. Es ist mglich Dateien auf dem internen Speicher des Gertes abzulegen. Dabei sind die Daten von anderen Applikation am Gert isoliert. Auch dem Benutzer und der Benutzerin

22

KAPITEL 3. ANDROID L3T E-BOOK ist es nicht mglich auf diese Daten zuzugreifen. Bei einer Deinstallation werden diese Dateien mit der Anwendung gelscht. External Storage stellt das Pendant zu Internal Storage dar. Dabei knnen Daten auf dem externen Speicher von beliebigen Anwendungen gelesen und auch modiziert werden. Diese Speicherform kommt fr die PDF-Dateien zum Einsatz, da die BenutzerInnen die Dateien auch komfortabel in anderen PDF Anwendungen nen knnen. SQLite Databases werden von Android ebenfalls untersttzt. Dabei ist es mglich Daten per Structured Query Language (SQL) Dialekt in der Datenbank zu adressieren. Kann bei relationalen Daten eingesetzt werden. Network Connection knnen ebenfalls benutzt werden um Daten zu speichern. Dabei ist jedoch auf die Verfgbarkeit des Netzes sowie des Datenservice zu achten.

Fr das L3T E-Book werden fr die Funktionalitt der Lesezeichen, Markierungen und Anmerkungen, Shared Preferences eingesetzt. Wobei jede Funktionen ihr eigene unabhngige Shared Preference zur Verfgung hat.

3.10.1 Lesezeichen
Der Lesezeichen Schlssel wird aus Dateinamen, Doppelkreuz (#) und Seitennummer eingetragen. Als Wert wird der Lesezeichenname gespeichert. Bei Programmstart werden alle Schlssel-Wert Paare ausgelesen. Wird ein neues Lesezeichen angelegt so wird diese direkt gespeichert. In Tabelle 3.8 der Aufbau der Lesezeichendaten.
Syntax Beispiel Schlssel Dateiname#Seitennr. Beispiel.pdf#67 Wert Lesezeichenname Beispiellesezeichen

Tabelle 3.8: Aufbau der Lesezeichendaten

3.10.2 Markierungen
Markierungen sind identisch wie Lesezeichen organisiert, jedoch wird als Wert ein serialisierter String aus einer Liste von Pfaden gespeichert. So knnen mehrere Pfade auf einer Seite als ein Wert gespeichert werden. Dabei speichert jeder einzelne Pfad seine Attribute (Farbe, Strke und Positionspunkte). Es werden keine Bitmaps gespeichert, da eine stufenlose Skalierung der Markierungen bei einem Zoomvorgang notwendig ist. Attribute der Pfade werden in Tabelle 3.9 auf der nchsten Seite nicht dargestellt.

3.11. GNU General Public License


Schlssel Dateiname#Seitennr. Beispiel.pdf#67 Wert [Pfade [Pfad [Pos [XY], Pos[]]],[...]] [[P=1 [X=1,Y=1], [X=2,Y=5]],[P=2 ...]]

23

Syntax Beispiel

Tabelle 3.9: Aufbau der Markierungsdaten

3.10.3 Anmerkungen
Auch Anmerkungen wurden in ihrer Struktur hnlich konzipiert. Dabei wurden ebenfalls eine Anmerkungsliste serialisiert und als Wert abgelegt. In Tabelle 3.10 der Aufbau der Anmerkungsdaten.
Syntax Beispiel Schlssel Dateiname#Seitennr. Beispiel.pdf#67 Wert [Anm. [A1 [Pos [XY]],[Text]],[A2 ...]] [[A1 [X=1,Y=1],[Text...]],[A2 ...]]

Tabelle 3.10: Aufbau der Anmerkungsdaten

3.11 GNU General Public License


Durch den Einsatz der MuPDF Bibliothek und deren GNU-GPL-Lizenzierung, wurde dieses Lizenzmodell auch auf das Android-L3T-E-Book angewendet. Durch das Copyleft wird garantiert das unter GNU-GPL stehende Software bei deren Einsatz und Weiterentwicklung frei bleibt [GNU11].

4 Android Market
4.1 Allgemein
ber den Android Market ist es mglich neue Software auf einem Android Endgert zu installieren. Bei einem Groteil der Android Gerte ist die Android-Market-Applikation vorinstalliert. Diese Applikation ermglicht den Zugri auf den Android Market und dessen Inhalt. Der Android Market umfasst derzeit rund 500.000 Anwendungen, und der Markt wchst monatlich um 30.000 zustzliche Anwendungen. Die angebotenen Anwendungen gliedern sich grundstzlich in kostenpichtige und kostenlose Applikationen. Um kostenpichtige Applikationen erwerben zu knnen, ist ein Google Checkout Konto notwendig. Kostenlose Anwendungen bentigen keine Google Checkout Konto. Durch das enorme Wachstum der Android-Plattform, stellt der Android Market den Softwareentwicklern eine neue Plattform zur Softwarevertreibung zur Verfgung. Der gesamte Umsatz betrgt rund 5 Millionen Euro pro Monat [Wik11a]. Es existieren noch weitere Anwendungen und Mrkte die den Endbenutzer mit Software versorgen knnen. Es ist keine Lizenz notwendig um einen eigenstndigen Market zu etablieren, da Android ein oenes und freies Betriebssystem ist, jedoch erreichen diese eigenstndigen Mrkte nicht die Durchdringung wie der Android Market. Grundstzlich knnen Applikationen jedoch auch ber den konventionellen Weg vertrieben werden, um die Abgaben fr den Android Market zu vermeiden.

4.2 APK Datei


Das Android-APK-Dateiformat ist hnlich dem JAR-Dateiformat. Smtliche Anwendungsdateien werden zu einer APK-Datei komprimiert. Dabei werden Programmcode, Ressourcen, Assets, Zertikate und Manifest Dateien in diese APK-Package gepackt. Der groe Vorteil ist die einfache Verbreitung einer einzelnen Datei als gesamtes Anwendungspaket. Das Android APK wird auch bei einer Verentlichung im Android Market als Paket bentigt [Wul10].

24

4.3. Entwicklerkonto

25

4.3 Entwicklerkonto
Um eine Applikation im Android Market zu verentlichen, wird eine Google-Entwicklerkonto bentigt. Dieses Konto kann von jedermann beliebig angelegt werden. Kostenlose Anwendungen knnen sofort nach Erstellung eines solchen Entwicklerkontos komfortabel ber ein Webinterface im Market platziert werden. Um eine kommerzielle Applikation im Android Market anzubieten, muss das Entwicklerkonto zustzlich mit einem Google Checkout verbunden werden, da alle Umstze ber dieses Checkout-Konto laufen. Endbenutzer die im Android-Market-Software erwerben wollen, mssen ebenfalls ein Checkout-Konto besitzen.

4.3.1 Google Checkout


Google-Checkout ist ein online Bezahlsystem. Um ein Checkout-Konto bei Google anlegen zu knnen, mssen einige persnliche Daten angegeben werden. Zustzlich muss der Ersteller ber eine Kreditkarte oder Debitkarte verfgen, um Transaktionen durchfhren zu knnen. Google-Checkout ist bislang die einzige Mglichkeit um kostenpichtige Software aus dem Android Market zu beziehen.

4.4 Verentlichung
Die Verentlichung im Android Market erfolgt nach Erstellung des Entwicklerkontos. ber das Webinterface knnen neue Applikationen erstellt werden. Dabei ist im ersten Schritt anzugeben ob eine Anwendung kostenpichtig oder kostenfrei ist. Ein nachtrglicher Wechsel von kostenfrei auf kostenpichtig ist nicht mehr mglich. Deshalb sollte schon vorab die Entscheidung ber die Kommerzialisierung des Projekts getroen werden. Es mssen noch weitere Angaben gemacht werden um die Applikation im Market freizugeben, dazu zhlen: Bildschirmfotos der Anwendung, Kategorisierung, Einsatzgebiet der Anwendung, Sprachspezikationen, Inhaltsbewertung, Regionen fr den Verkauf, Kontaktinformationen [Wul10].

4.4.1 APK Signierung


Vor der Verentlichung der APK-Datei muss diese signiert werden, um den Entwickler eindeutig identizieren zu knnen. Das Signieren kann mit Hilfe des Eclipse ADT-Plugins geschehen. Jede Aktualisierung der Software zieht einen neuen Signierungsprozess der aktuellen APK-Datei nach sich. Die neue APK-Datei muss dabei wieder mit demselben privaten Schlssel signiert werden, wie er in der Erstversion der Applikation eingesetzt

26

KAPITEL 4. ANDROID MARKET

wurde. Somit soll sichergestellt werden das die APK-Dateien von der original Quelle stammen, und kein Schadcode installiert wird. Verwaltet werden diese Schlssel mit Hilfe von Keystores. Das Android L3T E-Book wurde mit dem RSA1 Verfahren und 2048 Bit verschlsselt, dies sollte eine langfristige Sicherheit bezglich Flschungen gewhrleisten [Wul10].

Asymmetrisches kryptographisches Verfahren

5 Fazit und Ausblick


5.1 Allgemein
Durch den rasanten Anstieg an Smartphones und anderen mobilen Gerten in den vergangenen Jahren, hat sich ein neuer Markt fr die Softwareentwicklung etabliert. Dieser Markt beinhaltet ein sehr groes Potential, denn das Spektrum an mobilen Gerten ist nicht annhernd erschpft. Fr diese neue Gertegeneration muss auch neue Software entwickelt werden, da Technologien wie Touchscreens, GPS1 Sensorik und viele weitere, immer angepasste Software bentigen. Durch diese Technologien ndert sich auch Benutzerinterface und deren Eingabemethoden [ZB10].

5.2 Android
Android ist ein sehr schnell wachsendes kosystem, und durch die Oenheit der Plattform kann jedermann Software fr dieses System anbieten. Die Android API wird stndig erweitert, und bietet fr EntwicklerInnen ein komfortables Basisrepertoire an Funktionen. Durch die Oenheit und Freiheit eines Systems wie Android, ergeben sich auch Probleme bezglich der Software. So wird Android auf vielen verschiedenen Gerten eingesetzt und die Hardwarehersteller passen Android dementsprechend an deren Hardware an und bieten kaum Aktualisierungen an. Dies spiegelt sich in einer groen Vielfalt an im Umlauf bendlichen Android Versionen wider. EntwicklerInnen mssen ihre Software gegenber verschiedenen API Levels kompatibel halten, um eine breite Masse an Endbenutzern zu erreichen. Diese Fragmentierung ist aktuell noch ein Problem der Android Plattform. Abhilfe soll Android ab Version 4 schaen, da Entwicklungslinien zusammengefhrt werden sollen [ZB10].

Satellitengesttztes Positionierungssystem

27

Akronymliste
PDF DVM SDK AVD GPL API NDK JSE JE AWT JIT ADT XML GUI JNI SQL APK JAR GPS IDE Portable Document Format Dalvik Virtual Machine Software Development Kit Android Virtual Device General Public License Application Programming Interface Native Development Kit Java Standard Edition Java Micro Edition Abstract Window Toolkit Just in time Android Development Tools Extensible Markup Language Graphical User Interface Java Native Interface Structured Query Language Android Package Java Archive Global Positioning System Integrated Development Environment

HTTP Hypertext Transfer Protocol

28

Literaturverzeichnis
[And10] Android: Android 2.2 Compatibility Denition. http://static. googleusercontent.com/external_content/untrusted_dlcp/source. android.com/de/compatibility/android-2.2-cdd.pdf, November 2010

[And11a] Android: Android 4.0 Platform. http://developer.android.com/sdk/ android-4.0.html, November 2011 [And11b] Android: Android Data Storage. http://developer.android.com/guide/ topics/data/data-storage.html, November 2011 [And11c] Android: Android Developer Reference. http://developer.android.com/ reference/packages.html, November 2011 [And11d] Android: Android Security Overview. http://source.android.com/tech/ security/index.html, November 2011 [And11e] Android: Bytecode for the Dalvik VM. http://source.android.com/ tech/dalvik/dalvik-bytecode.html, November 2011 [Art11] [Bac10] [BP09] ArtifexSoftware: MuPDF - a lightweight PDF and XPS viewer. http: //www.mupdf.com/, November 2011 Bach, Mike: Mobile Anwendungen mit Android: Entwicklung und praktischer Einsatz. 1. Addison-Wesley, 2010. 480 S. Becker, Arno ; Pant, Marcus: Android: Grundlagen und Programmierung. Heidelberg : dpunkt, 2009 http://www.dpunkt.de/buecher/3436. html - November 2011 Becker, Arno ; Pant, Marcus: Android 2: Grundlagen und Programmierung. 2. Dpunkt Verlag, 2010. 427 S. Burnette, Ed: Hello, Android: Introducing Googles Mobile Development Platform. 3. Pragmatic Programmers, 2010. 300 S. Eclipse: The Eclipse IDE. http://eclipse.org/, November 2011 Filbert, James: Developing a Multi-Purpose Chat Application for Mobile Distributed Systems on Android Platform / Helsinki Metropolia University of Applied Sciences. 2010. Forschungsbericht

[BP10] [Bur10] [Ecl11] [Fil10]

29

30

Literaturverzeichnis

[Gar11a] Gargenta, Marko: Einfhrung in die Android-Entwicklung. 1. OReilly, 2011. 248 S. [Gar11b] Gargenta, Marko: Using NDK to Call C code from Android Apps. http: //marakana.com/forums/android/examples/49.html, November 2011 [Gar11c] Gartner: Mobile Devices Grew. http://www.gartner.com/it/page.jsp? id=1848514, November 2011 [GBG11] Grgurina, Robi ; Brestovac, Goran ; Grbac, Tihana G.: Development environment for Android application development: An experience report. In: MIPRO, IEEE, 2011. ISBN 9781457709968, 1693-1698 [GNU11] GNU: GNU General Public License. http://www.gnu.org/copyleft/gpl. html, November 2011 [Goo11a] Google: The Android SDK. http://developer.android.com/sdk/index. html, November 2011 [Goo11b] Google: Appinventor. http://www.appinventorbeta.com/about/, November 2011 [Goo11c] Google: The Developers Guide. http://developer.android.com/guide/ index.html, November 2011 [Goo11d] Google: What is the NDK? http://developer.android.com/sdk/ndk/ overview.html, November 2011 [Gra11] [Kra11] Gramlich, Nicolas: andbook! 2. http://andbook.anddev.org/files/ andbook.pdf, 2011 Kraemer, Frank A.: Engineering Android Applications Based on UML Activities. In: Whittle, Jon (Hrsg.) ; Clark, Tony (Hrsg.) ; Khne, Thomas (Hrsg.): MoDELS Bd. 6981, Springer, 2011 (Lecture Notes in Computer Science). ISBN 9783642244841, 183-197 Krger, Guido ; Stark, Thomas: Handbuch der Java-Programmierung: Standard Edition. 6. Addison-Wesley Longman Verlag, 2009. 1356 S. Pettey, Christy ; Stevens, Holly: Mobile Communication Devices Sold Worldwide in First Quarter 2011. http://www.gartner.com/it/page.jsp? id=1689814, November 2011 Samsung: Galaxy Tab P1000 Spezikationen. http://www.samsung.com/ at/consumer/mobile-phone/tablets/tablets/BGT-P1000/index.idx? pagetype=prd_detail&tab=specification, November 2011

[KS09] [PS11]

[Sam11]

Literaturverzeichnis [Sch09]

31

Schmitz, Marco A.: Entwicklung einer Applikation fr mobile Endgerte mit Anbindung an bestehende Server-Software / Fachhochschule Dortmund. 2009. Forschungsbericht Simmonds, Chris: What else can you do with Android? http: //www.embedded-linux.co.uk/downloads/android-tutorial/TU-3. 2-handout-Simmonds.pdf, November 2011 Speckmann, Benjamin: The Android mobile platform / Eastern Michigan University. 2008. Forschungsbericht Ullenboom, Christian: Java ist auch eine Insel: Das umfassende Handbuch. 9. Galileo Computing, 2010. 1480 S.

[Sim11]

[Spe08] [Ull10]

[Wik11a] Wikipedia: Android Market. http://de.wikipedia.org/wiki/Android_ Market, November 2011 [Wik11b] Wikipedia: Wikipedia. http://de.wikipedia.org/, November 2011 [Wul10] [ZB10] Wulis, Artiom: Publishing of Android Applications / Universitt Hamburg. 2010. Forschungsbericht Zeppenfeld, Klaus ; Bollmann, Tilman: Mobile Computing. 1. W3L GmbH, 2010. 240 S.