Im Zuge einer Einarbeitung in die Programmiersprache Scala, dem Framework für verteilte und parallele Programmierung Akka sowie dem (mehr oder weniger) inoffiziellen Swing-Nachfolger JavaFX, habe ich ein privates Projekt begonnen, welches ich hier näher vorstellen werde.

In dieser mehrteiligen Blog-Serie "XBMC Desktop Client in Scala" möchte ich - neben einem kurzen Einstieg in XBMC und die oben genannten Frameworks - einen plattformunabhängigen Desktop-Client entwickeln, der in seiner ersten Version, eine einfache Steuerung des XBMC-Musiplayers darstellt. Durch die modulare Bauweise des Clients werden nachträgliche Funktionalitäten - wie eine Videoplayer-Steuerung - relativ trivial umsetzbar sein.

XBMC

Bei XBMC, das früher Xbox Media Center genannt wurde, handelt es sich um eine Media-Center-Applikation, die das Abspielen von Musik, Videos und Bildern in Form von lokalen Dateien, aber auch Internet-Streams ermöglicht.

Ursprünglich für die Microsoft Spielekonsole Xbox entwickelt, mauserte sich XBMC über die Jahre hinweg zur erfolgreichsten und bekanntesten Media-Center- Software, die mittlerweile auf unterschiedlichen Geräten und Betriebssystemen installiert werden kann. Neben Versionen für die Betriebssysteme Windows, Linux, OSX und Android, unterstützt XBMC die iOS-Geräte AppleTV, iPad und iPhone, aber auch den "Mini-PC" Raspberry PI. XBMC kann als separate Software in einem laufenden Betriebssystem installiert oder als vorkonfiguriertes Betriebssystem heruntergeladen werden. Bekannte XBMC-Distributionen, die allesamt auf Linux basieren, sind OpenELEC, Raspbmc oder XBian. In meinem Fall kommt OpenELEC in der aktuellen Version 3.2.4 sowie ein Raspberry PI zum Einsatz, das an meinem Fernseher per HDMI angeschlossen ist. Das Raspberry besteht aus folgenden Komponenten, die allesamt bei Amazon erhältlich sind:

JSON-RPC API

Um gewisse Funktionalitäten eines XBMC-Systems von außen ansprechen zu können, bietet XBMC ein auf JSON basierendes API an. Diese recht ausführlich dokumentierte Schnittstelle (v6) kann entweder über HTTP, reines TCP oder auch WebSockets angesprochen werden. In diesem Fall habe ich mich für die neueste Technologie - die WebSockets - entschieden. Auf Grund der mächtigen Funktionalität, mit der man durchaus auch Schindluder betreiben kann, muss diese Schnittstelle jedoch erst manuell - wie in der verlinkten Dokumentation beschrieben - aktiviert werden.

Anschließend stehen einem die vielfältigsten Möglichkeiten zur Remote- Steuerung des XBMC-Systems zur Verfügung. Darunter fallen unter anderem:

  • Steuerung der grafischen Oberfläche ("hoch, runter, links, rechts")
  • Herunterladen von Dateien
  • Neustarten oder Herunterfahren des Systems
  • Remote Steuerung des Video- und Audioplayers

In diesem Projekt soll jedoch erst einmal die Steuerung des Audioplayers im Vordergrund stehen, mit den obligatorischen Audioplayer-Funktionalitäten, Start, Stop, nächste oder vorherige Audiodatei, dem Ausführen des Partymodus oder dem Anzeigen des aktuell abgespielten Titels und der Playlist. Einfache Systemfunktionen, wie das Neustarten oder Herunterfahren des Systems sollen ebenfalls nicht zu kurz kommen.

Der nächste Artikel in dieser Blog-Serie behandelt das Aufsetzen und die Konfiguration eines Multimodul-Projektes auf Basis des Build-Managements-Tools sbt.

blogroll
tags