Skip to content

Audio vom Android-Handy mit Bluetooth auf dem Linux-Rechner abspielen

Vorab: Ich höre gern Podcasts, hauptsächlich auf meinem Android-Phone, und da meistens über Kopfhörer oder im Auto über Bluetooth. Da das Autoradio kein Bluetooth kann, habe ich einen kleinen Bluetooth-Empfänger in der Mittelkonsole liegen, das per USB Strom bekommt und Audio über ein Klinkenkabel weiterreicht. Das ist nicht wirklich komfortabel, funktioniert aber gut, und ist hier eigentlich gar nicht relevant. Leider (oder zum Glück) fahre ich gerade aber gar nicht viel mit dem Auto.

Häufig kommt es vor, dass ich einen Podcast anfange und zuhause zu Ende hören möchte. Da meine Podcast-App (aktuell Player FM, davor AntennaPod) sich natürlich die letzte Position merkt, diese aber nicht mit Desktop-Anwendungen synct, muss ich entweder manuell zur entsprechenden Stelle springen oder eben auf dem Handy weiterhören.

Damit kann ich leben, habe aber nicht immer Lust, zuhause mit Kopfhöreren oder Klinkenkabel zu hantieren. Daher dachte ich, dass es doch möglich sein muss, den Rechner mit dem Phone über Bluetooth zu pairen, so dass das Phone die Quelle und der Rechner das Abspielgerät ist.

Stellt sich heraus, dass sowas geht, aber dafür ist etwas Handarbeit nötig.

"Audio vom Android-Handy mit Bluetooth auf dem Linux-Rechner abspielen" vollständig lesen

Leistungsschutzrechtprotestplugin

Nachdem Ende letzter Woche das Leistungsschutzrecht für Presseverleger im Bundestag verabschiedet wurde, spülte meine Timeline das Wordpress-Plugin vom D64 Zentrum für Digitalen Fortschritt wieder in meine Aufmerksamkeit. Das Plugin lädt eine Blacklist aus dem Netz, in der die Domains von Verlagen gesammelt werden, die das LSR unterstützen. Mittels dieser Liste lenkt es Links zu den Verlagsseiten, die in Blogartikeln enthalten sind, auf eine Hinweisseite zum LSR um:

Coole Idee. Ein kurzer Blick auf GitHub sagte mir, dass es nicht schwer sein würde, das Plugin für Serendipity zu adaptieren. Gesagt, getan.

"Leistungsschutzrechtprotestplugin" vollständig lesen

PHPUnit für die Entwicklung von Serendipity-Plugins

Geben wir es ruhig zu, der PHP-Code von Serendipity ist nicht mehr State of the Art, sondern zum großen Teil noch auf dem Stand von PHP 4. Dass dieser Code immer noch sehr zuverlässig funktioniert, und ob und wie mit dem aktuellen Stand umzugehen ist, soll hier nicht das Thema sein. Ich möchte hier auf die Entwicklung von Serendipity-Plugins eingehen, die nicht umsonst in einem eigenen Repository leben. Deren Qualität lässt sich mithilfe von Unit Tests sicherstellen.

PHPUnit für Plugins

Auch wenn die Grundfunktionalität von Serendipity durch Unit Tests abgedeckt ist: Die Plugin-Entwicklung ist bisher nicht so einfach zu testen. In meinen letzten Projekten waren Unit Tests mit PHPUnit ein zunehmend zentraler Bestandteil der Entwicklung. Entweder damit ich nachträglich sicherstellen konnte, dass Klassen und Methoden bei Veränderungen und Refactoring noch taten, was sie tun sollten; oder weil ich testgetrieben entwickelte, das heißt zuerst die Unit Tests und dann erst den zu testenden Code schrieb. Dieses Vorgehen möchte ich nicht mehr missen, und es hat mich gestört, dass es bei der Entwicklung von Serendipity-Plugins nicht ohne Weiteres möglich war.

Screenshot einer Konsole mit erfolgreich durchlaufenen Unit Tests

Daher habe ich mich hingesetzt und PHPUnit so in meine lokale Serendipity-Installation, die ich zum Entwickeln verwende, integriert, dass ich einzelne (Event-)Plugins separat testen kann. Die spezifischen Herausforderungen ließen sich recht schnell überwinden:

  • In Serendipity werden Plugins stark getrennt vom Core über Event-Hooks ausgeführt. Diese Hooks müssen natürlich einzeln getestet werden können.
  • Viele Variablen sind als global deklariert oder werden per Referenz "herumgereicht". Das erfordert einige Workarounds, die heute dank Dependency Injection und ähnlichen Entwurfsmustern zum Glück überflüssig sind.
  • Data Fixtures: Um Serendipity für die Tests "hochzufahren", wird eine Datenbankverbindung benötigt. Mir ist es bisher nicht gelungen, eine der unter Database Testing aufgeführten Methoden umzusetzen. Besser gesagt: Ich war einfach zu faul und habe die nötigen Daten in einer SQLite-Datenbank hinterlegt.
"PHPUnit für die Entwicklung von Serendipity-Plugins" vollständig lesen

Mediacenter on a Stick: OpenElec, XBMC, Spotimc

Als Follow-Up auf meinen Blogpost "Spotify unter Ubuntu mit Android fernsteuern" möchte ich wie angekündigt im Folgenden aufschreiben, wie mein aktuelles "Wohnzimmer-Setup" aussieht. Damit kann ich Musik und Filme nicht nur von meinem lokalen Home-Server streamen, sondern Musik eben auch über Spotify, und ich kann alles mit meinem Android-Handy bequem von der Couch aus fernsteuern. Zwar ist die Bedienung wahrscheinlich weniger elegant als bei mancher kommerziellen Lösung, dafür sind aber die Möglichkeiten dank Open Source weitaus weniger eingeschränkt.

Meine Voraussetzungen: Ich besitze ein Netbook - ein Medion Akoya E1210 von Aldi, nahezu baugleich mit dem MSI Wind U100 - und hatte es schon häufig neben den großen Fernseher im Wohnzimmer gestellt, um darauf Filme aus der Mediathek oder von Platte anzusehen. Auf dem Netbook läuft ein aktuelles Ubuntu, allerdings boote ich dieses in letzter Zeit kaum noch. Deshalb habe ich mich nach einer passenden Media-Lösung umgesehen. Da das Netbook nur einen VGA-Ausgang besitzt, habe ich den TV über ein VGA-zu-VGA-Kabel angeschlossen.

XBMC

Screenshot XBMC

Um die Wiedergabe von Medieninhalten auf dem großen TV zu vereinfachen, habe ich irgendwann das Paket xbmc (und xbmc-standalone) installiert. XBMC hieß früher Xbox Media Center und entstand als Open Source-Projekt genau für diesen Anwendungsfall: ein Mediacenter für eine (ausrangierte) Microsoft Xbox der ersten Generation.

Mittlerweile lässt sich XBMC auf einer Vielzahl von Hardware-Plattformen einsetzen, auf dem letzten LinuxTag konnte ich sogar eine Variante für den Raspberry Pi-Minicomputer bewundern. Die Hardware-Anforderungen sind also erfüllbar, mein Netbook mit einem 1,6 GHz Intel Atom-Prozessor, integriertem Intel GMA 950-Grafikchip und nur 1 GB RAM reicht für die meisten Anwendungsfälle aus. Mag sein, das sehr anspruchsvolle HD-Filme mein Setup in die Knie zwingen - in diese Verlegenheit kam ich aber bislang nicht.

Für XBMC existieren recht hübsche grafische Oberflächen, wie man sie von Mediacentern kennt. Im eigenen WLAN lässt sich XBMC sogar über einen anderen PC via Browser oder übers (Android-)Smartphone bequem von der Couch aus fernbedienen. Dazu später mehr.

Von meinem Ubuntu-Desktop aus ließ sich XBMC ganz einfach als Programm starten und erkannte die Auflösung des Fernsehers automatisch korrekt. Meinen Heimserver mit Videos und Musik konnte ich ebenso wie andere Add-Ons (YouTube, Mediathek, Soundcloud) einfach verbinden und nutzen. Die Standalone-Variante von XBMC, die ohne Ubuntu-Desktop als Unterbau auskommt, lief ebenso - allerdings wurde hier die HD-Auflösung des Fernsehers nicht richtig erkannt. Auch dazu weiter unten mehr.

"Mediacenter on a Stick: OpenElec, XBMC, Spotimc" vollständig lesen

Spotify unter Ubuntu mit Android fernsteuern

Weil ich danach gefragt wurde, wie ich denn bitteschön Spotify unter Linux über mein Android-Smartphone fernsteuere, beschreibe ich das hier mal. Es gibt natürlich kommerzielle Lösungen, etwa von Sonos, die schon ziemlich komfortabel sind. Habe ich selbst noch nicht ausprobiert, kostet halt schlappe ca. 500 Euro (und hat jetzt nichts mit Linux zu tun). Es gibt aber auch Apps wie Spotify Controller, die sogar ganz gut im Zusammenspiel mit Ubuntu funktioniert, daher gehe ich kurz darauf ein. Meine eigentliche Lösung (feat. OpenElec, XBMC und Spotimc) stelle ich dann demnächst in einem gesonderten Blogpost vor.

Spotify Controller

Screenshot der Spotify Controller AppUm Spotify auf eurem Ubuntu-Rechner mit Hilfe der Android-App Spotify Controller fernsteuern zu können, braucht ihr zum einen den nativen Spotify-Client für Linux. Die aktuellste Version bekommt ihr am einfachsten über das Repository deb http://repository.spotify.com stable non-free. Auch wenn da "Preview" obendrüber steht - bei mir läuft die seit Monaten stabil, nur ein, zwei interne Spotify-Apps laufen nicht (z.B. die von Blue Note).

In der Beschreibung der App ist der Link zum zugehörigen Server versteckt, den ihr bei euch lokal auf dem Rechner installieren müsst, auf dem ihr auch den Spotify-Client installiert habt. Entpackt das Archiv, wechselt ins eben entpackte Verzeichnis und führt ./install aus. Nach Eingabe des root-Passworts ist der Server in der Regel startklar und kann mit SpotifyController und dann Klick auf "Start" gestartet werden.

Jetzt könnt ihr mit der Spotify Controller-App rudimentär euren Spotify-Client fernsteuern. Natürlich funktioniert das nur innerhalb des gleichen WLANs. Die offizielle Android-Spotify-App ermöglicht das Auswählen von Tracks und Playlisten über die Fernbedienung. Den Rest findet ihr selbst raus ;-)

GUI zu Steuerung des Spotify Controller Server unter Ubuntu
GUI zu Steuerung des Spotify Controller Server unter Ubuntu