Benutzer-Werkzeuge

Webseiten-Werkzeuge


projects:gforth-android:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projects:gforth-android:start [2013-06-06 22:21] – [Stand der Dinge] berndprojects:gforth-android:start [2021-11-26 21:16] (aktuell) bernd
Zeile 1: Zeile 1:
-====== Gforth um Android in Forth zu programmieren ======+====== Gforth — GNU Forth für Android ======
  
 Ziel ist es, Gforth als Programmierumgebung für Android zu verwenden. Ziel ist es, Gforth als Programmierumgebung für Android zu verwenden.
 +
 +===== Pfad =====
 +
 +Wenn im folgenden von `/sdcard` die Rede ist, dann ist das je nach Gerät und Android-Version ein anderern Pfad.
 +
 +    s" HOME" getenv type
 +
 +würde `/sdcard/gforth/home` ergeben; alles vor `gforth/home` ist der gerätespezifische Präfix.
  
 ===== Stand der Dinge ===== ===== Stand der Dinge =====
  
-  * Es gibt ein [[http://bernd-paysan.de/Gforth.apk|Gforth.apk]]das man direkt ab Android 2.installieren kann, Android 4.ist aber besser (da geht dann auch Filme abspielen und so).+  * Es gibt [[https://play.google.com/store/apps/details?id=gnu.gforth|Gforth im Play Store]] das man direkt ab Android 4.installieren kann, Android 2.3-Support wurde am 31.3.2018 aufgegeben, weil es zu alt ist für diverse Features.
   * Das kann über OpenGL eine Terminal-Emulation zeigen oder einen Terminal-Server bedienen (in der Datei ''/sdcard/gforth/site-forth/starta.fs'' festgelegt). Den Terminal-Server kann man mit einem einfachen ''t'' und Return schnell vom Terminal starten, und sich dann mit ''telnet //adresse// 4444'' einloggen. Für das Gerät in der ''.telnetrc'' im Home-Verzeichnis ''//hostname// mode character'' eintragen.   * Das kann über OpenGL eine Terminal-Emulation zeigen oder einen Terminal-Server bedienen (in der Datei ''/sdcard/gforth/site-forth/starta.fs'' festgelegt). Den Terminal-Server kann man mit einem einfachen ''t'' und Return schnell vom Terminal starten, und sich dann mit ''telnet //adresse// 4444'' einloggen. Für das Gerät in der ''.telnetrc'' im Home-Verzeichnis ''//hostname// mode character'' eintragen.
   * Touchs werden auch schon erkannt, und der Menü-Button/Softkey togglet die Softwaretastatur   * Touchs werden auch schon erkannt, und der Menü-Button/Softkey togglet die Softwaretastatur
  
-Beim ersten Mal Starten packt die App die Gforth-Dateien auf die SD-Karte aus. Das sind ein paar Megabyte, und dauert deshalb. Gforths Loader kann in dem Zustand noch nichts ausgebenund auch nicht auf Eingaben reagieren, also einfach etwas Geduld (abhängig vom Gerät - gute Geräte schreiben ein paar Megabyte natürlich im Nullkommanix weg)Wenn er fertig istwird das OpenGL-Terminal gestartet.+Beim ersten Mal Starten packt die App die Gforth-Dateien auf die SD-Karte aus. Das sind ein paar Megabyte, und dauert deshalb. Gforths Loader zeigt in dem Zustand einen Spinnerder am Ende kurz die Message "done; restart Gforth" anzeigtFalls diese länger sichtbar bleibtsollte man Gforth killen und neustarten.
  
-Das Terminal verwendet einen Fragment Shader, der weitgehend selbständig ein farbiges ASCII-Terminal realisiert - es bekommt dazu zwei Texturen, eine mit dem Zeichensatz, die andere mit Zeichen und Farbinformationen. Da dauert dann das Update des Terminal-Screens nur einige Millisekunden - so wie früher auch.+Das Terminal verwendet einen Fragment Shader, der weitgehend selbständig ein farbiges ASCII-Terminal realisiert - es bekommt dazu zwei Texturen, eine mit dem Zeichensatz, die andere mit Zeichen und Farbinformationen. Da dauert dann das Update des Terminal-Screens nur einige Millisekunden - so wie früher auch. Das Terminal ist auf einigen billigen Handys mit lausigen OpenGL-Implementierungen getestet, sollte also überall funktionieren.
  
 Als Tastaturen empfehle ich: Als Tastaturen empfehle ich:
Zeile 19: Zeile 27:
   * [[https://play.google.com/store/apps/details?id=com.jb.gokeyboard|Go Keyboard]]   * [[https://play.google.com/store/apps/details?id=com.jb.gokeyboard|Go Keyboard]]
  
 +Da Android-Apps nicht über die Kommandozeile gestartet werden, kann man Optionen für den Start in die Datei ''/sdcard/gforth/home/.options'' eintragen. Jede Option eine Zeile. ''-d64k'' setzt z.B. den Stack auf 64kB, ''-m16M'' das Dictionary auf 16MB, siehe [[http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Invoking-Gforth.html]]
 ===== Beispiele ===== ===== Beispiele =====
  
-Alle Android-Beispiele finden sich in ''/sdcard/gforth/site-forth''. Es gibt+Alle Android-Beispiele finden sich in ''/sdcard/gforth/<version>/minos2''. Es gibt
  
-  * ''gl-sample.fs'': Eine einfache OpenGL-Demo +  * ''[[https://github.com/forthy42/gforth/tree/master/minos2/gl-sample.fs|minos2/gl-sample.fs]]'': Eine einfache OpenGL-Demo 
-  * ''omx-example.fs'': Spielt Videos ab.  Lade mein Beispielvideo [[http://bernd-paysan.de/00013.ts|Jingle Bells]] als Test-Stream nach ''/storage/extSdCard/Filme'', dann kann man es mit ''jb'' abspielen, oder jede andere Datei mit ''"<filename>" play-ts'' für MPEG Transport Streams, oder ''play-mkv'' für Matroska. +  * ''[[https://github.com/forthy42/gforth/tree/master/minos2/omx-example.fs|minos2/omx-example.fs]]'': Spielt Videos ab.  Lade mein Beispielvideo [[http://bernd-paysan.de/jb.mkv|Jingle Bells]] als Test-Stream nach ''/storage/extSdCard/Filme'', dann kann man es mit ''jb'' abspielen, oder jede andere Datei mit ''"<filename>" play-ts'' für MPEG Transport Streams, oder ''play-mkv'' für Matroska. 
-  * ''gl-slideshow.fs'': Zeigt eine Slideshow.  Lege Bilder in ein Verzeichnis, und füge eine Liste der Dateinamen (mit Pfad). Lade diese Liste mit ''"<slidelist>" slide-show''+  * ''[[https://github.com/forthy42/gforth/tree/master/minos2/gl-slideshow.fs|minos2/gl-slideshow.fs]]'': Zeigt eine Slideshow.  Lege Bilder in ein Verzeichnis, und füge eine Liste der Dateinamen (mit Pfad). Lade diese Liste mit ''"<slidelist>" slide-show''
-===== Bekannte Bugs =====+  * ''[[https://github.com/forthy42/gforth/tree/master/minos2/android-recorder.fs|minos2/android-recorder.fs]]'': Zeichnet ein Video auf, wenn man ''camera-test'' aufruft. Das aufgezeichnete Video wird in ''/storage/extSdCard/Filme/test.mp4'' abgelegt. 
 +  * ''[[https://github.com/forthy42/gforth/tree/master/unix/sensors.fs|unix/sensors.fs]]'': Liest die Sensoren aus.
  
-Die NativeActivity hat leider ein paar ärgerliche, aber bekannte Bugs, die erst verschwinden werden, wenn ich eine eigene Activity in Java programmiert habe:+===== Troubleshooting =====
  
-  * Vom Keyboard werden nur eine feste Auswahl Keycodes weitergereicht, der Rest verschwindet in der Zwiebel +Gforth schreibt ein Log in die Dateien ''/sdcard/gfortherr.log'' und ''/sdcard/gforthout.log''. Falls etwas schief geht, erst mal hier nachsehen, ob eine Fehlermeldung zu finden ist. Sollte eine Quelldatei fehlen oder kaputt seinhilft es, ''/sdcard/gforth/'' zu löschen, wobei es eigentlich reicht, im Unterordner mit der aktuellen Versionsnummer die Datei ''sha256sum'' zu löschen. Manchmal verschieben sich Dateien nach einem Update, dann sollte man ''/sdcard/gforth/'' löschendamit die alten Dateien auch wirklich verschwinden. 
-  * Wenn man auf "Zurück" klicktwährend das Soft-Keyboard sichtbar ist, hängt die App (ab Android 4.1)+===== Dokumentation =====
  
 +Gforth hat ein [[http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/|dickes Manual]], das es hier auch als {{:projects:gforth-android:gforth-ebook.pdf|eBook PDF}} gibt (einige nicht umbrechbare Texte sind in der eBook-Version rechts abgeschnitten).
projects/gforth-android/start.1370550066.txt.gz · Zuletzt geändert: 2013-06-06 22:21 von bernd