Archiv der Kategorie: Software

Protocoder – schnell mal eine Android App coden

Protocoder IDE
Protocoder IDE

Protocoder ist eine App, welche mich seit langem mal wieder sehr fasziniert hat. Der Name sagt schon alles über sie aus: Proto(type)coder. Denn genau dazu ist sie da: um sehr einfache Prototypen zu erstellen. Hierzu bringt die App ein völlig neues Konzept mit: eine IDE, welche direkt über den Browser eines PCs zu erreichen ist. Dazu wird nach App-Start ein Webserver auf Port 8585 bereitgestellt. Alternativ kann das Gerät auch per USB an einen PC angeschlossen und die Verbindung (mit dem adb Tool aus dem Android SDK) getunnelt werden:

$ ./adb forward tcp:8585 tcp:8585
$ ./adb forward tcp:8587 tcp:8587

Somit ist die IDE auch ohne Wifi via lokalem Webserver unter http://localhost:8585/ erreichbar.

Funktionsumfang

Nach dem Start der App können sofort die mitgelieferten Beispiele gestartet werden und man versteht recht schnell welchen Funktionsumfang die App in etwa bietet:

Screenshot Protocoder Examples  Protocoder MyProjects
Version 0.8 kommt mit folgenden Beispielen:

  • AccelerometerPlots (Beschleunigungssensorgrafisch darstellen)
  • Camera (Bild mit der Kamera aufnehmen und abspeichern)
  • Canvas (Kreise auf einen Canvas anhand von Beschleunigungssendordaten malen)
  • Dashboard (Plots auf dem Dashboard anzeigen)
  • FileIO (Daten in Datei schreiben)
  • GPS (Positionsdaten ausgeben)
  • KeyEvents (
  • NFC (NFC Tag lesen, bzw beschreiben)
  • OSC (OSC networking protocol Beispiel)
  • OpenStreetMaps (Teil der OpenStreetMaps anzeigen)
  • PureData (PureData Patch ausführen)
  • Sensors (Sensordaten anzeigen)
  • Sound (OGG-Datei sbspielen)
  • TextToSpeech (Text per Sprache ausgeben)
  • UBoard_IOIO (Ansteuerung des IOIO-Boards)
  • UBoard_MAKR (Ansteuerung des MAKR Boards)
  • UI (Bedienelemente anzeigen)
  • Video (m4v-Video abspielen)
  • VoiceRecognition (Spracherkennung und anschliessende Ausgabe)
  • Webview (HTML-Anzeige)
  • timer (wiederkehrende Funktionsaufrufe mit Timer)

Java/Android API via Javascript

Codiert werden die Prototypen in JavaScript, das zur Laufzeit interpretiert wird. Hierfür wird die Android API für einfache Funktionsaufrufe gewrappt.
Ein Beispiel: mit folgendem Skript wird ein NFC-Tag ausgelesen, bzw bei Betätigen des Knopfes beschrieben.

var nfcinfo = ui.addLabel("tap to get NFC id and content", 20, 20, 500, 100);

//when tapping on a nfc the id and content will be displayed
//on the label
sensors.onNFC(function (id, data) {
console.log(„the nfc id is: “ + id, data);
nfcinfo.setHTMLText(„id: “ + id + “
data: “ + data);
});

//when we click
//the next touched nfc will be written with the data
ui.addButton(„Write to NFC“, 0, 200, 500, 100, function(){
sensors.writeNFC(„this is a test“, function() {
nfcinfo.setText(„data written“);
});
});

Abzüge in der B-Note

Der API-Funktionsumfang ist zZt noch recht überschaubar. Viele Funktionen habe ich vermisst bzw sind noch in der Entwicklung. Wenn irgendwelche Android-API Klassen fehlen muss man sich die App wohl selber erweitern und kompilieren.
Eine typische Schwachstelle bei der App ist – wie bei vielen kostenlosen Programmen – die fehlende Doku. Wäre sie in ausreichender Form vorhanden hätte man innerhalb von Minuten den ersten Prototypen fertig gestellt.
Und ja, Protocoder ist noch nicht ganz fertig / Bug-frei: Protocoder_Crash

Weitere Infos

Werbeanzeigen

Internet Explorer und Windows zu Testzwecken unter Linux

modern.IE zum Testen

Seit über 1.5 Jahren habe ich kein Windows mehr direkt auf meiner PC Festplatte installiert. Seit dieser Zeit begrüßen mich die Windows Boot- und Login Meldungen eigentlich nur noch auf meinem Bürorechner. Zu Testzwecken wäre es aber ab und zu ganz hilfreich mal ein Windows nutzen zu können. Aus diesem Grund kam mir der Hinweis von @_blueJoda_ auf die Webseite http://www.modern.ie/en-us/virtualization-tools#downloads ganz recht. Microsoft bietet hier verschiedene Versionen des Internet Explorer auf dem hauseigenen Betriebssystem Windows XP, Vista, Windows 7 und Windows 8 an.

modern.ie.website

Download & Installation

VirtualBox ist für die Benutzung der VMs erforderlich. Je nach gewünschter Zielplatform einfach die Festplatte beglücken mit:

# # # IE6 - Windows XP # # #
#download 1 file: 808MB
$ wget https://az412801.vo.msecnd.net/vhd/IEKitV1_Final/VirtualBox/Linux/IE6_XP/IE6.WinXP.For.LinuxVirtualBox.sfx 
$ chmod +x ./IE6.WinXP.For.LinuxVirtualBox.sfx
$ ./IE6.WinXP.For.LinuxVirtualBox.sfx
#import VM: IE6 - WinXP.ova (805.0 MB)
$ VBoxManage import "IE6 - WinXP.ova"
IE6 - WinXP

# # # IE10 - Windows7 # # #
#download 5 files: 4.1 GB
$ wget -i https://az412801.vo.msecnd.net/vhd/IEKitV1_Final/VirtualBox/Linux/IE10_Win7/IE10.Win7.For.LinuxVirtualBox_2.txt
$ chmod +x IE10.Win7.For.LinuxVirtualBox.part1.sfx
$ ./IE10.Win7.For.LinuxVirtualBox.part1.sfx
#import VM: IE10 - Win7.ova (4.2GB)
$ VBoxManage import "IE10 - Win7.ova"
Win7_screenshot

# # # IE7 - Windows Vista # # #
# nobody loves vista :-(

# # # IE10 - Windows8 # # #
#download 3 files: 2.7 GB
$ wget -i https://az412801.vo.msecnd.net/vhd/IEKitV1_Final/VirtualBox/Linux/IE10_Win8/IE10.Win8.For.LinuxVirtualBox_2.txt
$ chmod +x IE10.Win8.For.LinuxVirtualBox.part1.sfx
$ ./IE10.Win8.For.LinuxVirtualBox.part1.sfx
#import VM: IE10 - Win8.ova (2.8 GB)
$ VBoxManage import "IE10 - Win8.ova"
IE10 - Win8

Lizenz / Haltbarkeit

In den VM Instruktionen auf der Downloadseite wird auf die Lizenzlage hingewiesen => also brav durchlesen und natürlich wirklich nur wie beschriebene benutzen.
Die Windowsversionen sollen 90 Tage lang lauffähig sein, danach ist dann ohne Vorwarnung Schluß (‚The software will stop running after 90 days and you may not receive any other notice. You may not be able to access data used with the software when it stops running.‘). Also nichts in der VM direkt abspeichern oder rechtzeitig sichern.

Die XP VM wollte logischerweise gleich aktiviert werden. Die Windows 8 VM braucht auf meinem Ubuntu System zum Hochfahren sehr lange. Deshalb verwende ich immer zum Beenden den VirtualBox Save-State-Modus, sodaß das nächste Starten der VM dann nur noch 5 Sekunden benötigt.