kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Schreiben einer Library zur automatisch richtigen Initialisierung bei verschiedenen Betriebssystemen

(EN google-translate)

(PL google-translate)

Da in der Processing-ide selber es keine Möglichkeit gibt, Klassen anders als als innere Klassen der Sketch-Klasse zu schreiben und diese entweder Android ODER Android-VR ODER "PC-Java-Libraries" einbindet, kann man eine automatische Initialisierung nur durch Entwicklung einer eigenen Library realisieren. Dies geschieht hier mit BlueJ.

Hinweise:
  • Alle .jar-Files, die zusätzlich benötigt werden, müssen bei BlueJ nach /usr/share/bluej/userlib/ gelegt werden.
  • Erfahrungswert: BlueJ 4 funktioniert, wenn Oracle JDK 8 installiert wird, siehe Anleitung auf bluej.org, 3er-Versionen gehen auch mit der Open JDK-Installation.
  • Das Kompilieren und die Bildung des jar-Files erfolgen am besten über Konsolenbefehle.
userlib.zip - Beispiel
thbvr2.zip - Processing-Library in ~/sketchbook/libraries entpacken. Danach Beispiel dieser Library testen.

Schritt 1: Betriebssystem und Android-Version feststellen können

initializer.zip - BlueJ-Projekt mit der Klasse Systemanalyse.

Systemanalyse.isAndroid() liefert 0 bei Linux-PC/Windows/MAC und es liefert die Android-Version als einfache Zahl 1,2,3,... bei Android-Devices.

package info.kramann.vr;

import java.util.Properties;
import android.os.Build.VERSION;


public class Systemanalyse
{
    /**
     *  0==PC / Linux / Windows / MAC
     *  1..8 Android-Versionen
     */
    public static int isAndroid()
    {
          Properties prop = System.getProperties();
          String betriebssystem = prop.getProperty("os.name");
          String javaversion = prop.getProperty("os.version");
          String GENERIC = "generic";
          if(!betriebssystem.equals("Linux"))
               return 0;
          else if(javaversion.length()>=GENERIC.length() && 
                  javaversion.substring(javaversion.length()-GENERIC.length(),javaversion.length()).equals(GENERIC)
                 )
          {
              return 0; //generic Linux
          }
          else
          {
              //wird nur aufgerufen, wenn es ein Android-System ist!
              String version = VERSION.RELEASE;
              String v = version.substring(0,1);
              return (int)Double.parseDouble(v);
          }
    }
}

Code 0-1: Quelltext der Klasse Systemanalyse im Projekt thbvr2.zip