Sie sind auf Seite 1von 34

Android Applikation für

Open Journal Systems


Bachelorarbeit

zur Erlangung des akademischen Grades Bachelor of Science

vorgelegt von
Philipp Leitner

Technische Universität Graz


Institut für Informationssysteme und Computer Medien
Betreuer: Dipl.-Ing. Dr. Ebner Martin
1. Dezember 2010
Erklärung
Hiermit versichere ich, dass ich die vorliegende Arbeit selbstständig verfasst
und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe,
dass alle Stellen der Arbeit, die wörtlich oder sinngemäß aus anderen Quellen
übernommen wurden, als solche kenntlich gemacht sind und dass die Arbeit
in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegt wur-
de.

Graz, den 1. Dezember 2010 Philipp Leitner


Inhaltsverzeichnis
Erklärung 1

Inhaltsangabe 3

Abbildungsverzeichnis 4

1 Abstract 5

2 Einführung 6

3 Open Journal Systems 7


3.1 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Beschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3 Einsatzgebiet . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4 Kritische Würdigung . . . . . . . . . . . . . . . . . . . . . . . 9

4 Android 10
4.1 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2 Beschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3 Einsatzgebiet . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.4 Kritische Würdigung . . . . . . . . . . . . . . . . . . . . . . . 12

5 Entwurf 13

6 Umsetzung 14
6.1 Die Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . 14
6.2 Die Schnittstelle zum Open Journal Systems . . . . . . . . . . 14
6.2.1 Kurze Einführung zum iPhoneGatewayPlugin . . . . . 14
6.3 Objektorientierte Programmierung . . . . . . . . . . . . . . . 15
6.4 Datenaustausch und Parsen der Informationen . . . . . . . . . 16
6.4.1 AsyncTask . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.4.2 Der SAXParser und die Handler . . . . . . . . . . . . . 18
6.5 Die Logic und das Graphical User Interface (GUI) . . . . . . . 19
6.5.1 Das Speichern und Laden der Einstellungen . . . . . . 19
6.5.2 Activity . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.5.3 Layout und View . . . . . . . . . . . . . . . . . . . . . 21
6.5.4 Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.5.5 Das AndroidManifest . . . . . . . . . . . . . . . . . . . 23

7 Anwendungsbeispiel 24
7.1 Ein neues Journal hinzufügen . . . . . . . . . . . . . . . . . . 24
7.2 Navigieren durch die Journale . . . . . . . . . . . . . . . . . . 25
7.3 Den Abstract eines Artikels lesen . . . . . . . . . . . . . . . . 26
7.4 Die Dateien zu einem Artikel ansehen und öffnen . . . . . . . 27
7.5 Ein Journal aus der Liste entfernen . . . . . . . . . . . . . . . 28

8 Diskussion 29

9 Zusammenfassung und Ausblick 30

Literaturverzeichnis 33
Abbildungsverzeichnis
1 Weltkarte von Journalen, die Open Journal Systems verwenden 8
2 Android System Stack . . . . . . . . . . . . . . . . . . . . . . 11
3 Smartphone Käufe in den USA . . . . . . . . . . . . . . . . . 12
4 Aufbau zum objektorientierten Programmieren . . . . . . . . . 15
5 Communication Klassen-Diagramm . . . . . . . . . . . . . . . 16
6 Code-Auszug aus OJS for Android: Das Interface AsyncTask . 17
7 Code-Auszug aus OJS for Android: Der SAXParser . . . . . . 18
8 Code-Auszug aus OJS for Android: Der JournalHandler . . . . 18
9 Code-Auszug aus OJS for Android: Speichern der Journale . . 19
10 Code-Auszug aus OJS for Android: Laden von zuvor gespei-
cherten Journalen . . . . . . . . . . . . . . . . . . . . . . . . . 19
11 Code-Auszug aus OJS for Android: Activity, onCreate und
findViewById . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12 Code-Auszug aus OJS for Android: XML-Layout von UI zum
Hinzufügen eines neuen Journals . . . . . . . . . . . . . . . . . 21
13 Code-Auszug aus OJS for Android: XML-Datei von Artikel-
Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
14 Code-Auszug aus OJS for Android: onCreateOptionsMenu . . 22
15 Code-Auszug aus OJS for Android: onOptionsItemsSelected . 22
16 Code-Auszug aus OJS for Android: Das AndroidManifest . . . 23
17 Ein neues Journal hinzufügen . . . . . . . . . . . . . . . . . . 24
18 Navigieren durch die Journale . . . . . . . . . . . . . . . . . . 25
19 Den Abstract eines Artikels lesen . . . . . . . . . . . . . . . . 26
20 Die Dateien zu einem Artikel ansehen und öffnen . . . . . . . 27
21 Ein Journal aus der Liste entfernen . . . . . . . . . . . . . . . 28
1 Abstract
Open Journal Systems (OJS) ist eine Open-Source-Software zur Verwaltung
und Veröffentlichung von Zeitschriften (Journalen). OJS wurde entwickelt
und veröffentlicht vom Public Knowledge Project und wird von vielen Open
Access Journalen verwendet [11].

Android ist ein auf Linux und Java basierendes Betriebssystem für Smartpho-
nes, welches von der Open Handset Alliance entwickelt wurde und steht unter
der freien Apache-Lizenz. Der Suchmaschinen-Riese Google steht besonders
hinter diesem Projekt und betreibt die größte Verkaufs- und Downloadplatt-
form für Android-Applikationen (Android Market). Weiters legt der Anteil
der Android basierenden Smartphone immer weiter zu. Er ist seit dem vier-
ten Quartal 2009 bis zum zweiten Quartal 2010 auf dem US-Markt von 6%
auf 27% angestiegen [7].

Diese Arbeit befasst sich mit der Verbindung der beiden aufsteigenden Pro-
dukte in der Theorie sowie in der Praxis. Es wird eine Applikation entwickelt,
die es ermöglicht auf Journale, Artikel und Inhalte sowie weitere relevante
Inhalte von OJS zuzugreifen, diese dem Benutzer mittels einer grafischen
Oberfläche (GUI) auf einem Smartphone mit Android Betriebssystem leicht
zugänglich zu machen und Kommentare über dieses abgeben zu können.

In der Arbeit wird im Speziellen auf die programmiertechnische Umsetzung


eingegangen als auch anhand von Anwendungsbeispielen das Programm nä-
her gebracht.
2 Einführung
Smartphones sind leistungs- und internetfähige Mobiltelefone mit dem zu-
sätzlichen Funktionsumfang eines Personal Digital Assistant (PDA) und der
Möglichkeit individuelle Programme (Applikationen) auszuführen [24]. Der
Trend zum eigenen Smartphone steigt und so ist auch die Nachfrage nach
passenden Applikationen groß [23].

Da das Android Betriebssystem zukunftsweisend auf diesem Bereich ist, hat


man sich entschlossen eine Applikation dafür zu entwickeln, welche eine Ver-
bindung zu Open Journal Systems vom Public Knowledge Project, einem on-
line Verwaltungs- und Publizierungssystem, herstellt. Damit soll der Zugriff
auf derartige Systeme mit internetfähigen Mobiltelefonen ermöglicht werden
[5].

In den nächsten zwei Kapitel werden Open Journal Systems und das Be-
triebssystem Android genauer erklärt, ihre Entwicklung, ihren Einsatz und
wie die Vor- und Nachteile aussehen.

Kapitel 4 beschäftigt sich mit dem Entwurf und dem Aufbau der Arbeit. Die
Umsetzung der Applikation wird in Kapitel 5 erörtert, dabei wird genauer
auf die Punkte des Entwurfs eingegangen. Es wird auch die Wahl der Ent-
wicklungsumgebung und die Auswahl des Plugins behandelt. Ebenso wird die
Idee des objektorientierten Programmierens kurz diskutiert. Schlussendlich
wird dieses Kapitel mit Auszügen und Erläuterungen zum Programmiercode
abgerundet.

Wie die fertige Applikation verwendet wird, steht mit Beispielen erklärt in
Kapitel 6. Die beiden Kapitel 7 und 8 geben zum Schluss noch einmal eine
kurze Zusammenfassung, diskutieren Auffälligkeiten, Probleme und geben
einen Ausblick.
3 Open Journal Systems
3.1 Geschichte [9]

Das Public Knowledge Project (PKP) wurde 1998 von John Willinsky in
der Abteilung für sprachliche und literarische Bildung in der pädagogischen
Fakultät der University of British Columbia (UBC) eingeleitet. Es entstand
aus Willinskys Werk über the history of publishing and on postcolonial stu-
dies, sowie aus seinen Erfahrungen im Bereich der Entwicklung von bildender
Software bei dem Unternehmen Knowledge Architecture.

Die erste Public Knowledge Project Software wurde 2001 herausgebracht


und unter der technischen Leitung von Kevin Jamieson wurde mit der Ent-
wicklung der Projekte Open Journals Systems, Open Conference Systems
und PKP Harvester unter der GNU GPL Open Source Lizenz begonnen.

Im Jahr 2002 wurde Open Journal Systems als ein Meilenstein der Open
Access Bewegung hinzugefügt. Um die Entwicklung, Aufrechterhaltung und
Verbesserung der Software und dem Support für Online- und Open Access
Publishing von PKP zu verbessern, schlossen sich Willinsky, Lynn Copeland
(Universitäts Bibliothekar der SFU Library) und Rowly Lormier (Direktor
des Canadian Centre for Studies in Publishing) im Jahr 2005 zusammen.

Im Jahr 2007 wurde die erste Konferenz mit internationaler Beteiligung von
PKP abgehalten und dessen Ergebnisse in der Spezialausgabe im Oktober
2007 von First Monday publiziert. Außerdem nahm Willinsky die Position
als Professor for Education an der Stanford University an und gab somit
PKP einen vierten Sitz neben der SFU Library, SFU’s Canadian Centre of
Studies in Publishing und UBC’s Faculty of Education.

3.2 Beschreibung
Open Journal Systems (OJS) ist ein Publizierungs- und Verwaltungssystem,
welches von Public Knowledge Projekt (PKP) durch staatlich geförderte
Maßnahmen zur Ausweitung und Verbesserung des Zugangs zu Forschung
entwickelt wurde. Das System wurde zur lokalen Installation und Betrieb
konzipiert und erfordert minimale technische Fähigkeiten und Ausstattung.
Open Journal Systems ist bereits in der Version 2.x (zum Zeitpunkt der
Arbeit in stable 2.2.4 und development 2.3.2) vorhanden. Neben OJS gibt
es noch andere Open Source Journal Verwaltungs- und Publizierungssyste-
me, wie DpubsS, GAPworks, Hyperjournal, ePublishing Toolkit, OpenACS,
SOPS und TOPAZ [11].

3.3 Einsatzgebiet
Open Journal Systems wird in akademischen Einrichtungen rund um die
Welt eingesetzt. Die Aufteilung wird durch die Weltkarte in Abb. 1 veran-
schaulicht, auf der die Journale, die Open Journal Systems verwenden, pro
Kontinent eingezeichnet sind [10]. Im Juli 2010 waren 6600 Journals auf der
Seite des Public Knowledge Project gelistet, was jedoch nur einen Teil dar-
stellt, da für dies eine Registrierung notwendig ist [13].

Abb. 1: Weltkarte von Journalen, die Open Journal Systems verwenden [10]
3.4 Kritische Würdigung
Open Journal Systems kann sehr leicht installiert und verwaltet werden. Es
besitzt eine hervorragende Rollenaufteilung und bereits etliche Plugins mit
den unterschiedlichsten Funktionalitäten. Die gute Dokumentation geht auch
auf schwer verständliche Teile detaillierter ein.

Da OJS ständig weiterentwickelt wird und die Software unter der GNU GPL
V2 frei verwendet und modifiziert werden kann, ist sie für die Zukunft sehr
interessant. Zusätzlich stehen viele Tutorials und andere Hilfestellungen auf
der Webseite der PKP bereit [8].
4 Android
4.1 Geschichte
Das Unternehmen Android in Palo Alto, Californien/USA, von dem nicht
mehr bekannt war, als dass es Software für Mobiltelefone entwickelte, wurde
im Jahr 2003 gegründet. Die Erfolgsgeschichte beginnt jedoch erst 22 Monate
später, im Juli 2005, mit dessen stiller Übernahme durch Google und dem
Start der Entwicklung der Android Plattform. Die wichtigsten Mitarbeiter
bei Android waren Andy Rubin, Rich Miner, Nick Sears and Chris White
[1][4].

Ende 2007 wurde rund um die Android Plattform die Open Handset Al-
liance gegründet. Einige der prominentesten Mitglieder sind T-Mobile, Mo-
torola, Samsung, Sony Ericson, Toshiba, Vodafone, Intel, Texas Instrument
und Google. Die Ziele dieser Allianz sind schnelle Innovationen und besseres
Reagieren auf Kundenwünsche [1].

Am 12. November 2007 veröffentlichte Google eine Vorabversion des Android-


SDK (Sourcecode Development Kit), einer Entwicklungsumgebung für die
Android-Plattform. Die positive Reaktion darauf verdeutlicht, wie groß das
Interesse der Entwickler und der Hersteller an einer offenen Plattform für
Embedded Systems mittlerweile ist [2].

Im September 2008 ist das erste auf Android basierende Mobiltelefon von
T-Mobile auf den Markt gekommen und kurz darauf, im Oktober 2008, wur-
de die Android SDK Release Candidate 1.0 und dessen Source Code (unter
der Apache Open Source) der Öffentlichkeit zugänglich gemacht. Seit damals
werden in regelmäßigen Abständen neue Versionen veröffentlicht [1].

4.2 Beschreibung
Android stellt eine umfassendes Gesamtsystem, den Android System Stack
(siehe Abb. 2), für die Entwickler von mobilen Applikationen zur Verfü-
gung. Als Basis dient ein Linux Kernel in der Version 2.6, der eine Hard-
ware Abstraktionsschicht sowie Speichermanagement, Prozessmanagement,
Sicherheitsmodell und eine Netzwerk-Schnittstelle bereitstellt [6].

Abb. 2: Android System Stack [22]

Die meisten Applikationen unter Android werden in Java entwickelt und


ausgeführt durch die Dalvik Virtual Machine, welche darauf ausgelegt wurde
viele Instanzen der Virtual Machine effizient bereitzustellen. Die Android Li-
braries wie OpenGL, WebKit, FreeType, Secure Socket Layer (SSL), SQLite,
Media und die C Runtime Library sind in C/C++ geschrieben, können aber
mittels Java-Schnittstelle angesprochen werden. Jede Java Applikation, die
auf diese Libraries zugreift, bekommt ihre eigene Virtual Machine. Momentan
ist die Version 2.2 von der Android Plattform verfügbar [1].

4.3 Einsatzgebiet
Ursprünglich war Android als Plattform für Mobiltelefone konzipiert, in-
zwischen findet man es auf einer Vielzahl verschiedener Gerätetypen, vom
Tablet-PC und Netbooks bis hin zu Home-Entertainment und Auto-Infotainment
[2].

Wie in Abb. 3 sichtbar, legt Android seit dem vierten Quartal 2009 einen
geradzu kometenhaften Aufstieg hin, damals waren gerade mal 6% aller neu
erworbenen Smartphones in den USA mit Android ausgestattet. Im zweiten
Quartal 2010 waren es bereits 27% [7].

Abb. 3: Smartphone Käufe in den USA [7]

4.4 Kritische Würdigung


Der große Vorteil an Android liegt sicherlich darin, dass es auf der einen
Seite von einer großen Allianz (Open Handset Allianz) entwickelt wird und
auf der anderen Seite unter der freien Apache-Lizenz jedem zur Verfügung
steht. Der Suchmaschinen-Riese Google steht besonders hinter diesem Pro-
jekt und betreibt die größte Verkaufs- und Downloadplattform für Android-
Applikationen (Android Market). Jedoch steigen durch das große Interesse
auch die Probleme, so gibt es bereits die ersten Android-Trojaner [3].
5 Entwurf
Open Journal Systems for Android soll es ermöglichen Open Journals auf
Android Betriebssystemen herunterzuladen und grafisch darzustellen. Dafür
soll zunächst die Erfüllung der folgenden Anforderungen umgesetzt werden:

• Es muss eine geeignete Entwicklungsumgebung gefunden werden.

• Damit auf die Daten von Open Journal Systems zugegriffen werden
kann, soll eine passende Schnittstelle ermittelt werden.

• Es soll ein ressourscensparender Datenaustausch zwischen Applikation


und Server hergestellt und dabei die Wartezeiten, die durch den Daten-
transfer entstehen, für den User so kurz wie möglich gehalten werden.

• Da die Applikation in Java geschrieben wird, soll diese objektorientiert


programmiert sein.

• Die Informationen sollen ausgelesen und in passende Objekte umge-


wandelt werden.

• Das grafische User-Interface soll simple und selbsterklärend sein und


dennoch den gesamten Inhalt von Open Journals widergeben.

• Es soll eine strikte Abkapselung von der Interaktion mit dem Server
und dem grafischen User-Interface geben.

• Bereits hinzugefügte Journale sollen beim erneuten Applikationsstart


wieder vorhanden sein.
6 Umsetzung
In diesem Kapitel wird die prototypische Umsetzung einer Applikation zur
grafischen Darstellung eines OJS Journals auf einem Android Betriebsystem
beschrieben.

6.1 Die Entwicklungsumgebung


Für die Umsetzung der Applikation wurde das Android Standard Develop-
ment Toolkit (Android SDK) v0.9.7 Revision 6 verwendet. Als Entwicklungs-
umgebung diente Eclipse (Galileo) mit der Version 3.5.1 und dem Plugin
Android Development Tools (ADT), welches es auf einfache Art ermöglicht,
Android Applikationen komfortabel zu erstellen und zu testen. Damit die
Applikation auch mit älteren Android Plattformen funktioniert, wurde sie
für die Android 1.5 Plattform geschrieben und getestet.

6.2 Die Schnittstelle zum Open Journal Systems


Als Schnittstelle zum Open Journal System wurde das iPhoneGatewayPlu-
gin verwendet, welches einen großen Teil der gewünschten Fähigkeiten, die
im Enwurf für Open Journal Systems for Android festgehalten sind, bein-
haltet. Zur Zeit der Entwicklung der Applikation steckte das Plugin noch
in seinen Anfängen, jedoch konnte das alernative METS-Gateway-Plugin[12]
sich, wegen seiner eingeschränkten Möglichkeiten, nicht durchsetzen.

6.2.1 Kurze Einführung zum iPhoneGatewayPlugin

Das iPhone-Plugin wird nach dem Download in den Gateway-Ordner ent-


packt und muss nun noch in der Zeitschriftenverwaltung unter Plugins ein-
geschaltet werden. Das Plugin ist in mehrere Teile aufgeteilt, sodass man
ressourcensparend die gewünschten Informationen in XML-Form herunterla-
den kann:
• JournalURL/gateway/plugin/iPhoneGatewayPlugin/journal enthält die Da-
ten zum Journal, wie den Namen, die Version und die Titel der Journale.
• JournalURL/gateway/plugin/iPhoneGatewayPlugin/issues enthält die Da-
ten zu den Ausgaben der Journale, wie ID, Title, Beschreibung, URI, Termin, Band,
Nummer und Jahr.

• JournalURL/gateway/plugin/iPhoneGatewayPlugin/sections/* enthält die


Daten zu einer Kategorie von einer Ausgabe, wobei der * durch die ID der Ausga-
be ersetzt wird. Die Daten enthalten unter anderem den Titel der Kategorie sowie
deren Artikel mit dessen ID, Titel, Autor, Sprache, Abstrakt und URL zu dessen
Dateien.

• JournalURL/gateway/plugin/iPhoneGatewayPlugin/comments/* enthält
die Kommentare die zu einem Artikel abgeben wurden, wobei * mit der Artikel-ID
ersetzt wird.

6.3 Objektorientierte Programmierung


Die Applikation sollte, soweit möglich, objektorientiert programmiert wer-
den. Dies verdeutlicht das Klassendiagramm in Abb. 4, das die Klassen Jour-
nal, Issue, Section, Article, Author, File und Comment beinhaltet.

Abb. 4: Aufbau zum objektorientierten Programmieren


6.4 Datenaustausch und Parsen der Informationen
Die Klasse Communication, welche in der Abb. 5 als Klassendiagramm ab-
gebildet ist, dient zur Kommunikation mit dem Server. Sie erweitert die ab-
strakte Klasse AsyncTask und kann somit im Hintergrund alle nötigen Daten
herunterladen. Die benötigten Daten werden mittels Apaches-HttpGet über
das iPhoneGatewayPlugin von Open Journal Systems als XML geholt, von ei-
nem SAXParser geparst und an den entsprechenden Handler weitergegeben,
der aus den Informationen die Objekte erstellt und in das Journal einfügt.

Abb. 5: Communication Klassen-Diagramm


6.4.1 AsyncTask

Der AsyncTask - ein Code-Auszug ist abgebildet in Abb. 6 - ermöglicht es


mittels eigenem Thread im Hintergrund Operationen durchzuführen, ohne
dabei den User-Interface-Thread zu stören. Somit ist er dazu geeignet Daten
aus dem Internet zu laden und diese an den User-Interface-Thread zu über-
mitteln, ohne ihn dabei manipulieren zu müssen.[16]

Abb. 6: Code-Auszug aus OJS for Android: Das Interface AsyncTask


6.4.2 Der SAXParser und die Handler

Der SAXParser kann von den unterschiedlichsten Quellen XML parsen, in


diesem Fall von einer InputSource (siehe Abb. 7). Durch das synchrone Dow-
nloaden und Einlesen der Daten, können diese schnell verarbeitet und dem
Benutzer präsentiert werden. Dem Parser wird die Quelle und ein Handler
(siehe Abb. 8) übergeben, der die Daten weiterverarbeitet [18].

Abb. 7: Code-Auszug aus OJS for Android: Der SAXParser

Abb. 8: Code-Auszug aus OJS for Android: Der JournalHandler


6.5 Die Logic und das Graphical User Interface (GUI)
Die Logic übernimmt die Steuerung aller nicht netzwerkbedingter Arbeiten,
welche die Applikation verichten muss. So ist diese zum Beispiel für das Spei-
chern und Laden der Einstellungen sowie für den Input vom User-Interface
verantwortlich. Das grafische User Interface erweitert eine Activity, diese wird
mittels Layout und View sowie den Menus generiert. Als letzter Punkt ist
auch noch das AndroidManifest zu nennen, welches wichtige Informationen
enthält, die das System noch vor dem Programmcode benötigt damit die
Applikation reibungslos ablaufen kann.

6.5.1 Das Speichern und Laden der Einstellungen

Für das Speichern und Laden von Einstellungen bietet Android das Interface
SharedPreferences an. Mit diesem lassen sich leicht gewünschte Daten sichern
und beim nächsten Starten wieder laden. Abb. 9 und 10 zeigen Code-Auszüge
die für das Speichern und Laden der Journale verantwortlich sind [19].

Abb. 9: Code-Auszug aus OJS for Android: Speichern der Journale

Abb. 10: Code-Auszug aus OJS for Android: Laden von zuvor gespeicherten
Journalen
6.5.2 Activity

Nahezu jede Activity-Klasse (Abb. 11) interagiert mit dem Benutzer. Sie ist
dafür verantwortlich ein Fenster für das User-Interface zu erstellen. Ein wich-
tiger Bestandteil ist, das für das Initialisieren zuständige onCreate(Bundle).
Dabei wird durch setContentView(int) und findViewById(int) mittels Layout-
Ressource, einer XML-Datei die das Layout enthält, das User-Interface definiert.[14]

Abb. 11: Code-Auszug aus OJS for Android: Activity, onCreate und find-
ViewById
6.5.3 Layout und View

Das Layout ist für die Struktur und Anordnung der dem Benutzer vorge-
führten Elemente (Views) zuständig. Das Android-Framework bietet dabei
die Möglichkeit es mittels XML-Datei und/oder zur Laufzeit zu erstellen.
Der Vorteil an einer Deklaration mittls XML liegt an einer besseren Tren-
nung zwischen Präsentation der Applikation und dem Code der ihr Verhalten
steuert - Abb. 12 zeigt eine solche XML-Datei.[20]

Abb. 12: Code-Auszug aus OJS for Android: XML-Layout von UI zum Hin-
zufügen eines neuen Journals

Die dabei verwendeten Views nehmen einen rechteckigen Bereich vom


Bildschirm ein und sind für dessen Aufbau und Ereignisse verantwortlich. Es
gibt viele verschiedene spezialisierte Unterklassen von Views die als Steuer-
elemente oder zum Anzeigen von Text (z.B.: TextView), Bildern (z.B.: Image-
View) oder anderen Inhalten (z.B.: WebView) dienen [21].
6.5.4 Menu

Jede Activity unterstützt standardmäßig ein Option-Menu Interface. Dieses


enthält Einträge, kann Klicks auf diesen erfassen und Aktionen ausführen.
Das Menu wird mittels einer XML-Datei (Abb. 13) und onCreateOptions-
Menu(Menu menu) (Abb. 14) eingebunden. Um auf die Selektion eines Ein-
trags reagieren zu können, wird onOptionsItemsSelected(MenuItem) einge-
setzt (Abb. 15) [17].

Abb. 13: Code-Auszug aus OJS for Android: XML-Datei von Artikel-Menu

Abb. 14: Code-Auszug aus OJS for Android: onCreateOptionsMenu

Abb. 15: Code-Auszug aus OJS for Android: onOptionsItemsSelected


6.5.5 Das AndroidManifest

Das AndroidManifest ist fixer Bestandteil jeder Android Applikation. Es be-


schreibt die Komponenten der Applikation, erklärt welche Berechtigungen
sie haben muss, um Zugriff auf geschützte Teile der API zu erlangen oder
mit anderen Anwendungen zu interagieren. Das AndroidManifest legt unter
anderem fest, welche Mindestversion die Android-API aufweisen muss und
welche Bibliotheken die Applikation benötigt. Abb. 16 zeigt das AndroidMa-
nifest von der Open Journal Systems for Android Applikation [15].

Abb. 16: Code-Auszug aus OJS for Android: Das AndroidManifest


7 Anwendungsbeispiel
Auf den folgenden Seiten werden die Hauptfunktionen des Programms an-
hand von Screenshots dargestellt und erklärt.

7.1 Ein neues Journal hinzufügen


Durch Betätigen der Menu-Taste kann auf der Seite mit den Journal-Listen
das Menü ausgeklappt werden (Abb. 17(a)). Per Auswahl des New-Buttons
erscheint ein Eingabe-Screen (Abb. 17(b)). Mittels Eingabe einer URL und
dem Drücken des Subscribe-Buttons, wird ein neues Journal hinzugefügt.

(a) Journal-Liste mit Menü (b) Eingabe-Screen für ein


neues Journal

Abb. 17: Ein neues Journal hinzufügen


7.2 Navigieren durch die Journale
Die Navigation in der Journal-Liste ist simpel aufgebaut. Durch die Auswahl
von einem Journal in der Journal-Liste (Abb. 18(a)) werden alle Ausgaben
dieses Journals aufgelistet (Abb. 18(b)). Mittels Selektion einer Ausgabe ak-
tualisiert sich die Applikation und die Liste mit den Kategorien der Ausgabe
wird angezeigt (Abb. 18(c)). Per Wahl einer Kategorie wird ein Angebot an
Artikeln angezeigt (Abb. 18(d)).

(a) (b)

(c) (d)

Abb. 18: Navigieren durch die Journale


7.3 Den Abstract eines Artikels lesen
Um den Abstrakt eines Artikels anzeigen zu lassen, selektiert man in der
Artikel-Liste (Abb. 19(a)) den gewünschten Artikel. Die Steuerung des Ab-
stracts lässt unter anderem das Auf- und Abscrollen sowie das Auswählen
von Links zu (Abb. 19(b)).

(a) Artikel-Liste (b) Abstract eines Artikels

Abb. 19: Den Abstract eines Artikels lesen


7.4 Die Dateien zu einem Artikel ansehen und öffnen
Bei vielen der Artikel gibt es den kompletten Artikel als pdf- oder doc-Datei.
Durch betätigen der Menu-Taste kann auf der Seite mit dem Abstract ei-
nes Artikels das Menü ausgeklappt werden (Abb. 20(a)). Per Klick auf File
oder Suppfile wird eine Liste mit den Dateien angezeigt (Abb. 20(b)). Durch
Auswahl einer Datei wird diese heruntergeladen und geöffnet, sofern auf dem
Android eine Applikation vorhanden ist, die das Format der Datei unter-
stützt.

(a) Abstract eines Artikels mit (b) Dateien eines Artikels


Menü

Abb. 20: Die Dateien zu einem Artikel ansehen und öffnen


7.5 Ein Journal aus der Liste entfernen
Um ein Journal aus der Journal-Liste zu entfernen, betätigt man den Journal-
eintrag zwei Sekunden (Abb. 21(a)). Auf dem sich öffnenden Dialog-Fenster
lässt sich durch Auswahl des Yes-Buttons das Journal löschen, bei No bleibt
das Journal erhalten (Abb. 21(b)).

(a) Journal-Liste (Hauptseite) (b) Dialog der Abfragt ob das


Journal gelöscht werden soll

Abb. 21: Ein Journal aus der Liste entfernen


8 Diskussion
Die Entwicklungsumgebung wird in einem Paket inklusive Emulator von An-
droid Plattformen, zum Testen der Applikationen verwendet werden kann,
ausgeliefert. Um die Entwicklung von Android-Software effizienter zu gestal-
ten. Damit kann mittels Anstecken eines Android-Smartphones die Applika-
tion mit Debug-Output in Eclipse getestet werden.

Die große Vielfalt der Librarys und Funktionen bieten Programmierern viele
Möglichkeiten auftretende Probleme zu lösen. Die Layouts können einerseits
durch eine XML-Datei und andererseits mittels Java-Code erstellt werden;
ein Thread kann selbst oder durch bereits vorhandene, mit der gewünschten
Funktionalität ausgerüstete Interfaces erzeugt werden uvm.

Das Open Journal Systems - iPhoneGatewayPlugin hat einiges an Poten-


tial, besonders auch deshalb, weil es noch nichts Vergleichbares gibt. Die
Aufteilung in kleine Datenbereiche macht es ideal für den Einsatz in mobi-
len Geräten. Da dieses Plugin bisher noch nicht fixer Bestandteil von Open
Journal Systems ist, muss man es selbst herunterladen, installieren und ein-
schalten, was eine weitere Hürde darstellt.

Durch den Betrieb der Applikation auf einem mobilen Gerät, wie einem
Smartphone, kann es zu Problemen kommen. Ist die Verbindung zum Server,
auf dem das Journal liegt, sehr langsam oder schlecht kann es zu erheblichen
Wartezeiten durch den Download kommen. Wird die Verbindung zum Server
während eines Downloads unterbrochen, wird dieser nicht wieder aufgenom-
men, sondern muss Manuell neugestartet werden. Es werden auch noch keine
Daten gespeichert, weshalb bei jedem Neustart der Applikation diese erneut
vom Server geholt werden.
9 Zusammenfassung und Ausblick
Mit der vorliegenden Arbeit zu dem Thema Open Journal Systems for An-
droid und der daraus entstandenen Applikation, hoffe ich einen Beitrag zu
OJS und Android geleistet zu haben.

Die Arbeit beinhaltet neben dem theoretischen Rahmen zu Open Journal


Systems und Android auch eine Dokumentation wichtiger Programmierteile
sowie ein Anwendungsbeispiel. Durch die Darstellung der technischen Mög-
lichkeiten beider Software-Produkte sowie das damit verbundene Potential
und die zukünftige enorme Relevanz durch deren Verbreitung im Bereich der
mobilen Kommunikation bzw. der mobilen Anwendungsvielfallt, scheint eine
weitere Entwicklung nötig. Die Applikation steht jedem zur freien Verfügung
http://ojs-android.dyndns.org und kann somit gemäß GNU-Lizenz wei-
terentwickelt werden.

Da die Verbreitung und Verbesserung von Smartphones (mit, aber auch ohne
Android Betriebsystem) stetig zu nimmt, wird die zukünftigen Entwicklun-
gen in diesem Bereich eine wichtige Rolle spielen [23]. Dank der TUGraz,
dem Institut für Informationssysteme und Computer Medien und meinem
Betreuer, Dipl.-Ing. Dr. Ebner Martin, hatte ich die Möglichkeit hierzu einen
Beitrag zu leisten.
Literaturverzeichnis
[1] Sayed Bashimi, Satya Komatineni, and Dave MacLean. Pro Android 2.
2010. Seite 3ff.

[2] Arno Becker and Marcus Pant. Android 2 Grundlagen der Programmie-
rung. Auflage 2. 2010. Vorwort.

[3] Michael Böning. Erster android-trojaner verschickt heimlich sms. Han-


dy News. http://www.handy-news.at/betriebssysteme/android/
erster-android-trojaner-verschickt-heimlich-sms-1122.
html(2010-08-12).

[4] Ben Elgin. Google buys android for its mobile arsenal. Businessweek On-
line. http://www.businessweek.com/print/technology/content/
aug2005/tc20050817_0949_tc024.htm?chan=tc (2005-08-17).

[5] Lukasz Konieczny. Gehört android wirklich die zukunft? http:


//mobile360.de/gehoert-android-wirklich-die-zukunft-11731.
html(2010-05-17).

[6] Heiko Mosemann and Matthias Kose. Android. 2009. Seite 5ff.

[7] Andreas Proschofsky. Android zieht dank rasantem wachstum am ipho-


ne vorbei. der Standard. http://derstandard.at/1277339469037/
Wettlauf-Android-zieht-dank-rasantem-Wachstum-am-iPhone-vorbei(2010-
08-03).

[8] unknown. Downloading open journal systems. http://pkp.sfu.ca/


ojs_download (2010-08-01).

[9] unknown. History. http://pkp.sfu.ca/history (2010-08-01).

[10] unknown. Journals using open journal systems by continent. http:


//pkp.sfu.ca/ojs-geog (2010-08-01).

[11] unknown. Open journal systems. http://pkp.sfu.ca/ojs (2010-08-


01).
[12] unknown. Open journal systems: Metsgatewayplugin class reference.
http://pkp.sfu.ca/ojs/doxygen/html/classMETSGatewayPlugin.
html(2008-07-14).

[13] unknown. A sample of journals using open journal systems. http:


//pkp.sfu.ca/ojs-journals (2010-08-01).

[14] unknown. Activity. Android Developers. http://developer.android.


com/reference/android/app/Activity.html(2010-08-05).

[15] unknown. The androidmanifest.xml file. Android Devel-


opers. http://developer.android.com/guide/topics/manifest/
manifest-intro.html(2010-08-05).

[16] unknown. Asynctask. Android Developers. http://developer.


android.com/reference/android/os/AsyncTask.html(2010-08-05).

[17] unknown. Menu. Android Developers. http://developer.android.


com/reference/android/view/Menu.html(2010-08-05).

[18] unknown. Saxparser. Android Developers. http://developer.


android.com/reference/javax/xml/parsers/SAXParser.html(2010-
08-05).

[19] unknown. Sharedpreferences. Android Developers. http://developer.


android.com/reference/android/content/SharedPreferences.
html(2010-08-05).

[20] unknown. User interface. Android Developers. http://developer.


android.com/guide/topics/ui/index.html#Layout(2010-08-05).

[21] unknown. View. Android Developers. http://developer.android.


com/reference/android/view/View.html(2010-08-05).

[22] unknown. What is android? Android Developers. http://developer.


android.com/guide/basics/what-is-android.html(2010-08-05).

[23] unknown. Smartphone-markt wächst um 50 prozent. Heise Zeit-


schriften Verlag. http://www.heise.de/newsticker/meldung/
Smartphone-Markt-waechst-um-50-Prozent-1057411.html (2010-
08-12).

[24] unknown. Smartphone. Wikipedia. http://de.wikipedia.org/wiki/


Smartphone (2010-08-05).

Das könnte Ihnen auch gefallen