UPBReader – Der aktuelle Stand

1 Feb

Da ich hier bisher eher Einträge über spezielle Themen bzgl. Android geschrieben habe, möchte ich dieses mal auf das eingehen was ich bisher in den Reader eingebaut habe.

Wie bereits in meinem ersten Beitrag geschrieben, baue ich auf dem FBReader auf, der als Open Source unter der GPLv2 lizenziert ist. Er ist im Android Market frei erhältlich. Meine Version des FBReader benötigt mindestens Android 3.0 Honeycomb als Betriebssystem. Da der FBReader mittlerweile doch recht komplex geworden ist, war die Einarbeitung nicht sehr einfach. Insbesondere das Einlesen und das Speichern des Textes war nicht sehr leicht zu verstehen. Das Einarbeiten besonders in diesen Teil des FBReaders war aber unvermeidlich, da ich diverse Informationen über Textpassagen für meinen Teil der Arbeit benötigte. Wofür ich diese Informationen benötigte werde ich am Ende noch auffassen. 

Features, die ich bisher implementiert habe

  • Ein neuer Menubutton öffnet einen Authentifizierungsdialog. Dieser ermöglicht ein einfaches Anmelden am Server und das Herunterladen eines EPubs mit all seinen bestehenden Annotationen.
  • Ein neues Popup wenn Text markiert wird. Dies verbessert aus meiner Sicht hauptsächlich das Aussehen.
  • Es können neue Annotationen dem aktuellen Dokument hinzugefügt werden. Diese werden farblich im Text hervorgehoben, um weitere Interaktionen damit zu erlauben.
  • So können auch bestehende Annotationen bearbeitet oder auch entfernt werden.
  • Die drei Aktionen „hinzufügen“, „bearbeiten“ und „entfernen“ wirken sich direkt auf die zugrunde liegende Objektstruktur und Datenbank aus.
  • Dabei wird die Objektstruktur auf die Datenbank abgebildet. Wenn die App neu gestartet wird, ist es umgekehrt und die Datenbank wird auf die Objektstruktur abgebildet.
  • Wenn eine Internetverbindung besteht und die Authentifizierung korrekt ist, werden die Aktionen auch auf den Datenbestand des Servers angewendet. Steht keine Internetverbindung zur Verfügung, werden die ausstehenden Jobs in eine art Warteschlange gelegt.
  • Da Android BroadcastReceiver anbietet und ich somit direkt erfahren kann, wann sich die Konnektivität verändert hat, wird zu diesem Zeitpunkt ein Service gestartet, der im Hintergrund versucht die ausstehenden Jobs der Warteschlange abzuarbeiten.
  • Es gibt die Möglichkeit, sich eine Annotation mit ihren Daten anzeigen zu lassen. In dieser Ansicht können einer Annotation Kommentare hinzugefügt werden, die allerdings nicht auf eine Textposition sondern auf die angezeigte Annotation zeigen.

Im Hintergrund wurde natürlich noch einiges mehr implementiert, was ich hier aber nicht als erwähnenswert erachte.

Nun nochmal zu den benötigten Informationen. Ein Ziel von mir war es, neue Annotationen einem EPub hinzuzufügen oder auch bestehende bearbeiten zu können. Dafür musste ich mir überlegen, wie man die Position der Annotation definieren kann, so dass es auch für andere Anwendungen nicht sehr kompliziert wäre, diese zu interpretieren. Entschieden habe ich mich dafür, XPath zum Auswählen des Tags in dem die Annotation startet bzw. endet zu verwenden. Zusätzlich speichere ich noch den CharOffset, da eine Annotation selten direkt am Anfang eines Tags beginnt.  Nun kann man sich aber vorstellen, dass der FBReader die Positionsbestimmung eines bestimmten Textes anders durchführt. Da ich hier nicht zu viel darüber schreiben möchte sei einfach gesagt, dass das Umrechnen von der FBReader Position zu XPath und CharOffset etwas problematischer war als gedacht und ich deshalb einige Informationen tief aus dem FBReader beschaffen musste.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: