Marc Reichelt: Terminal-Emulator in Java?

Hallo an alle,

Google hat vor wenigen Monaten Android veröffentlicht - inklusive einem Linux-Betriebssystem und einem SDK für Handys.

Mit dem Befehl "./adb shell" (das Programm "adb" ist bei dem SDK mitgeliefert) kann man auf einer normalen Linux-Konsole Verbindung zum Emulator aufnehmen und dort eine Shell starten, die man dann über eine TCP-Verbindung steuern kann.

Ich würde aber gerne später auf dem Handy auch eine Shell ausführen können, genauer gesagt: Einen Terminal-Emulator.
Aber noch gibt es keinen Terminal-Emulator für Android, und darum habe ich mich auf die Suche nach bestehenden Terminal-Emulatoren gemacht, die in Java geschrieben sind. Meine Suche war leider nicht sehr erfolgreich. Ich fand zwar diverse SSH-Programme und Terminal-Emulatoren, die sich via telnet verbinden, doch nie fand ich einen, der direkt "/bin/bash" ausführt und steuert. Bis ich terminator fand. Doch terminator ist zwar ein in Java geschriebener Terminal-Emulator, benötigt aber nativen Code, um zu funktionieren. Auf Android möchte ich aber nur Java verwenden, um eine Shell aufzurufen und zu steuern.

Wer kann mir sagen, wie man dies am besten macht? Wie machen das bestehende Terminal-Emulatoren, und lässt sich diese Vorgehensweise auf ein Java-Programm übertragen? Gibt es irgendwo ein einfaches Beispiel hierzu?

Immerhin habe ich es bereits geschafft, über

[link:http://java.sun.com/javase/6/docs/api/java/lang/Process.html@title=Process] p = [link:http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html@title=Runtime].getRuntime().[link:http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec(java.lang.String)@title=exec]("/bin/bash");

eine Shell zu starten und über den Stream p.getOutputStream() mit Befehlen zu versorgen. Aber die ganzen speziellen Shell-Befehle wie das setzen des Cursors zu einer bestimmten Position bzw. die Ausgabe an einer bestimmten Stelle - wie bekomme ich die hin?

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
DPRINTK("Last time you were disconnected, how about now?");
        linux-2.6.6/drivers/net/tokenring/ibmtr.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)