20160731

Device Browser ohne Premium-Abo nutzen

Der Device-Browser der sich bei einem Premium-Abo in den Editor (WiFi-IDE) integriert lässt sich auch ohne Premium-Account nutzen:

Download: PremiumDeviceBrowser.js

20160729

Undokumentierter Device-Browser auf Port 8889

Beim stöbern im Javascript-Quellcode (DroidScript Version 1.34) bin ich auf einen undokumentierten AJAX-Browser gestoßen:

geheimer Device-Browser auf Port 8889

Er läuft auf Port 8889 und erfordert kein Passwort, daher ist für jeden der sich im selben Netzwerk befindet der Inhalt des Smartphones/Tablets zugänglich. Ohne den Zusatz "/browse" erfolgt das übliche Directory-Listing (Option "ListDir" bei app.CreateWebServer), allerdings ohne eine "index.html" als Startseite (undokumentierte Option "NoWelcome") zu verwenden. Der Device-Browser befindet sich im DroidScript-Verzeichnis im Editor-Ordner, also bei den meisten Geräten unter  "/sdcard/DroidScript/.edit/browse" und wird mittels der undokumentierten WebServer-Methode "AddRedirect" von http://192.168.42.129:8889/browse nach "/DroidScript/.edit/browse/index.html" weitergeleitet. Der Browser bietet zusätzlich die Möglichkeit neue Verzeichnisse zu erstellen sowie Dateien/Ordner umzubenennen oder gar gleich zu löschen.

Directory Listing Wurzelverzeichnis
Browser Kontext Menü
Kontext-Menü des Browsers


Forum-Thread: https://groups.google.com/d/msg/androidscript/cqU_-rurz3c/PpSmISb0BQAJ

Wie sich mittlerweile herausgestellt hat ist der Device-Browser Bestandteil des integrierten Editors (WiFi-IDE) und wird dort im Falle eines Premium-Abos angezeigt. Allerdings lässt sich der Browser auch ohne Premium-Account nutzen: PremiumDeviceBrowser

20160728

Funktion zum rekursiven Auflisten von Ordnern

Leider liefert app.ListFolder nur die Dateien und Ordner des gewählten Verzeichnisses, für eine Auflistung der enthaltenen Unterordner muss man sich mit einer eigenen Funktion behelfen:

Quelle: http://wiki.droidscript.me.uk/doku.php?id=sample_code:list_folders_and_subfolders

function RecursiveFolderList(path,kids){
    kids=(typeof kids==='undefined')?[]:kids;  
    if (app.IsFolder(path))
    {
        kids.push(path);
        app.ListFolder(path).forEach(function(s){
          var fil = path + "/" + s;
          if (app.IsFolder(fil)) kids = RecursiveFolderList(fil, kids);        
        });
    }
    return kids;
};

Anleitung: DroidScript-Editor über USB-Tethering nutzen

Der integrierte WiFi-Editor zum Bearbeiten und Erstellen von DroidScript-Apps ist eine praktische Sache, Javascript-Code lässt sich nach wie vor mit einer realen Tastatur leichter eintippen als über eine Glasscheibe mit beschränktem Tastenfeld. Leider ist nicht immer ein WLAN-Netzwerk vorhanden und auch bestimmte Sicherheitsmängel vermiesen einem den Spaß am Programmieren einer eigenen App. Zum Glück lässt sich DroidScript mittlerweile aber auch über Tethering nutzen, in dieser Anleitung veranschauliche ich die Einrichtung von USB-Tethering und zeige wie Sie sich mit dem Online-Editor verbinden können.

Zuerst muss in den DroidScript-Settings die Option "Use ADB" angewählt werden. Zur Sicherheit legen Sie dort auch gleich noch ein neues Passwort fest, Sie werden bei Verbindung mit dem Editor später danach gefragt:

DroidScript Settings / Einstellungen

Anschließend muss in den Android-Einstellungen das Tethering über USB aktiviert werden:

Netzwerkeinstellungen Netzwerkeinstellungen Erweitert Netzwerkeinstellungen Tethering

Öffnen Sie dazu in den Verbindungseinstellungen die "weiteren Einstellungen", das "Tethering und mobiler Hotspot"-Menü und aktivieren dort USB-Tethering.

Leider wird nicht die IP-Adresse des Handys angezeigt, dies ist für den Editor allerdings nötig. 
Zum Glück ist diese (zumindest bei den vier Smartphones an denen ich es testen konnte) immer die selbe: 192.168.42.129

Wer nun den Editor in DroidScript aktiviert (Zweiter Button auf der Menüleiste: "Pfeil nach oben") sollte folgendes Fenster sehen:

DroidScript ADB-Connection

Leider zeigt DroidScript bei ADB-Verbindung statt der öffentlichen Adresse die lokale IP 127.0.0.1 (localhost) an, aber zumindest der Port auf dem der Webeditor läuft ist ersichtlich. Mit diesem Wissen kann man den Browser öffnen und folgende Url laden: http://192.168.42.129:8088/

Benutzer von Google Chrome/Chromium haben zusätzlich die Möglichkeit die Editor-App zu installieren. Somit ist die Entwicklungsumgebung in einem eigenen Fenster zu sehen und vom Browser und dessen Tabs getrennt. Starten Sie einfach den Editor über seine Verknüpfung beziehungsweise über die Adresse chrome://apps/, geben die oben genannte IP und abschließend Ihr in den Einstellung von DroidScript festgelegtes Passwort ein und Sie können mit dem Editieren in der komfortablen Entwicklungsumgebung beginnen...

Editor Passwort


Bei weiteren Fragen stehe ich gerne zur Verfügung, alternativ kann Sie auch (in englisch) im offiziellen Forum gestellte werden.

Viel Spaß bei Programmieren!

20160726

jsontest.com XMLHttpRequest Beispiel

Um Daten von einem Remote-Server zu laden kann, wie in Javascript üblich, das XMLHttpRequest-Objekt für asynchrone Requests (Ajax) verwendet werden. Folgendes DroidScript-Skript kann als Basis für eigene Entwicklungen genutzt werden:

download DEVjsonTestXHR.js

Sensoren auflisten - SensorList.js

DroidScript erlaubt den Zugriff auf die verschiedenen Sensoren die im Smartphone eingebaut sind, allerdings hat nicht jedes Telefon auch die gleichen Sensoren.

Um aufzulisten welche Sensoren im Handy stecken kann man folgendes Script verwenden:

download SensorList.js


20160725

CreateWebServer - HTTP-Server Beispiele

Mit DroidScript läßt sich mit ein paar Zeilen Code eine eigene Webserver-App erstellen:

var srv=app.CreateWebServer(port,opts);

Das Basis-Verzeichnis wird mit der 'SetFolder'-Funktion festgelegt:

var path = "/sdcard/DroidScript";
srv.SetFolder(path);


Abschließend muss der Server noch gestartet werden:

srv.Start();

Folgende Optionen stehen zur Auswahl:

  • ListDir (Verzeichnis auflisten)
  • NoWelcome (index.html ignorieren)
  • Upload
  • Reflect (für WebSockets)

Die Optionen werden, wie in DroidScript üblich, als Komma-separierte Zeichenfolge angegeben.

Eigene Servlets um Parameter zu verarbeiten lassen sich folgendermaßen erstellen:

//Servlet hinzufügen
srv.AddServlet( path, fn);

//Servlet-Funktion
function OnServlet(request,info){
    srv.SetResponse("IP "+ info.remoteAddress);
}

Ich habe folgende App geschrieben um den WebServer und seine Funktionen zu testen:


20160724

DroidScript App Menü Objekt Beispiel

Hier ein Beispiel zu einem Menüobjekt:
// Menüobjekt definieren
var mnu = {
   About: function(){
        app.Alert('Menu Demo','About');
    },
   Quit: function(){
        app.Exit();
    }
};

// Menü setzen
App.SetMenu(Object.keys(mnu));

// Menü Handler Funktion
function OnMenu(s){
  if(typeof mnu[s]==='function')
    mnu[s]();
}

DroidScript im Google PlayStore bewerten

Momentan (24.Juli'16) ist DroidScript von 4263 Personen auf 4,2 von 5 Sternen gevotet wordern.

Wer selber bewerten möchte kann dies im Google PlayStore tun, und natürlich auch die neueste Version aus sein Smartphone downloaden...

20160721

DroidScript Plugins deinstallieren/löschen

Leider gibt es in DroidScript keine direkte Möglichkeit ein installiertes Plugin zu entfernen, da dies aber (gerade beim Entwickeln eigener Plugins) dennoch nötig ist muss man sich mit einer kleinen DroidScript-App selbst helfen:

Quelle: DroidScript WIKI > plugins:own_javascript_plugin

Dort wird übrigens auch beschrieben wie man sich seine eigenen Plugins in purem Javascript schreiben kann...

20160720

Font-Awesome Liste

In die meisten UI-Elemente lassen sich die Icons von Font-Awesome einbinden, als Option muss dazu "fontawesome" angegeben werden und das gewählte Icon in eckigen Klammern an der gewünschten Position.

Hier ein paar Beispiele:

// Schliessen-Schalter
var btn=app.CreateButton("[fa-close]",-1,-1,'fontawesome');

// Datei-Liste
var lst=app.CreateList("[fa-file] dateiname,[fa-file-text] readme.txt"
    + ",[fa-file-image] icon.png,[fa-file-audio] sound.mp3",-1,-1,'FontAwesome');

// Text-Label
var txt = app.CreateText("unsere [fa-facebook]-Seite auf..",-1,-1,"fontawesome");


Aktuell werden 674 Font-Awesome Symbole unterstütz, um Platz zu sparen habe ich in der folgenden alphabetisch sortierten Liste das vorangestellte "fa-" entfernt. Dies muss selbstverständlich wieder hinzugefügt werden (Beispiel: "copy" => "[fa-copy]"):


Beispiel-Code für FontAwesome Picker:
wiki.droidscript.me.uk/doku.php?id=sample_code:fontawesomepicker

"Alex F"s FontAwesome Viewer:
groups.google.com/forum/androidscript

20160718

DroidScript New Default Javascript

DroidScript Premium Account

Seit neuestem wird die Premium-Mitgliedschaft in DroidScript angeboten. Dieses Abonnement kostet zur Zeit 6,95€ im Monat und wird über den Google-PlayStore abgerechnet.
Zu den Vorteilen des Premium-Accounts zählen:
  • freie Nutzung aller (ansonsten kostenpflichtigen) Plugins
  • priorisierter Support und Hilfe im Premium-Forum
  • Zugriff auf erweiterte Funktionen (Themes, WiFi-Browser, etc..)
  • zusätzliche Beispiel-Anwendungen
Das Abo läuft monatlich und kann jederzeit gekündigt werden. Für den Zugriff auf das Premium-Support-Forum muss eine Email-Addresse angegeben werden, allein diese erhält Zugriff auf die Inhalte des Forums.


DroidScript Plugins

Der Entwickler von DroidScript bietet nützliche Erweiterungen in Form von Plugins an. Diese müssen leider über den Google-PlayStore-Account erworben werden, alternativ lassen sie sich bei Abschließen eines Premium-Abos (z.Zt. 6,95€/Monat) runterladen und für die Zeit des Abonnements kostenlos nutzen.

Folgende kostenpflichtige Plugins werden momentan angeboten:

  • ApkBuilder 14,99€ (Apps kompilieren)
  • BarcodeReader 5,49€ (Code-Scanner für QR,Barcode,etc)
  • ImageGrid 5,99€ (UI-Element zur Bildanzeige)
  • UIExtras 7,49€ (erweiterte UI-Elemente)
  • IOIOController 5,99€ (USB-Controller)
  • SonySmartWatch2 5,99€ (App-Entwicklung)
  • OcrScanner 5,99€ (Texterkennung)
  • SpheroBall 4,95€ (Controller)
  • Moga 4,94€ (Gamepad-Controller)
Stand der Preise 18. Juli 2016
Die Preise haben sich im Laufe der Zeit geändert: Für den ApkBuilder habe ich bei Veröffentlichung ungefähr 4,99€ bezahlt. Die letzte Preisänderung (konkret: Erhöhung) fand zeitgleich mit der Einführung des Premium-Abonnements statt, ob das wohl Zufall war...? ;)

Weiterhin kostenlos erhältlich sind diese Plugins:
  • MicroBit (Bluetooth-LE Verbindung)
  • NXT-Docs (Verbingung zu Lego-NXT-Brick)
  • FtpClient (Verbindung mit Ftp-Servern)
  • GoProController (Action-Cam Controller)

Außerdem besteht die Möglichkeit eigene Plugins zu entwickeln, wahlweise als reines JavaScript-Plugin oder mit Java-Quellcode. Doch dazu später mehr...


Einige Plugins werden im DroidScript-Forum beschrieben, generell werden die Plugins aber mit einer Beschreibung und Beispielen ausgeliefert die sich in die bestehende DroidScript-Dokumentation integriert.

Chrome DroidScript Editor App

Benutzer des Browsers Chrome von Google (bzw. der Open-Source Variante Chromium) können sich zum einfachen Erstellen und Bearbeiten Ihrer DroidScript-Apps eine Editor-App aus dem Chrome-WebStore installieren:



Als Berechtigung wird lediglich "Datenaustausch mit Netzwerkgeräten" eingefordert, also nur die für den Betrieb der Editor-Anwedung nötige:
Diese Chrome-App bietet den gleichen Umfang wie der in DroidScript integrierte Editor und kann im gleichen WLAN-Netzwerk oder aber auch per Hotspot/Tethering (USB, Bluetooth) genutzt werden.

DroidScript Foren @ Google Groups

Da die Dokumentation zum Teil veraltet und unvollständig ist kommen manchmal Fragen auf die der Entwickler und sein kompetentes Team im Forum recht zügig beantworten.

Sie finden das öffentliche Forum in den Google Groups unter folgender Adresse:
https://groups.google.com/forum/#!forum/androidscript

Für Abonnenten des Premium-Accounts wurde ein zusätzliches Forum angelegt, zu erreichen unter
https://groups.google.com/forum/#!forum/droidscriptpremium
mit der Email-Adresse die bei Registrierung des Abos angegeben wurde.

20160715

DroidScript

DroidScript - mit Javascript zur eigenen Android-App...

Endlich lassen sich mit Javascript schnell und einfach eigene Apps entwickeln, DroidScript machts möglich! Inzwischen in Version 1.34 kann DroidScript für alle möglichen Anwendungsfälle verwendet werden, dank dem ApkBuilder-Plugin sogar als APK-Datei fertig kompiliert und bereit für die Veröffentlichung im PlayStore.


Weitere Informationen zu DroidScript finden Sie auf der offiziellen DroidScript Webseite, nützliche Anleitungen und Beispiel-Skripts auf der inoffizielen Community-Dokumentation DroidScript-Wiki.

Viel Spass beim Probieren und Programmieren wünscht euch