Java Script in Tasker ausführen?

  • 9 Antworten
  • Letztes Antwortdatum
M

Monty87

Neues Mitglied
0
Hallo zusammen
um die Lautstärke an meinem Verstärker übers Netzwerk steuern zu können muss ich eine Hex Zahl in einen String mit zwei Zeichen konvertieren. Also:
x1F muss zu '1F' werden.

Das sollte eigentlich mit folgenden Zeilen funktionieren

Code:
StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(volhex));
if (sb.length() < 2) {
    sb.insert(0, '0');
}
String volstr = sb.toString();

Die Variablen volhex und volstr nute ich in anderen Aktionen meines Tasks

Aber wie bekomme ich dieses Java Script in Tasker zum laufen? Mit der Aktion JavaScriptlet hatte ich noch keinen Erfolg...

Kann mir jemand weiter helfen?
 
Wenn du stattdessen mal JavaScript ("Run JavaScript from a file and wait till it finishes.

Most Tasker actions are available via function calls.

Warning: code in the file will have access to local device files, data stores etc

See the JavaScript section of the Userguide for more information.")
oder Run SL4A Script (https://code.google.com/p/android-scripting/) versuchst ?
 
hmm also erst ein mal muss ich zugeben, dass ich kein Programmierprofi bin. Ich hatte zwar mal Java in der Schule aber das würde ich jetzt eher als Grundkenntnisse bezeichnen. Du muss mir also leider etwas genau erklären was ich ausprobieren soll :rolleyes2:

Ansatz 1: JavaScript
Also zb mit Eclipse ein ScriptFile erstellen? Was muss in dem Script neben den oben stehenden Zeilen noch stehen? Muss ich irgendwelche Klassen laden für meine Konvertierung? Kann ich so überhaupt meine Variablen aus dem Tasker verwenden? Die sind doch jetzt im Script völlig unbekannt oder?
 
Ich kann dir da leider auch nicht wirklich helfen, keine ahnung von javascript (aber ich hätte gehofft es steht in dem erwähnten Userguide mehr [wo der allerdings zu finden ist -> ?? ] oder du schaust dir dieses SL4A mal näher an, es finden sich bestimmt ein paar beispiele dazu
 
Hallo,

ich finde den Namen JavaScript ja nicht sonderlich gelungen. Du kannst deinen Java-Code nicht als JavaScript ausführen lassen.

Wenn %volhex und %volstr bereits im Task existieren, kannst du volhex und volstr im Script verwenden. Grundsätzlich geht das dann so:

Code:
volstr=volhex.toString.(16);
alert(volstr);

Mit dem alert kannst du überprüfen, ob das Script überhaupt ohne Fehler bis dahin ausgeführt wurde. In Javascript muss dein hex allerdings mit 0x1F initialisiert werden, nicht mit x1F.


Grüße, Jürgen.

Edit: woher und in welcher Form kommt denn der Wert für %volhex im Task? Eventuell geht das ja auch einfacher...
 
Zuletzt bearbeitet:
Hallo.
Deinen code habe ich in der Aktion java scripted eingefügt aber der Task bricht an dieser Stelle ab (roter Punkt).

Zur Herkunft von volhex:
Über ein widget möchte ich die Lautstärke einstellen: nach klick auf das widget öffnet sich ein variable querry. Hier gibt man die gewünchte Lautstärke ein also eine Dezimalzahl zwichen 0 und 80. Der befehl wird anschließend mit einem tcp paket über das Netzwerk an den Verstärker gesendet. Leider erwartet dieser die Lautstärke in einer hexadezimalen zahl aus zwei ascii Zeichen. Die Aktion variable convert macht aus voldez die variable volhex. Und nun muss ich volhex irgendwie in einen string bekommen.
 
Sorry, da war ein Punkt zuviel:

volstr=volhex.toString(16);

Wenn es %volstr noch nicht gibt, dann so:
var volstr=volhex.toString(16);

Grüße, Jürgen.

Edit: Ich würde dann nach dem Tasker Variable Query %vol alles weitere im Script erledigen:

Code:
vol=parseInt(vol);
vol=Math.min(80, Math.max(0, vol)); 
vol = vol.toString(16);
if(vol.length == 1) {
vol = '0' + vol;
}
 
Zuletzt bearbeitet:
Hallo Jürgen,
Das * war sicher auch nur eiN Tippfehler. Den falschen Punkt hätte ich aber auch sehen können -.-
Ich musste den am Ende noch in Großbuchstaben umwandeln. Aber jetzt funktioniert es einwandfrei. Vielen dank für die Hilfe

Code:
vol=parseInt(vol);
vol=Math.min(80, Math.max(0, vol)); vol = vol.toString(16);
if (vol.length == 1) {
vol = '0' + vol;
} 
vol = vol.toUpperCase();

Mfg Eike
 
Zuletzt bearbeitet:
rein interssehalber, wäre das ganze nicht auf einfach als shell befehl gegangen (printf "%d\n" 0xHEX ) ?
 
Sorry, keine Ahnung, wie ich bei copy paste noch die ganzen überflüssigen Zeichen eingebaut habe... :confused2:

Mit Shell Befehlen kenne ich mich nicht allzu gut aus.

Grüße, Jürgen.
 

Ähnliche Themen

P
Antworten
25
Aufrufe
1.863
Pentatulim
P
0
Antworten
4
Aufrufe
512
0karsten
0
b0mb
  • b0mb
Antworten
1
Aufrufe
145
b0mb
b0mb
Zurück
Oben Unten