Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

Monday, January 9, 2012

Android und Maven

In einem aktuellen Projekt habe ich mit Webservices und Android zu tun. Wenn ich bisher mit Java EE zu tun hatte, habe ich Maven als Projektverwaltungstool benutzt. Nun möchte ich auch das Android-Projekt von Maven verwalten lassen. Im Netz habe ich unter folgendem Link einen extra Archetype für solche Maven-Projekte gefunden.
https://github.com/akquinet/android-archetypes/wiki/android-quickstart-archetype
Dort ist ein ganz einfaches Beispiel beschrieben, wie ein solches Maven-Projekt aufgesetzt wird. Dies sieht wie folgt aus:
 mvn archetype:generate
-DarchetypeArtifactId=android-quickstart
-DarchetypeGroupId=de.akquinet.android.archetypes
-DarchetypeVersion=1.0.7
-DgroupId=your.company
-DartifactId=my-android-application
Dies funktionierte ohne Probleme. Danach kopierte ich die Dateien eines bestehenden Android-Projekts in das durch Maven generierte Projekt. Die danach aufgetretenen Fallstricke möchte ich in diesem Post kurz erklären.
  1. Das ist zwar ein Standardfehler, bei meinen Android Projekten, aber er trat wieder auf. Wenn wieder mal Eclipse neu eingerichtet wird und dann das Android-Eclipse-Plugin für Android installiert wird, sollte man nicht vergessen den Installationspfad zum SDK zu setzen.
  2. Ebenso ist der Pfad in der Maven-Konfiguration des Android-Build-Plugins zu setzen.
  3. Das Build-Plugin fordert ebenso eine minimale Maven-Version, die ich ebenso nachinstallieren musste. Dies ist die Version 3.0.3.
  4. Im Android-Manifest sollte man die benötigte Android-API-Version (android:minSdkVersion)noch prüfen.

Sunday, July 24, 2011

Android: Eine kleine Radio-App

Oft hat es mich bereits gefrustet, dass es vom MDR bereits für Jump eine Android-App gab, mit der man den Internetradio-Stream hören konnte, aber für mein geliebtes Figaro dagegen nicht. Einen Livestream haben Sie zwar schon, jedoch ist dieser nur über die Internetseite von MDR Figaro abspielbar.

Nun ja, das stimmt nicht ganz, man kann auch noch eine Wiedergabeliste dafür herunterladen. Ein beliebiger Player kann den Stream dann abspielen. Nachdem ich mir die Wiedergabeliste, eine pls-Datei, mal im Texteditor angeschaut hatte, war mir klar, dass ich auch selbst was damit anstellen könnte.

So schaut eine pls-Datei aus:

[playlist]
numberofentries=1
File1=http://c22033-l.i.core.cdn.streamfarm.net/22007mdrfigaro/
live/3087mdr_figaro/live_de_128.mp3
Length1=-1

Gestern früh kam mir dann der Gedanke: Jetzt wo ich selbst ein Android-Telefon besitzte und ich auch noch Java kann, sollte ich mir doch mal eine eigene Figaro-App schreiben.

Den entsprechend geeigneten Player zu finden , der von Android für Internet-Audiostreams geboten wird, war nicht schwer. Der AsyncPlayer ist sehr einfach zu benutzen. Man übergibt einen URI und sagt ihm, dass er den Stream abspielen soll. Nach ein paar Sekunden beginnt er. Will man die Wiedergabe anhalten, ruft man die Stop-Methode auf. Mehr kann man mit diesem Player nicht anstellen. Folgender Code zeigt ein Beispiel:

android.media.AsyncPlayer player = new AsyncPlayer("StreamPlayer");
Uri uri = Uri.parse("http://c22033-l.i.core.cdn.streamfarm.net/22007mdrfigaro/
  live/3087mdr_figaro/live_de_128.mp3");
player.play(this, uri, true, AudioManager.STREAM_MUSIC);
// Der Stream läuft
player.stop();
// Der stream ist gestoppt. Pause gibt es nicht.

Die App kommt aufgrund der Einfachheit mit einer Activity aus. Leider habe ich doch mehr als 5 Stunden daran gesessen. Grund dafür ist die bescheidene Android-Oberflächengestalltung. Das Layout macht nie das, was es soll :-) Die Beschreibung der View in XML ist eine saubere Sache, da Logik und Anzeige getrennt werden. Jedoch wäre es meines Erachtens nach gut gewesen, sich bei der Beschreibung der Oberfäche an XHTML und CSS zu orientieren. Lange Rede, kurzer Sinn: Die entworfene Oberfläche ist sehr einfach gehalten. Ein Play/Pause-Button und ein Stop-Button sowie ein Hintergrundbild habe ich für die View verwendet.

 Wer Interesse an der App hat, kann Sie sich unter folgendem Link herunterladen.

http://dl.dropbox.com/u/3538883/Downloads_Max_Blog/MDRFigaroWebRadio.apk

Saturday, July 9, 2011

Über mich

Als erstes möchte ich für den frischen Blog ein paar Worte zu mir sagen.

Ich studiere seit 2008 Informatik und schreibe bereits meine Bachelorarbeit. Das Thema der Bachelorarbeit ist die "Entwicklung einer Monitoring-Komponente für den HTS" (http://www.humantaskservice.blogspot.com/). Um nur mal ein paar Buzzwords für die (Java-) Technologien zu nennen, mit denen ich mich gerade beschäftige, sei folgendes genannt:
  • OSGi: Der HTS besteht aus den Teilen HTP, TPC und der Human Task Infrastructure (HTI). Diese wurde basierend auf dem OSGi-Standard entwickelt. Kurz gesagt bietet dieses Framework die folgenden Vorteile, die Grund für den Einsatz dessen waren: Modularisierung, Erweiterbarkeit, austauschbarkeit, Hot-Deployment
  • Drools (Rule-Engine): Mit Hilfe von Rule-Engines kann man Business-Code einer Anwendung der aus etlichen If-Then-Else-Statements besteht in Form von Regeln implementieren. Diese Regeln, oft in einem extra Dokument formuliert, können dann von einer sog. Rule-Engine auf einen Satz von Daten ausgeführt werden. Damit errreicht man selbst bei einer riesigen Datenmenge eine immernoch performante Abarbeitung. Ein weiterer Grund Business-Logik in solchen Regeln zu formulieren ist, dass die einzelnen Regeln (je nach verwendeter  Regel-Sprache) einfacher lesbar, damit schneller verständlich und besser wartbar sind. Gerade in der heutigen Welt ändern sich die Anforderungen an ein Software-System sehr schnell.
  • JMX: Die Java Management Extension erlaubt es Java-Anwendungen zu monitoren. Mehr dazu auf http://de.wikipedia.org/wiki/Java_Management_Extensions
  • JAX-WS: Da die Dienste des HT-Service über das Netz angeboten werden, liegt es nahe Java-Webservices zu nutzen.
Dies sind die wichtigsten Technologien, mit denen die Monitoring-Komponente umgesetzt wird.