RSS-Feed

Android Fragments

von Kai um 10:07 am Mittwoch, 1. Februar 2012 in Android, How-To | 0 Kommentare

Gefühlte 95% aller Android Apps sind nicht für Tablets angepasst, was zur Folge hat, dass viele Apps einfach schlimm aussehen. Dabei wurde vor ziemlich genau einem Jahr eine sog. Fragment API veröffentlicht, die die Anpassung bestehender (und neuer) Apps auf Tablets einfacher gestalten soll. Ziel ist es, eine einzige APK-Datei (also App) für alle Plattformen zu bauen, um damit den Mehraufwand beispielsweise bei Aktualisierungen zu minimieren.

Da meine beiden kleinen Apps bisher ebenfalls nicht mit gutem Beispiel vorangehen, habe ich mich mal etwas näher mit der Android Fragment API beschäftigt. Die Idee dahinter ist schnell erklärt: Statt bisher einer Activity hat man nun eine FragmentActivity, die wiederum eine oder mehrere Fragments beinhaltet. Für ein Smartphone bietet sich nun an, je FragmentActivity ein Fragment darzustellen. Bereits veröffentlichte (oder geplante) Apps lassen sich damit komplett auf Fragments portieren, ohne etwas am Design, Aufbau oder der Interaktion der App etwas zu ändern. Um dieselbe App nun auf Tablets zu portieren, passt man den Aufbau der App (also die entsprechende XML-Datei der FragmentActivity) dahingehend an, dass man je nach Größe, eben zwei oder mehrere Fragments pro FragmentActivity anzeigt.

Ein häufig anzutreffendes Beispiel ist die Listenansicht innerhalb einer Activity: Klickt der Benutzer auf ein Listenelement geht eine neue Activity auf mit dem Verweis des geklickten Elements. Auf einem Tablet ist genug Platz, um neben der Liste einen Bereich anzuzeigen, der den Inhalt des aktuellen Listenelements anzeigt.

Da das Konzept von Fragments am Anfang etwas verwirrend sein kann, hab ich auf GitHub ein minimales Minimalbeispiel gebaut, was eine einfache Liste darstellt und eine zweite Ansicht mit dem Inhalt jedes Listenelement zeigt.



Podcast App für Android

von Kai um 19:41 am Sonntag, 23. Oktober 2011 in Android, Produktivität | 5 Kommentare

Anfang des Jahres hatte ich mir zum Ziel gesetzt eine Podcast App für Android zu schreiben, die genau so aussieht und ganz bestimmte Features hat, wie ich sie bei anderen Podcast Apps im Android Market vermisst habe. Wie das aber nun mal so ist mit Hobby-Projekten habe ich in den ersten beiden Wochen nach dem ersten Commit ca. 80% aller Features implementiert und dann erstmal wieder die Lust daran verloren. Zum einen bin ich kein Designer. Daher fällt mir die Gestaltung eines Icons für die App oder die einzelnen UI-Elemente in der App sehr schwer, zum anderen gibt es bei jedem Projekt immer Sachen, die einem mehr Spaß machen und (notwendige) andere Sachen, die man soweit nach hinten schiebt, bis das ganze Projekt hängt, weil eben gerade diese bestimmte Funktionalität noch nicht implementiert ist.

Der aktuelle Stand sieht so aus wie in den Screenshots, die ich in dem Beitrag hier verlinkt habe. Die einzelnen Podcasts besorge ich mir aus dem Miro Podcastverzeichnis, die für Drittanwendungen eine API anbieten, um auf die dort gelisteten Podcasts zuzugreifen und zu abbonieren. Im Prinzip ist die App bereits fertig und muss nur noch “rund” gemacht werden. Dazu zählt intensives Testen der Anwendung und eben die vorher erwähnte Gestaltung eines Icons und diverser UI-Elemente.

Nach meinen positiven Erfahrungen mit SparkleShare hinsichtlich kollaborativer Zusammenarbeit (Pleonasmus-Alarm) überlege ich derzeit, ob ich das Repository, was sowieso schon auf github.com liegt, nicht auch frei gebe. Bleibt für mich bloss die Frage, wer denn Lust hätte (freiwillig) sich mit UI-Design zu beschäftigen? ;-)


SparkleShare für Android

von Kai um 16:18 am Freitag, 21. Oktober 2011 in Android, News | 4 Kommentare

Nach knapp vier Wochen Entwicklungszeit (hauptsächlich Abends und am Wochenende) hab ich diese Woche zusammen mit dem Hauptentwickler von SparkleShare eine erste Version für Android geschrieben.

Was ist SparkleShare?

SparkleShare ist vergleichbar mit dem bekannteren Dropbox, also einem Onlinedienst, mit dessen Hilfe man Dateien in einen bestimmten Ordner auf seinem Computer schiebt und diese dann über mehrere Computer, Tablets und Smartphones hinweg synchronisieren kann. Der Vorteil von SparkleShare ist, dass man für die Synchronisation einen eigenen Server benutzen kann und damit (zumindest theoretisch) die volle Kontrolle über seine Daten behält.

Ich bin da der gleichen Meinung wie beispielsweise Dirk Deimeke, der gerne mal verlauten lässt, dass fremdgehostete Dienste grundsätzlich eine schlechte Idee sind. Wie man seinen eigenen Server mit SparkleShare aufsetzt wird hier näher erklärt. Die von mir geschriebene Android-App benutzt die SparkleShare-Erweiterung Dashboard. Wer also seine Dateien bequem von seinem Android-Smartphone aus durchsuchen möchte, sei ebenfalls auf ein kleines Tutorial hier verwiesen.

Damit das ganze in Zukunft einfach zu installieren und zu benutzen ist, hab ich Hylke, den Entwickler von SparkleShare, schon darauf angehauen, dass Dashboard direkt mit SparkleShare ausgeliefert wird, so dass man im Idealfall mit ein paar Befehlen auf der Kommandozeile seinen eigenen SparkleShare Server aufsetzen kann.

Objectify

von Kai um 15:10 am Donnerstag, 18. August 2011 in Android, Objectify | 1 Kommentar

Gestern habe ich die erste Version von Objectify veröffentlicht, einen mobilen 3D-Scanner für Android Smartphones.

Die App nutzt die Frontkamera und das Display des Smartphones, um das zu fotografierende Objekt von verschiedenen Seiten zu beleuchten und aus den gewonnen Informationen die Oberflächengeometrie zu rekonstruieren.

In der ersten veröffentlichten Version lassen sich 4-9 Fotos schießen, um ein 3D-Objekt zu rekonstruieren. In den folgenden Versionen werde ich noch verschiedene Exportmöglichkeiten wie obj einbauen, um das 3D-Objekt auch mit anderen Programm öffnen zu können. Ein Export nach (animierter) Gif-Grafik steht ebenfalls auf der TODO-Liste.

Die Rekonstruktion der Oberflächengeometrie funktioniert über ein sogenanntes Photometric Stereo Verfahren und ist am besten in sehr dunklen Umgebungen. (Wer diese App also tatsächlich kaufen und ausprobieren möchte, sollte sich zuvor in einen dunklen Raum begeben, um das beste Ergebnis zu erhalten).
Auf meinem Schreibtisch liegen aber schon einige Publikationen, die dieses Verfahren auch in Echtzeit beschreiben. Das ist daher (neben den bereits beschriebenen Updates) der nächste Schritt für mich: 3D-Rekonstruktion in Echtzeit, yeah :)

Die App ist derzeit sowohl im AndroidPIT-Market, als auch im offiziellen Android-Market von Google erhältlich. Einfach auf die Badges hier klicken, um in den jeweiligen Market zu gelangen.

AndroidPIT BadgeAvailable in Android Market

Android 2.3

von Kai um 20:02 am Montag, 6. Dezember 2010 in Android, News | 0 Kommentare

Heute wurde das neue Android SDK in der Version 2.3 veröffentlicht. Ich habe mir das SDK bereits gezogen und mir die Neuerungen angeschaut. Einige werden sich sicherlich über das neue Low-Latency Audio freuen. (:-) ) Insgesamt soll Android 2.3 wohl etwas schneller sein und besser performen. Ich hab auf dem Nexus One noch keine Nachricht für ein mögliches Update bekommen, hoffe aber, dass ich das mit dem (Google) Smart- phone wieder schnell haben werde. Eine weitere Neuerung ist der DownloadManager, der mit größeren Downloads zurecht kommt. Bedeutet Downloads werden erneut angestoßen, falls was schief ging, Netzwechsel sollen (hoffentlich) kein Problem mehr sein und im Lockmodus bzw. im Hintergrund wird weiter geladen.

Ich werde das zum Anlass nehmen mich mal an einem eigenen Podcast-Client für Android zu versuchen, da alle, die ich bisher ausprobiert habe mindestens unter dem eben angesprochenen Problemen litten und daher Downloads manchmal nicht richtig klappten.
Das Programm wird dann zwar für 2.3 geschrieben und damit wohl nur auf wenigen Smartphones laufen (bisher), aber ich brauche endlich eine gute mobile Lösung um Podcasts zu hören.

Gossensches Gesetz

von Kai um 17:38 am Montag, 23. August 2010 in Allgemeines | 2 Kommentare

Android-AppEs ist schon interessant. Das erste Mal, als ich vor zwanzig Jahren einen GameBoy in der Hand hatte, war ich so beeindruckt von diesem kleinen Gerät, dass ich mich noch heute haargenau daran erinnern kann, was mir damals durch den Kopf ging, als ich zum ersten Mal Tetris spielte.
Ich malte mir aus, dass ich in der Klasse der Held sein würde und auf dem Pausenhof meine Klassenkameraden darum betteln würden, einmal kurz damit spielen zu dürfen. Ich habe Duck Tales und Tetris bestimmt monatelang täglich gespielt, ohne dass es mir je langweilig dabei wurde.

Als ich kurz darauf meinen ersten C64 bekam und Pirates, International Karate oder Last Ninja spielte, war ich fasziniert von der unglaublichen Grafik und den vielen Möglichkeiten, die man in diesen Spielen geboten bekam.
Einige Jahre später schrieb ich dann meine ersten BASIC-Programme und glaubte fortan, mit Computern ließe sich alles anstellen, woran man im entferntesten auch nur denken könne.

Wenn ich mich heute mit Technologie und Software beschäftige ist nicht mehr viel von der damaligen Faszination zu spüren. Ich habe mich so sehr daran gewöhnt, meine Joggingstrecke im Internet über GPS-Tracking nachvollziehen zu können und in meiner Hosentasche ein Smartphone zu haben, was mir einen nahezu vollwertigen Internetzugang bietet, wodurch jede Information nur ein Klick Touch weit entfernt ist, dass ich ungeduldig werde, wenn eine Webseite mal länger als einige Sekunden zum Laden braucht.

Ich entwickle über die Semesterferien in Zusammenarbeit mit meiner Hochschule (a.k.a FH) eine mobile Anwendung, die aus einem Kamerabild mittels einem optischem Chromasplitter ein 3D-Objekt extrahiert. Nochmal in kurz und verständlich: Aus einem Kamerabild wird ein 3D-Objekt erstellt. (Das Titelbild für diesen Beitrag ist nur die Vorarbeit gewesen und noch nicht das Endprodukt). Die einzige Reaktion, die ich bisher dazu bekomme habe, war: “Cool” oder “interessant” und im Grunde genommen fühle ich genauso: Nettes Projekt, nicht mehr, nicht weniger. Hätte man mir vor zwanzig Jahren versucht zu erklären, dass man aus einem Kamerabild ein 3D-Modell erzeugen kann, dann hätte ich das sicherlich unter Science-Fiction verbucht oder es als Humbug abgetan. Hätte man mir den Beweis gezeigt, wäre ich wohl ehrfürchtig auf die Knie gesunken. Heute ist es ein Projekt, was man mal so über die Semesterferien gemacht hat.

Denkbar, dass sich Menschen in der Zukunft darüber aufregen werden, dass die Sitze so unbequem sind auf dem Interplanetarflug zum Mars.

Neues Smartphone: HTC Hero

von Kai um 16:47 am Freitag, 16. Oktober 2009 in Allgemeines, News, ubuntu | 2 Kommentare

Da ich unter der Woche mehrere Stunden in Bus und Bahn verbringe, hatte ich schon länger über den Kauf eines Smartphones nachgedacht. Ich war mir nur nicht so sicher, welches es letztlich sein sollte. In der engeren Auswahl hatte ich den Palm Pre, das IPhone und das HTC Hero.

Letztlich habe ich mich gegen die ersten beiden und für das HTC Hero entschieden, da ich einerseits in diesem Internet eine Menge guter Reviews gefunden habe und andererseits die Zusammenarbeit mit Ubuntu augenscheinlich besser funktioniert als z.B. mit dem IPhone. Zudem hat mich am IPhone genervt, dass Apple so restriktiv mit ihrem Produkt umgeht (siehe Auflagen für Entwickler im Appstore) und sich imho langsam aber sicher zum zweiten Microsoft entwickelt.

Kurz gesagt, ich bin begeistert vom HTC Hero. Da ich vor einigen Tagen Gelegenheit hatte ein IPhone ausgiebig auszuprobieren, geht das nachfolgende Review auch etwas auf die Unterschiede der beiden Smartphones ein:

htc_heroNach kurzer Eingewöhnungszeit lässt sich auf dem Teil prima, auch längere Sachen, schreiben. Jedesmal, wenn man eine Taste tippt, vibriert das Gerät kurz, so dass man ein haptisches Feedback bekommt. Es liegt gut in der Hand und verschmiert nicht ganz so stark nach einiger Benutzung (die Oberfläche ist wohl dieselbe wie beim IPhone, da sieht man zwar auch Tapser, aber es ist einigermaßen ok).

Was ich gut finde ist, dass man so ziemlich alles einstellen und individualisieren kann, bzw. es eine Menge Apps im Android Market gibt, die einem dabei helfen, das Hero auf die eigenen Bedürfnisse hin zu konfigurieren. So bin ich schon am ersten Tag auf das AudioManager Widget gestoßen, was die Lautstärke für die verschiedenen Funktionen (SMS, Alarm, Telefonanruf, Wecker, System usw.) einstellen kann. Eine weitere tolle App zum Individualisieren  ist Locale, welche auch ein nettes Sümmchen von 275.000$ gewonnen hat.

Generell finde ich den Android Market bisher ganz ok. Es gibt zwar hin und wieder einige Anwendungen, die seehr nach Werbung und Spam aussehen, aber die erkennt man in der Regel direkt, weil andere Leute das schon in den Kommentaren hinterlassen haben und die sich mit einem entsprechenden Button auch direkt melden lassen.

Da ich ein Googlekonto besitze, war die Einrichtung des HTC sehr einfach, es wurden alle Kontakte übernommen und die Mailsynchronisation klappt reibungslos (ich benutze IMAP). Toll fand ich auch, dass meine Kontakte mit den Facebook-Freunden synchronisiert werden und fehlende Details wie Profilbilder oder Geburtstagstermine automatisch abgeglichen wurden.

Generell merkt man beim HTC Hero, dass es viel lockerer mit Einschränkungen umgeht, was einerseits Vor- aber auch Nachteile hat. So kann man, wenn man es darauf anlegt, das Smartphone schon schnell in Bedrängnis bringen, wenn man mal eben 9-10 Programme startet und alle im Hintergrund offen lässt. Bisher habe ich auch noch nicht herausgefunden, ob sich die einzelnen Prozesse irgendwann selbst wieder beenden, oder ob man sich einer weiteren App,  dem Advanced Task Killer, bedienen muss, damit man den Speicher wieder frei und das Smartphone flüssig bekommt.

Surfen auf dem Hero ist ebenfalls gut. Das einzige was mich etwas stört ist, dass man dem Browser meines Erachtens ruhige ein paar mehr Funktionen hätte spendieren können. Lesezeichen lassen sich nicht importieren, es gibt keine Schnittstelle zu Sync-Diensten wie z.B. Delicious und eine URL eingeben muss man über den Suche-Button, was generell kein Problem darstellt, aber für mich erstmal contraintuitiv war. Vielleicht geht das auch anders, bisher habe ich aber nicht herausgefunden wie.

Als persönliches Fazit muss ich sagen, dass sich Iphone und HTC Hero wenig nehmen. Menüführung und Browsing sind beim IPhone einen Zacken geschmeidiger finde ich, und das IPhone ist manchmal etwas intuitiver, obwohl das auch nicht durchgehend der Fall gewesen ist.

Ich werde hier dann und wann meine beliebtesten Apps aus dem Android Market posten, sobald ich mich über deren Qualität ausgiebig informieren konnte:-)