iPad Ebook Reader Application

Bachelorarbeit

vorgelegt von

Max Leingartner

Technische Universit¨ t Graz a Institut f¨ r Informationssysteme und Computer Medien u Betreuer: Univ.-Doz. Dipl.-Ing. Dr.techn. Martin Ebner 25. Oktober 2011

Zusammenfassung Die L3T App ist eine Anwendung f¨r das iPad von Apple und ist im Grunde u ein digitales Buch. Mit dieser App kann man alle Kapitel des Lehrbuchs f¨r u Lernen und Lehren mit Technologien herunterladen und lesen. Es besteht auch die M¨glichkeit Lesezeichen zu verwalten, Annotationen hinzuzuf¨gen und Text o u zu markieren. F¨r Pr¨sentationszwecke ist auch ein eigener Pr¨sentationsmodus u a a eingebaut worden, mit dem sich alle Inhalte durch Projektion auf einem Bildschirm oder Leinwand pr¨sentieren lassen. a

Inhaltsverzeichnis
1 Einleitung 1.1 Was ist eine “App”? . . 1.2 Was ist ein Tablet-PC? . 1.2.1 iPad . . . . . . . 1.3 Was ist ein eBook? . . . 2 Aufgabenstellung 3 Verwendete Technologien 3.1 Objective-C . . . . . . . 3.2 Xcode . . . . . . . . . . 3.3 Cocoa Touch . . . . . . 3.4 SQLite . . . . . . . . . . 3.5 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 2 3 4 5 6 6 10 10 11 11 12 12 12 12 13 13 13 13 14 14 15 15 17 18 19 19 20 21 22 23 26 27 30 31

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

4 Hauptbestandteile der App 4.1 UIView . . . . . . . . . . . . 4.2 UIViewController . . . . . . . 4.3 UINavigationController . . . 4.4 UITableView . . . . . . . . . 4.5 Modal View Controllers . . . 4.6 UIScrollView . . . . . . . . . 4.7 UIPopoverController . . . . . 4.8 CGPDFDocument Reference 4.9 UIAlertView . . . . . . . . . 5 Die L3T App 5.1 Kapitelauswahl . . . . . . . . 5.2 PDF View . . . . . . . . . . . 5.2.1 Aufbau . . . . . . . . 5.2.2 Notizen . . . . . . . . 5.2.3 Markierungen . . . . . 5.2.4 Lesezeichen . . . . . . 5.3 L3T Browser . . . . . . . . . 5.4 Download View . . . . . . . . 5.5 Datenverwaltung (CoreData) 5.6 Pr¨sentations-Modus . . . . . a 6 Anwendung 7 Diskussion 8 Ausblick

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

1

1
1.1

Einleitung
Was ist eine “App”?

Das Wort “App” [1] ist eine Kurzform f¨r das englische Wort “Application”. u Damit sind generell Anwendungen gemeint, die auf einem Betriebssystem installiert sind. Mittlerweile assoziiert man mit dem Wort “App” eigentlich immer ein Programm das f¨r Smartphones oder Tablet-Computer ausgelegt ist. Diese Apu ps werden dann uber den herstellerspezifischen Shop, der direkt uber das Ger¨t a ¨ ¨ erreichbar ist, heruntergeladen und installiert. Die Anzahl an unterschiedlichen Apps ist sehr groß, so gibt es zahlreiche Spiele, B¨roanwendungen, Ratgeber, Apps zur Unterhaltung und f¨r Sport. Bei Apple u u heißt dieser Shop zum Beispiel “App Store”, dieser ist im Moment (Juni 2011) der Gr¨ßte seiner Art und f¨hrt uber 350 000 Apps [2] in seinem Sortiment. o u ¨

1.2

Was ist ein Tablet-PC?

Ein Tablet-PC ist ein kleiner, tragbarer Computer der per Stift oder dem Finger mittels Touchscreen bedient werden kann. Das Wort “Tablet” kommt aus dem englischen und bedeutet so viel wie “Notizblock”, womit der intendierte Zweck eines Tablet-PC’s schon beschrieben ist. Mittlerweile jedoch hat sich der Anwendungsbereich eines solchen Tablet’s stark vergr¨ßert. Man kann damit im Internet surfen, B¨cher lesen, Filme anschauen o u und sogar andere elektronische Ger¨te steuern, sofern man die passenden Apps a dazu hat. Eines der bekanntesten Beispiele ist sicherlich das von der Firma Apple.

2

1.2.1

iPad

Abbildung 1: Apple iPad.1 Das iPad (siehe Abbildung 1) ist ein Tablet-Computer der prim¨r mit den Fina gern des Nutzers bedient wird. Es besteht praktisch nur aus einem ber¨hrungsempfindlichen u Bildschirm ohne eingebaute Tastatur oder eines Zeigeger¨tes. Die Tastatur wird, a wenn ben¨tigt, vom Programm aus- bzw eingeblendet. Es sind verschiedene o Multi-Touch-Gesten vorhanden, die einem den Aufruf von Funktionen erleichtern und so die Benutzung vereinfachen. Beispielsweise reicht es die Finger zu spreizen um in ein Bild hinein zu zoomen. Mit dem iPad ist Apple auch ein großer Vertreter am Musik-, Video- und eBookMarkt. Vor allem elektronische Zeitschriften und Zeitungen erfreuen sich immer gr¨ßerer Beliebtheit. Diese Medien sind meist auch durch einen interaktiven o Teil erweitert, sodass sich auch Videos, Bildergalerien und Animationen als zus¨tzliche Inhalte anzeigen lassen. a Auch die Anzahl an verf¨gbaren Apps im App Store ist beachtlich. Von den ca. u 350 000 Apps sind uber 65 000 Apps speziell f¨r das iPad entwickelt worden. u ¨ Das Produkt wurde am 27. Januar 2010 vor internationaler Presse vorgestellt. Am 3. April 2010 kam die erste Generation des iPads in den USA auf den Markt. Ein Monat nach Verkaufsstart wurden bereits eine Million St¨ck verkauft. Bis u Februar 2011 gingen weltweit 15 Millionen Einheiten uber den Ladentisch. [3] ¨
1 http://www.lesen.net/wp-content/gallery/apple-tablet/hardware-01-20100127.jpg

3

1.3

Was ist ein eBook?

Ein eBook, im deutschen E-Book, ist dem Namen nach ein elektronisches Buch. So sind herk¨mmliche B¨cher auch am Computer oder eben einem Tablet leso u bar. So hat man immer seine gesamte Bibliothek bei der Hand ohne viel Platz zu beanspruchen. Vor allem in den letzten Jahren kann man eine deutliche Bewegung in Richtung eBook-Markt erkennen. Es gibt spezielle Leseger¨te, die a nur auf darauf ausgelegt sind solche eBooks darzustellen, sogenannte e-Reader. e-Reader unterscheiden sich zwar technologisch stark von Tablets aber verfolgen das gleiche Ziel. Als Beispiel gibt es den Kindle von Amazon (siehe Abbildung 2) oder den Sony Reader. Auch das iPad hat seinen eigenen eBook-Store in dem eBook erworben werden k¨nnen[4]. o

Abbildung 2: Amazon Kindle.2

2 http://www.androidapptests.com/wp-content/uploads/2011/04/Amazon-Kindle-2.jpg

4

2

Aufgabenstellung

Das Ziel der Arbeit besteht darin, das Lehrbuch f¨r Lehren und Lernen mit u Technologien (L3T) mit all seinen Kapiteln am iPad als E-Book zug¨nglich zu a machen und dessen Potentiale aufzuzeigen. Dabei sollen die einzelnen Kapitel zuerst von der L3T Homepage3 auf das iPad geladen werden, sodass man nicht st¨ndig mit dem Internet verbunden sein muss um ein Kapitel zu lesen. a Des Weiteren ist eine bestimmte Kapitel-Auswahl Ansicht erw¨nscht, anhand u deren es einfach sein soll bestimme Kapitel auszuw¨hlen oder zu l¨schen. a o Zus¨tzliche Features wie ein Lesezeichen Men¨ oder ein Web Browser mit Ina u halten rund um das Thema L3T sind ebenfalls angedacht. Bei der Anzeige der Kapitel wird Wert auf eine einfache Bedienung gelegt. Der Benutzer oder die Benutzerin soll in der Lage sein Notizen und Lesezeichen hinzuzuf¨gen und die M¨glichkeit haben Textstellen zu markieren oder zu kennu o zeichnen. F¨r Pr¨sentationen w¨re es auch sinnvoll einen Modus einzubauen, in dem der u a a Inhalt des Bildschirms auf einen externen Monitor oder auf eine Leinwand projiziert wird.

3 http://l3t.tugraz.at/index.php/LehrbuchEbner10

5

3

Verwendete Technologien

¨ Ein kurzer Uberblick mit einer Beschreibung der verwendeten Technologien soll Verst¨ndnis der nachfolgenden Kapitel erleichtern. a

3.1

Objective-C

Objective-C ist eine objektorientierte Programmiersprache und eine Erweiterung der Programmiersprache C. Diese Programmiersprache wird am h¨ufigsten a verwendet von Mac OS X und GNUstep. Objective-C wurde haupts¨chlich von Brad Cox und Tom Love in den 80er Jaha ren bei PPI, sp¨ter Stepstone, entwickelt, sp¨ter dann von NeXT in die GNU a a Compiler Collection integriert, um als Basis f¨r NextStep zu dienen. u Objective-C 2.0: Im Oktober 2007 hat Apple mit Mac OS X 10.5 Objective-C 2.0 ausgeliefert, eine Erweiterung von Objective-C, die moderne Garbage Collection, Synta” xerweiterungen, Verbesserungen der Laufzeitleistung und 64-Bit-Unterst¨tzung u umfasst“ [5] . Die GNU Laufzeitumgebung f¨r Objective-C unterst¨tzt diese Erweiterungen u u seit GCC 4.6. Wesentliche Eigenschaften: - Dynamisches Binden - Dynamische Typisierung und typloses id - Nachrichten - Kategorien - Protokolle - RTTI/Reflexion - Klassenobjekte

6

Syntax Die Syntax soll an einem Beispiel kurz erkl¨rt werden: a // Klassenbezeichnung und Ableitung @interface Bruch : NSObject < Protokoll > // Instanzvariablen, f¨r jede Instanz angelegt. u { NSInteger zaehler; NSInteger nenner; } // Eigenschaften der Instanzen @property( assign ) NSInteger zaehler; @property( assign ) NSInteger nenner; // Methoden: - (void) printLn; - (float) floatValue; @end Klassenbezeichnung und Ableitung: @interface Bruch : NSObject < Protokoll > Jede Klasse beginnt mit einem @interface, darauf folgt der Name der Klasse. Nach dem Doppelpunkt wird die jeweilige Basisklasse angegeben. In den spitzen Klammern werden benutzte Protokolle angegeben. Instanzvariablen: In den geschweiften Klammern findet man die Instanzvariablen. NSInteger zaehler; NSInteger nenner; Mit Anweisungen wie @public, @private, @protected und @package kann man die Sichtbarkeit der Variable steuern. - public Bedeutet dass jeder auf die Variable zugreifen darf - private Bedeutet dass der Zugriff nur im Code derselben Klasse oder abgeleiteten Klassen erfolgen darf - package Bedeutet dass der Zugriff nur in Klassen des Frameworks erfolgen darf 7

- protected Der Standard-Typ und wird nicht angeschrieben Eigenschaften: @property( Attributliste ) Typ name; Man kann verschiedene Eigenschaften zwischen Schreibschutz, Referenzierung und der Atomarit¨t w¨hlen. a a - F¨r den Schreibschutz kann man zwischen readonly und readwrite unteru scheiden. - F¨r die Atomarit¨t gibt es das Attribut nonatomic . Dabei wird der Zugriff u a f¨r Singlethread-Nutzung optimiert. u - F¨r die Referenzierung gibt es die M¨glichkeiten assign, retain und copy. u o Methodendeklarationen:

- (id)initWithZaehler:(NSInteger)zaehler andNenner:(NSInteger)nenner; Am Anfang steht immer ein ‘+’, f¨r eine Klassenmethode, oder ein ‘-’, f¨r eine u u Instanzmethode. Danach folgt der Typ des R¨ckgabewertes, gefolgt vom Namen u der Methode und optionalen Parametern. Parameter werden mit einer Beschreibung gefolgt von einem Doppelpunkt, dem Typ in Klammern und dem Bezeichner in die Methodendeklaration eingef¨gt. u Implementierung:

@implementation - (id)initWithZaehler:(NSInteger)zaehler andNenner:(NSInteger)nenner { // Code } @end Die Implementierung steht in einer separaten Datei, die standardm¨ßig auf a .m endet. Die Datei beginnt mit einem @implementation und endet mit einem @end. Dazwischen stehen die deklarierten Methoden. Es gibt auch die M¨glichkeit mittels @synthesize Zugriffsmethoden f¨r die Eigenschaften erzeuo u gen zu lassen. @synthesize zaehler;

8

Nachrichten:

[Objekt Nachricht] Das Zielobjekt steht links in der eckigen Klammer und die Nachricht oder Funktion steht rechts davon. Bruch* bruch = [Bruch alloc]; // +alloc ist Klassenmethode Locking: Um eine ausreichende Sicherheit bei mehreren Threads zu gew¨hrleisten gibt a es die Option @synchronized. Dazu muss der zu behandelnde Code mit diesem Schl¨sselwort eingeleitet werden. u Exceptions: @try { // Code, der eine Exception ausl¨sen k¨nnte o o } // Klasse von Exceptions, die gefangen werden sollen @catch( NSException* exception ) { // Code, wenn eine Exception auftrat } @finally { // Code, der in jedem Falle ausgef¨hrt wird u } Exceptionhandling erfolgt in Objective-C mittels @try, @catch, @finally und @throw. In den @try Block kommt Code der Fehler ausl¨sen k¨nnte. Abgefano o gen werden solche Fehler mit dem @catch Block und Code der in jedem Fall ausgef¨hrt werden soll, steht im @finally Block. [5] u

9

3.2

Xcode

Xcode, mittlerweile bei Version 4 angekommen, ist eine Entwicklungsumgebung f¨r Mac OS X und iOS. Entwickelt wird in der bereits bekannten Programmieru sprache Objective-C und dem Cocoa-Framework. Es werden aber auch andere Sprachen wie C, C++, Java, Python, Ruby und Perl unterst¨tzt. u Xcode besteht neben dem Editor und Compiler auch noch aus diversen anderen Tools zur Analyse von Programmen, Erstellung von Icons und zum Editieren von Konfigurationsdateien. [6]

3.3

Cocoa Touch

Cocoa Touch ist ein Framework mit dessen Hilfe man iOS Apps erstellen kann, die auf iPhone, iPod Touch und iPad ausf¨hrbar sind. Das Framework basiert u auf dem Mac OS X Framework Cocoa und ist haupts¨chlich in Objective-C a geschrieben. Durch dieses Framework wird es den Entwicklern leicht gemacht verschiedenste Dienste und Technologien zu benutzen. [7] Hauptmerkmale - Core Animation - Core Audio - Core Data - Multitasking - Gesture Recognizers

10

3.4

SQLite

SQLite ist eine Programmbibliothek, die ein relationales Datenbanksystem enth¨lt. a Dieses System ist vor allem f¨r den mobilen Einsatz gedacht. u Eine SQLite-Datenbank besteht aus einer einzigen Datei und ist nur wenige hundert Kilobyte groß. Es ist eine “abgespeckte” Version von mySQL. Es gibt keine Verwaltung von Benutzer- und Zugriffsberechtigungen, sowie Schreiboperationen unterschiedlicher Prozesse k¨nnen nur nacheinander ausgef¨hrt o u werden[8].

3.5

XML

XML ist die Abk¨rzung f¨r Extensible Markup Language und ist eine Sprache u u zur Darstellung hierarchisch strukturierter Daten in Form von Textdaten. XML wird vor allem zum Datenaustausch zwischen Server und Client im Internet und zum Speichern von Daten benutzt. Die Sprache verwendet Strukturelemente welche die Daten enthalten. Dabei besitzt das XML Dokument genau ein Wurzelelement, das ¨ußerste Element. Alle Elemente besitzen einen Start -und a End-Tag, wie man es auch von HTML kennt[9].

11

4

Hauptbestandteile der App

Eine Beschreibung der am h¨ufigsten benutzten Klassen der L3T App. a

4.1

UIView

UIView ist sowohl zust¨ndig f¨r die Darstellung der Daten, Texte, Bilder usw., a u als auch f¨r die Erkennung von Aktionen des Benutzers. u

4.2

UIViewController

Ein UIViewController ist f¨r die Verwaltung von ein oder mehreren UIView u Objekten zust¨ndig. Der Controller kontrolliert das Verhalten am Bildschirm. a

4.3

UINavigationController

Ein Navigation Controller ist ideal dazu geeignet, hierarchisch angeordnete Inhalte darzustellen. Der Controller funktioniert wie ein Stapel, “Stack” bezeichnet, bei dem der zuletzt auf den Stack geschobene View Controller als erstes wieder heruntergenommen wird. Als erstes kommt der Basis Controller, dieser ist die Standard Ansicht des Navigation Controller’s und muss immer angegeben werden. Wenn eine neue View auf den Stack gelegt wird, liegt diese uber der Basis Ansicht und wird auch als ¨ erste wieder heruntergenommen. F¨r den Benutzer oder die Benutzerin gibt es hierf¨r eine Navigationsleiste am u u oberen Rand des Bildschirms. Falls also ein oder mehrere View’s am Stack liegen, so kommt man mit der Navigationstaste in der oberen linken Ecke wieder zu den hierarchisch ubergeordneten View’s und nimmt die aktuelle View vom ¨ Stack herunter (siehe Abbildung 3).

Abbildung 3: UINavigationController

12

4.4

UITableView

UITableView ist einfach gesagt eine Tabelle (siehe Abbildung 4). Damit kann man auf leichte Weise Listen von Informationen anzeigen und bearbeiten. So eine Tabelle sieht man meist in Kombination mit einem UINavigationController, da man dadurch sehr leicht zwischen der Liste und deren Daten navigieren kann.

Abbildung 4: UITableView

4.5

Modal View Controllers

Modal View Controllers werden benutzt um den Programmfluss zu steuern. Diese speziellen Ansichten werden benutzt um den Benutzer oder die Benutzerin in einen anderen Bereich der App zu bringen, ihm Steuerungsm¨glichkeiten zu o geben oder einfach bestimmte Einstellungen vorzunehmen.

4.6

UIScrollView

Mit der UIScrollView Klasse gibt man dem Benutzer oder die Benutzerin die M¨glichkeit, in seinem Anzeigebereich zu zoomen und zwischen Inhalten, wie o zum Beispiel PDF Seiten, zu bl¨ttern. a

4.7

UIPopoverController

Ein Popover ist eine Anzeige, die sich uber den eigentlichen Inhalt schiebt. Meist ¨ wird dem Benutzer dadurch eine Auswahlm¨glichkeit oder Eingabem¨glichkeit o o geboten.

13

4.8

CGPDFDocument Reference

Das CGPDFDocument ist dazu da PDF Dateien auf einem iOS Ger¨t anzeigen a zu k¨nnen. Es enth¨lt alle Informationen zur Anzahl der Seiten, Text und Bilder o a in einem PDF Dokument.

4.9

UIAlertView

Warnhinweise und Fehlermeldungen kann man dem Benutzer oder die Benutzerin sehr komfortabel mit der UIAlertView Klasse pr¨sentieren (siehe Abbila dung 5). Dabei verdunkelt sich der Bildschirm und ein kleines Hinweisfenster erscheint, dass eine Reaktion vom Benutzer erwartet.

Abbildung 5: UIAlertView

14

5

Die L3T App

Abbildung 6: L3T Logo

Es folgt eine genaue Beschreibung des Aufbaus und der Funktionalit¨ten der a L3T App. Logo der App siehe Abbildung 6. Hauptbestandteil der App ist der PDF Viewer, mit dem es m¨glich ist PDF Doo kumente anzuschauen, Lesezeichen zu erstellen, Notizen zu machen und Textstellen zu markieren. Daneben gibt es noch zus¨tzliche Features wie den L3T a Browser und einen Pr¨sentations-Modus. a

5.1

Kapitelauswahl

Um sich in der App zwischen verschiedenen Ansichten zu bewegen, gibt es einerseits eine Navigationsleiste (siehe Abbildung 7), f¨r bestimmte Features wie den u L3T Browser oder das Lesezeichen-Men¨. Um ein Kapitel auszuw¨hlen gibt es u a eine eigene Tabellenansicht (siehe Abbildung 8), die in einzelne Sektionen unterteilt ist, die es dem Benutzer oder der Benutzerin leichter macht eine Auswahl zu treffen.

Abbildung 7: Navigationsleiste

Die Tabelle wurde mit einer UITableView Klasse umgesetzt. Es handelt sich um eine gruppierte Tabelle. Damit ist es m¨glich die einzelo nen Inhaltsgebiete unabh¨ngig voneinander darzustellen. Die einzelnen Zeilen a enthalten jeweils den Titel des Kapitels, welche mittels einer Ber¨hrung am u Bildschirm dargestellt werden. Die Daten hierzu werden mit der Funktion getChapters() aus der CoreDataManager Klasse geladen, nach Sektionen sortiert und in die Tabelle eingef¨gt. u

15

Abbildung 8: Kapitelauswahl

Falls es mehrere Versionen zu einem Kapitel gibt, so erscheint ein spezieller Button in der jeweiligen Zeile, der den Benutzer oder die Benutzerin zwischen den verschiedenen Versionen ausw¨hlen l¨sst. Es ist auch m¨glich einzelne Kaa a o pitel zu l¨schen. Dazu wischt man einfach mit dem Finger uber die Zeile des o ¨ betreffenden Kapitels und es erscheint daraufhin ein roter Button mit dem das Kapitel entfernt werden kann.

16

5.2

PDF View

Abbildung 9: PDF Ansicht

Die PDF View (siehe Abbildung 9) ist zust¨ndig f¨r das Anzeigen der einzelnen a u Kapitel, in welcher es m¨glich ist Textstellen zu markieren, zu zeichnen, Notizen o zu machen und Lesezeichen zu setzen. Auch hier ist eine Navigationsleiste vorhanden mit einer Toolbar (siehe Abbildung 10).

Abbildung 10: Toolbar

17

Die Funktionen sind, von links nach rechts: - Notiz hinzuf¨gen u - Markierungen vornehmen - Lesezeichenmen¨ ¨ffnen uo - Lesezeichen hinzuf¨gen u

5.2.1

Aufbau

Diese View setzt sich aus mehreren ineinander verschachtelten UIViewControllern zusammen, welche im Weiteren als “View Controller” bezeichnet werden. Der ¨ußerste Controller ist eine Art Container mit der gleichnamigen Klasa se. Er beinhaltet eine Navigationsleiste bzw. Steuerungsleiste und das jeweilige, ge¨ffnete Kapitel. Der Container ist auch zust¨ndig f¨r die Kommunikation zwio a u schen den verschiedenen Controllern. Der n¨chste View Controller ist zust¨ndig f¨r die Darstellung des Kapitels. Die a a u Klasse hat den Namen PDFViewController. Dieser Controller hat Informationen uber die Anzahl der Seiten des Dokumentes und welche Seite dargestellt ¨ werden soll. Um es dem Benutzer zu erm¨glichen per “Swipe” Geste die Seiten zu wechseln, o wird eine UIScrollView erzeugt, die so breit ist, wie das Produkt aus der Anzahl der Seiten des Kapitels und der Breite des Bildschirms. scrollView.frame.size.width * kNumberOfPages Den Bildlauf ubernimmt die Klasse dann automatisch, es wird nur darauf geach¨ tet wann ein Seitenwechsel passiert um dann die jeweilige neue Seite zu laden. Die Seiten werden also “auf Anforderung” erzeugt um die Ladezeiten in Grenzen zu halten. Jede einzelne dieser Seiten ist nun wiederum in einen View Controller verpackt, namens PageViewController. Dieser ist einerseits zust¨ndig f¨r die Darstellung a u der Seite, aber auch f¨r s¨mtliche Notizen und Zeichnungen, die auf dieser Seite u a vorhanden sind. Um zoomen zu erm¨glichen wurde auch in diesem Controller o eine Scroll View verwendet und entsprechend angepasst. Da die Anzeige von PDF Dokumenten kompliziert ist, habe ich mich eines OpenSource-Beispiels von Julius Oklamcak4 bedient. Der Code steht unter der “Creative Commons Attribution” Lizenz5 , ist eingebettet in die Klasse PDFViewTiled und ist ein Teil des PageViewController’s.
4 https://github.com/vfr/Reader/blob/master/Classes/PDFViewTiled.m 5 http://creativecommons.org/licenses/by/3.0/

18

5.2.2

Notizen

Wenn der “Notiz setzen” Modus aktiviert ist, so ist es dem Benutzer oder der Benutzerin m¨glich eine Notiz zu erstellen. Sobald der Benutzer oder die Benuto zerin mit dem Finger eine Stelle am Bildschirm ber¨hrt hat, wird in der Klasse u PDFViewTiled ein Button erzeugt und auf der View platziert. Zugleich ¨ffnet o sich auch der Notizzettel als Popover uber dem Button der es dem Benutzer oder ¨ der Benutzerin erm¨glicht seine Notizen niederzuschreiben. Sobald eine Stelle o ausserhalb des Notizzettels ber¨hrt wird, schließt sich dieser und speichert die u Daten in einer Datenbank ab, die in Beziehung zu dem jeweiligen Kapitel stehen. Diese Daten beinhalten die Notiz an sich, Titel, ID, die gerade aktive Seite des Dokumentes, als auch Position der Notiz am Dokument. ¨ Sollten beim Offnen einer Seite schon Notizen in der Datenbank vorhanden sein, so wird das in der init Funktion der PDFViewTiled Klasse uberpr¨ft. Dabei weru ¨ den s¨mtliche Notizen aus der Datenbank geholt, in ein Array gespeichert und a nacheinander auf dem Bildschirm platziert. Das L¨schen einer Notiz erfolgt durch das Papierkorb-Symbol auf dem Notizo zettel. Dabei werden s¨mtliche Daten, die in Verbindung mit der Notiz stehen a unwiderruflich gel¨scht. o 5.2.3 Markierungen

Abbildung 11: Markierungen

Der “Zeichnen -oder Markierungs-” Modus wird im PageViewController gesteuert. Sobald dieser Modus aktiv ist, wird das Seitenwechseln deaktiviert.

19

Das Zeichnen erfolgt in der MyLineDrawingView Klasse. Dieser Klasse wird der Bereich ubergeben, auf dem gezeichnet werden kann und ladet s¨mtliche Eina ¨ stellungen wie Pinselgr¨ße und Farbe. o Zum Zeichnen werden sogenannte Bezier Pfade verwendet. Zu jedem gezeichne¨ ten Pfad wird die Farbe, Gr¨ße und Transparenz gespeichert, da sonst Anderungen o der Einstellungen sich nicht nur auf die nachfolgenden Pfade auswirken w¨rden, u sondern auch auf die vorher get¨tigten. a Beim Verlassen des Zeichnen-Modus wird aus der MyLineDrawingView ein Bild generiert. Dieses Bild wird im “Documents” Ordner der App unter Ber¨cksichtigung u der Version abgespeichert. Bei jedem neuen Seitenaufruf wird dann uberpr¨ft, u ¨ ob eine Markierung zu dieser Seite vorhanden ist und uber diese Seite gelegt ¨ (siehe Abbildung 11). Die verschiedenen Einstellungen werden uber die PaintingOptionsPopover Klas¨ ¨ se vorgenommen. Sobald Anderungen get¨tigt worden sind, werden diese gespeia chert und der MyLineDrawingView Klasse zugef¨hrt. u Das L¨schen einer Markierung oder Zeichnung bewirkt ein L¨schen des zuo o geh¨rigen Bildes im Dateisystem. Mehr ist dazu nicht notwendig. o 5.2.4 Lesezeichen

Ein Lesezeichen soll dem Leser helfen, die Stelle an der er oder sie zuletzt gelesen hat, schneller zu finden. In der L3T App gibt es dazu die M¨glichkeit Lesezeichen o hinzuzuf¨gen und diese in einem entsprechenden Men¨ zu bearbeiten. u u Lesezeichen werden in einem Popover-Men¨ angezeigt und k¨nnen auch uber u o ¨ dieses gel¨scht werden. o Jedes Lesezeichen hat seinen eigenen Eintrag in einer Datenbank. Solch ein Eintrag hat als Eigenschaft die jeweilige Seite des Kapitels und den Titel des ¨ Lesezeichens gespeichert. Uber eine sogenannte Relation ist das Lesezeichen mit dem jeweiligen Kapitel verbunden und erleichtert dem Entwickler die Kontrolle uber die Datenverwaltung. ¨

20

5.3

L3T Browser

Abbildung 12: L3T Browser Button

Der L3T Browser (siehe Abbildung 12) gibt dem Benutzer oder der Benutzerin weiterf¨hrende Informationen rund um L3T. Dazu gibt es ein vordefiniertes u Lesezeichenmen¨ mit Links zu: u - L3T - Buchbestellung - MISTER WONG - Facebook-Community - Twitter-Suche - Youtube-Channel - Die interaktive Landkarte - L3T on tour - citeulike - SlideShare - Flickr - VodPod

Grundlage des L3T Browsers ist eine UIWebView mit deren Hilfe man Webseiten in gewohnter Weise darstellen kann.

21

5.4

Download View

Abbildung 13: Download View Button

Die Download Ansicht besteht aus einem Modal View Controller, welcher mit einem Button in der Navigationsleiste (siehe Abbildung 13) erreichbar ist. In dieser werden zum ersten Programmstart alle Kapitel heruntergeladen. Dazu muss man nur den Button “Kapitel herunterladen” ber¨hren und ein paar u Minuten warten. Die Kapitel werden im “Documents” Ordner der App gespeichert, bzw. die Informationen zu den einzelnen Kapiteln in einer Datenbank und werden dann automatisch in das Inhaltsverzeichnis eingef¨gt. u Die Daten hierf¨r werden dabei aus einer XML-Datei gelesen. Die Adresse zur u XML-Datei ist in der OJSGatewayCommunicationService Klasse gespeichert. In dieser XML sind alle Kapitel zum L3T Buch eingetragen und werden mit einem XML Parser herausgelesen. Da es bereits eine ¨hnliche App f¨r das iPhone a u gibt, die iOJS App, wurde der XML-Parser aus dieser App herangezogen und angepasst. Der unten dargestellte Code ist ein Beispiel f¨r ein Kapitel des L3T Buches aus u dem XML Dokument. <article id="34"> <title> Barrierefreiheit - Grundlage gerechter webbasierter Lernchancen </title> <authors> <author> <firstName>Klaus</firstName> <lastName>Reich</lastName> </author> <author> <firstName>Klaus</firstName> <lastName>Miesenberger</lastName> </author> </authors> <abstract> E-Learning-Technologien ... </abstract> <subject> <topic>Lernen und Lehren mit Technologien</topic> 22

</subject> <files> <file id="520"> <fileUrl>/index.php/LehrbuchEbner10/article/download/34/45</fileUrl> <fileSize>3123323</fileSize> <originalFileName>34-520-1-PB.pdf</originalFileName> </file> </files> </article> Die L3T App ruft alle 2 Monate eine Funktion auf, die den Benutzer oder die Benutzerin daran erinnert neue Updates der Kapitel herunterzuladen sofern welche vorhanden sind. Um Kapitel zu erneuern muss man nur in die Download Ansicht wechseln und den Button ber¨hren, der Rest funktioniert vollautomau ¨ tisch. Altere Versionen bleiben inklusive Markierungen und Notizen erhalten und sind uber das Inhaltsverzeichnis ausw¨hlbar. a ¨

5.5

Datenverwaltung (CoreData)

Abbildung 14: CoreData Model

Die Speicherung und das Abrufen von Daten erfolgt uber CoreData, welches ¨ selbst aber keine Datenbank ist. Diese arbeitet im Hintergrund von CoreData, eine SQLite Datenbank, die Daten in einer einzelnen SQLite Datei speichert. Die Erzeugung von Objekten wie man sie in der Abbildung erkennt, erfolgt uber eine grafische Benutzeroberfl¨che in Xcode (siehe Abbildung 14). In der a ¨ L3T App gibt es drei verschiedene Objekte, n¨mlich Chapter, Bookmark und a 23

Note, die jeweils f¨r die einzelnen Kapitel, Lesezeichen und Notizen stehen. Anu hand der Pfeile erkennt man die bidirektionale Beziehung in der die Objekte stehen. So kann zum Beispiel ein Kapitel mehrere Lesezeichen haben, aber das Lesezeichen hat im Gegensatz immer nur ein Kapitel zu dem es geh¨rt. o Chapter Objekt: Attribute: - abstract Zusammenfassung des Artikels - articleID Eine Zahl zum Identifizieren des Artikels - authors Beinhaltet die Autoren des Artikels - currentPage Zurzeit ge¨ffnete Seite o - section Zu welcher der drei Kategorien der Artikel geh¨rt (Einf¨hrung, Vertiefung, o u Spezial) - title Titel des Artikels - url Adresse des PDF Dokumentes auf dem OJS Server - urlOnFilesystem Adresse des PDF Dokumentes auf dem iPad Filesystem - version Version des Artikels Relation: - bookmark Verbindung zu den Lesezeichen des Artikels. Gew¨hrt Zugriff auf alle Lea sezeichen und Attribute des Bookmark Objektes - notes Verbindung zu den Notizen des Artikels. Gew¨hrt Zugriff auf alle Notizen a und Attribute des Note Objektes

24

Bookmark Objekt: Attribute: - page Seite auf dem das Lesezeichen gesetzt wurde - title Titel des Lesezeichens im Lesezeichen-Men¨ u Relation: - chapter Verbindung zu dem Artikel auf dem das Lesezeichen gesetzt wurde. Gew¨hrt a Zugriff auf alle Attribute des Chapter Objektes Note Objekt: Attribute: - id Nummer zur Identifikation der Notiz, da es mehrere Notizen auf einer Seite geben kann - page Seite auf dem die Notiz gesetzt wurde - text Inhalt der Notiz - xPos X-Koordinate der Position der Notiz auf dem Bildschirm - yPos Y-Koordinate der Position der Notiz auf dem Bildschirm Relation: - chapter Verbindung zu dem Artikel auf dem die Notiz gesetzt wurde. Gew¨hrt a Zugriff auf alle Attribute des Chapter Objektes Die einzelnen Methoden um Kapitel, Lesezeichen und Notizen auszulesen stehen in der CoreDataManager Klasse.

25

5.6

Pr¨sentations-Modus a

Mit dem Pr¨sentations-Modus ist es m¨glich s¨mtliche Inhalte die am iPad sichta o a bar sind auf einen externen Bildschirm oder Beamer anzuzeigen. Dazu braucht man nur das iPad und den externen Bildschirm mit einem entsprechenden Kabel verbinden. Der Bildschirm wird automatisch erkannt und das Bild wird auf beiden Ger¨ten angezeigt. a Die Funktionsweise ist relativ simpel. Es wird eine Kopie des Bildes am iPad erzeugt und an den zweiten Bildschirm angepasst und dargestellt. Die Bildwiederholrate liegt hier bei 15 Bildern pro Sekunde, da eine h¨here Frequenz nicht o notwendig ist.

26

6

Anwendung

Die L3T App ist darauf ausgelegt schnell und intuitiv bedienbar zu sein. Nach dem Start der App sind s¨mtliche Funktionalit¨ten mit einer einzigen Ber¨hrung a a u des jeweiligen Buttons erreichbar. Es wurde auch Wert darauf gelegt, dass die standardisierten Bedienkonzepte beibehalten wurden und der Benutzer oder die Benutzerin keine neuen Vorgehensweisen lernen muss. So kann eine Zelle in der Kapitelansicht per “swipe” einfach gel¨scht werden, genauso wie man in der Dokumentansicht per “pinch” o hinein -und heraus-zoomen kann. Beim ersten Start der App wird zuerst die Download-Ansicht angezeigt, denn die einzelnen Kapitel des Buches werden nicht mit der App mitgeliefert. Ein Druck auf den Button “Kapitel herunterladen” reicht, um das komplette Buch herunterzuladen. Dem Benutzer oder der Benutzerin wird w¨hrend des Ladea vorganges ein Fortschrittsbalken eingeblendet, um ihn dar¨ber zu informieren, u wie viel Zeit der Download noch in Anspruch nehmen wird. Die Download-Ansicht ist ubrigens immer erreichbar, um auch sp¨ter noch Akua ¨ talisierungen der Kapitel herunterladen zu k¨nnen. o Die Dokumentansicht wird aufgerufen wenn man die jeweilige Zelle in der Kapitelansicht ber¨hrt oder einen Eintrag aus dem Lesezeichenmen¨ ausw¨hlt. Diese u u a Ansicht ist somit f¨r das Anzeigen des Kapitels zust¨ndig. u a Lesezeichen werden in dieser Ansicht einfach uber das “+” Symbol hinzugef¨gt u ¨ und sind fortan uber das Lesezeichenmen¨ (siehe Abbildung 15) ausw¨hlbar. u a ¨

Abbildung 15: Lesezeichen

27

Um Notizen setzen k¨nnen, wird der “Notiz setzen” Modus zuerst mit dem ento sprechenden Button aktiviert. Danach braucht man nur seinen Finger auf die gew¨nschte Stelle der Seite setzen und es wird ein kleiner Notizzettel platziert u der sich ¨ffnet (siehe Abbildung 16). Sobald eine Notiz gesetzt wurde, deaktio viert sich dieser Modus wieder automatisch.

Abbildung 16: Notizzettel

Die Anzahl an Notizen ist dabei nicht begrenzt, man kann so viele Notizen anlegen wie man m¨chte. Zum L¨schen der Notizen ist auf dem Notizzettel in der o o rechten, unteren Ecke ein kleiner Papierkorb angebracht, der die ausgew¨hlte a Notiz entfernt. Eine weitere M¨glichkeit der L3T App ist es Markierungen vorzunehmen. Dao mit kann man Text hervorheben oder Abs¨tze markieren, ¨hnlich wie in einem a a Zeichenprogramm. Um die verschiedene Einstellungen vorzunehmen gibt es eine eigene Toolbar (siehe Abbildung 17) mit einem Men¨ um Werte wie Transparenz, Pinselgr¨ße oder u o Farbe zu ¨ndern. Hier ist es auch m¨glich die Zeichnung wieder zu entfernen. a o Des weiteren gibt es in der Toolbar eine Schnellauswahl f¨r einen Textmarker u oder einen Pinsel und einen Button um den Zeichnen-Modus zu beenden und ¨ die Anderungen abzuspeichern.

28

Abbildung 17: Optionsmen¨ u

29

7

Diskussion

Da ich schon grundlegende Erfahrung in der iPhone Programmierung hatte, war der Einstieg in die Entwicklung dieser iPad App nicht mehr all zu schwer. Die L3T App schaut auf den ersten Blick einfach aus, doch die App hatte durchaus ihre Herausforderungen. Begonnen hatte das mit dem Aufl¨sen der XML-Datei und dem “Entschl¨sseln” o u der Daten wie zum Beispiel der Versionsnummer und des richtigen Dokumentes. Durchaus interessant zu lernen war auch wie Xcode mittels CoreData auf Datenbanken zugreift. Dabei bekommt man als Programmierer den Eindruck, dass diese Technologie intelligent umgesetzt wurde, auch wenn es Einarbeitungszeit ben¨tigt hatte. o Um einiges einfacher war die Kapitelansicht umzusetzen. Dabei handelt es sich ja im Grunde “nur” um eine Tabellen-Ansicht mit ein paar Optimierungen und Erg¨nzungen. Das Gleiche gilt f¨r den L3T Browser, der im Prinzip nur der a u Standard Browser von Cocoa-Touch ist und nur um Lesezeichen und eine Toolbar erweitert wurde. Der zeitintensivste Teil und auch das Hauptmerkmal der App war die Anzeige des PDF Dokumentes inklusive der Notizen, Markierungen und Lesezeichen. Das richtige Speichern von Notizen und Markierungen erforderte mehr Zeit als geplant, damit auch zu jedem Dokument und der zugeh¨rigen Seite, die richtio gen Daten geladen werden. Verbesserungsvorschl¨ge w¨ren eventuell noch Notizen die sich bewegen lassen a a und Textstellen, die sich automatisch markieren bei Ber¨hrung. Geschwindigu keitsverbesserungen w¨ren m¨glich, wobei die Dokumente an sich schon sehr a o hochaufl¨sende Bilder in sich haben und es deshalb zu l¨ngeren Ladezeiten komo a men kann.

30

8

Ausblick

Buch und Medien in der heutigen Zeit. Das heutige Buch gibt es seit der Erfindung des modernen Buchdruckes in der Mitte des 15. Jahrhunderts durch Johannes Gutenberg. Das ist ein ungew¨hnlich o langer Lebenszyklus f¨r ein Produkt. Somit stellt sich mir die Frage ob das Buch u an sich uberhaupt aussterben kann? Sind Tablet-PC’s, wie das iPad, in der Lage ¨ das Buch zu verdr¨ngen? a Meiner Meinung nach wird das in absehbarer Zeit nicht passieren. Das Buch hat noch einen zu hohen Stellenwert, das iPad wird eher noch als Spielerei angesehen. Ich empfinde es auch angenehmer ein Buch oder Skriptum in der Hand zu haben und daraus zu lernen, als vor dem Computer oder am iPad zu sitzen und in einem PDF Dokument zu lesen. Auf einem elektronischen Ger¨t ist es a “anstrengender” zu lesen als auf einem herk¨mmlichen Buch und deshalb ist es o meiner Ansicht nach schwieriger sich uber l¨ngere Zeit auf ein eBook zu kona ¨ zentrieren. ¨ Diese Uberlegung wiederum bringt mich zu der Ansicht, dass Magazinen und Zeitschriften eine immer gr¨ßere Bedeutung am Tablet-Markt beigemessen wero den wird. Zeitschriften sind meist erheblich k¨rzer gehalten als B¨cher, erfordern u u somit weniger Zeit und erm¨glichen auch ein kurzes Schm¨kern. o o Der gr¨ßte Vorteil solcher elektronischen Zeitschriften ist aber in meinen Augen o die M¨glichkeit der Interaktion des Benutzers mit den Inhalten. Ein besondeo res Beispiel ist sicherlich die App “Our Choice”[10], die von Push Pop Press entwickelt wurde, einem Digital Publishing-Unternehmen, das von dem Apple Entwickler Mike Matas gegr¨ndet wurde. Die App selbst ist ein eBook, bei dem u s¨mtliche Grafiken, Tabellen und Animationen interaktiv gestaltet sind und mit a Videos und Audio Kommentaren erg¨nzt wurden. Das Unternehmen stellt ihre a Technologie auch anderen Verlagen per Lizenz zur Verf¨gung, sodass die Pr¨senz u a an solch interaktiven eBooks sicherlich stark zunehmen wird. Wie sieht die Zukunft aus? Reine eBook Leseger¨te wie der Amazon Kindle werden es schwer haben. Diese a Ger¨te haben nur ein Nutzungs-Schema, das heißt sie sind nur auf das Lesen a von eBooks ausgelegt und haben wenig interaktive Features. Tablet-PC’s wie das iPad haben verschiedenste Anwendungsbereiche, wie Spiele, eBooks, Multimedia, usw. , nur der Bildschirm ist ein kleines Manko. Jedoch wenn man im Freien ein eBook lesen m¨chte, so ist das auf einem Kindle deuto lich angenehmer als auf einem iPad, da dem Bildschirm vom iPad eine andere Technologie zugrunde liegt. Ich denke auch, dass sich das Nutzungsverhalten der Leser ¨ndern wird. Man a hat seine Medien immer bei der Hand, ist st¨ndig mobil, kann schnell zwischen a Medien wechseln, und kann Inhalte erstellen. Das alles gibt Platz f¨r neue Ideen u und neue Technologien an die wir jetzt noch nicht denken. Eine Art “vernetz31

tes Lesen” w¨re denkbar, mit ortsbezogenen Inhalten, oder auch “vernetztes a Schreiben”. Solche Dinge k¨nnten Einfluss auf unser Bildungssystem haben. o Schulb¨cher k¨nnten gemeinsam gelesen werden und mit Lesezeichen und Komu o mentaren versehen werden, auf die jeder Sch¨ler Zugriff hat[11]. u Tablet-PC’s sind relativ neu am Markt und ich denke dass noch viel Neues kommen wird. Es ergeben sich immer wieder neue M¨glichkeiten und neue Technoo logien, aber Mike Matas zeigt in welche Richtung es mit eBooks gehen k¨nnte. o

32

Hyperlinks
[1] http://de.wikipedia.org/wiki/App (15.07.2011) [2] http://www.apple.com/at/iphone/apps-for-iphone/#heroOverview (15.07.2011) [3] http://de.wikipedia.org/wiki/Apple_iPad (16.07.2011) [4] http://de.wikipedia.org/wiki/E-Book (16.07.2011) [5] http://de.wikipedia.org/wiki/Objective-C (17.07.2011) [6] http://de.wikipedia.org/wiki/Xcode (17.07.2011) [7] http://developer.apple.com/technologies/ios/cocoa-touch. html(18.07.2011) [8] http://de.wikipedia.org/wiki/SQLite (18.07.2011) [9] http://de.wikipedia.org/wiki/Extensible_Markup_Language (19.07.2011) [10] http://www.ted.com/talks/mike_matas.html(25.07.2011) [11] http://www.scribd.com/doc/30860077/(25.07.2011)

33

Literatur
[1] Dave Mark, Jack Nutting, Jeff LaMarche (2011). Beginning iPhone 4 Development [2] Toby Boudreaux (2009). Programming the iPhone User Experience

34

Abbildungsverzeichnis
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Apple iPad.1 . . . . . . Amazon Kindle.2 . . . . UINavigationController UITableView . . . . . . UIAlertView . . . . . . L3T Logo . . . . . . . . Navigationsleiste . . . . Kapitelauswahl . . . . . PDF Ansicht . . . . . . Toolbar . . . . . . . . . Markierungen . . . . . . L3T Browser Button . . Download View Button CoreData Model . . . . Lesezeichen . . . . . . . Notizzettel . . . . . . . . Optionsmen¨ . . . . . . u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 12 13 14 15 15 16 17 17 19 21 22 23 27 28 29

35

Sign up to vote on this title
UsefulNot useful