kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Erkennen des Betriebssystems

(EN google-translate)

(PL google-translate)

Auslesen des Betriebssystems

Die folgende App ist unter jedem Betriebssystem lauffähig und liefert als Ausgabe Angaben zum aktuellen Betriebssystem, auf dem der Sketch jeweils gerade läuft:

import java.util.Properties;

public String[] getOS()
{
      Properties prop = System.getProperties();
      return new String[] {
          prop.getProperty("os.name"),
          prop.getProperty("os.arch"),
          prop.getProperty("os.version")
                              };
}

String[] betriebssystem = getOS();

public void setup()
{
    size(800,600);
    frameRate(1);
    println("os.name:    "+betriebssystem[0]);
    println("os.arch:    "+betriebssystem[1]);
    println("os.version: "+betriebssystem[2]);
}

public void draw()
{
    background(255);
    fill(0);
    stroke(0);
    textSize(18);
    text(betriebssystem[0],50,50);    
    text(betriebssystem[1],50,100);    
    text(betriebssystem[2],50,150);    
}

Code 0-1: Sketch Betriebssystem.pde

Ausgaben bei den verschiedenen Geräten:


Laptop mit Xubuntu 64Bit und intel core i5-Prozessor (Tuxedo):
os.name:    Linux
os.arch:    amd64
os.version: 4.10.0-28-generic

Tablet Asus-Phonepad mit Android 5.0, Intel Atom-Prozessor Z2420
os.name:    Linux
os.arch:    i686
os.version: 3.10.20-i386_ctp-00005-g6d40c25

Tablet Nexus7 2012 mit Android 4.3, Quad-Core Nvidia Tegra 3 
os.name:    Linux
os.arch:    armv7l
os.version: 3.1.10-g1e8b3d8

Smartphone Mobistel Cynus E1 mit Android 4.2.2
os.name:    Linux
os.arch:    armv7l
os.version: 3.4.5

Axon 7 mini mit Android 6.0.1, VR fähig.
os.name:    Linux
os.arch:    aarch64
os.version: 3.10.84-perf-gba1b3b5


Code 0-2: Ausgabe des Sketches bei verschiedenen Geräten.

Man sieht an dieser Ausgabe, dass es schwer ist, auf dieser Grundlage zu erkennen, ob das Betriebssystem Linux oder Android ist.

Den einzigen Hinweis gibt das Postfix "generic" unter "os.version" beim Linux-PC, "os.version: 4.10.0-28-generic", welches bei Android-Systemen nicht ausgegeben wirdm, also beispielsweise "os.version: 3.10.84-perf-gba1b3b5".

Dagegen kann über "os.name" sehr gut zwischen verschiedenen PC-Betriebssystemen unterschieden werden, siehe Liste ganz unten.

Wenn aber geklärt ist, dass es sich um ein Android-System handelt, so können über die Library android.os.build.VERSION weitere Informationen, wie die Android-Version ausgelesen werden:


Mobistel Smartphone
VERSION.RELEASE=4.2.2

Nexus 7
VERSION.RELEASE=4.3

Axon 7 mini mit Android 6.0.1, VR fähig.
VERSION.RELEASE=6.0.1
u.s.w.

Code 0-3: Informationen zur Android-Version über die Klasse android.os.build.VERSION.

Mögliches Vorgehen zur Differenzierung zwischen den verschiedenen Betriebssystemen:


IF os.name NICHT Linux || (os.name==Linux && os.version Postfix "generic")
   DANN PC/Java-Mode
ELSE 
   IF VERSION.RELEASE!=6
      DANN Tablet oder Smartphone ohne VR
      IF Kompaß und 3-Achsiger Beschleunigungssensor
          DANN Kopftracking über diese Sensoren
      else
          über OSC empfangen oder mit Bewegungen am Touchscreen
   ELSE
      VR fähiges Smartphone


Code 0-4: Mögliches Vorgehen zur Differenzierung zwischen den verschiedenen Betriebssystemen.

import java.util.Properties;

import android.os.Build.VERSION;

public String[] getOS()
{
      Properties prop = System.getProperties();
      return new String[] {
          prop.getProperty("os.name"),
          prop.getProperty("os.arch"),
          prop.getProperty("os.version")
                              };
}

String[] betriebssystem = getOS();

public void setup()
{
    size(800,600);
    frameRate(1);
    println("os.name:    "+betriebssystem[0]);
    println("os.arch:    "+betriebssystem[1]);
    println("os.version: "+betriebssystem[2]);
    
    println("VERSION.RELEASE="+VERSION.RELEASE);    
}

public void draw()
{
    background(255);
    fill(0);
    stroke(0);
    textSize(18);
    text(betriebssystem[0],50,50);    
    text(betriebssystem[1],50,100);    
    text(betriebssystem[2],50,150);
    text("VERSION.RELEASE="+VERSION.RELEASE,50,250);
}

Code 0-5: Ergänzter Sketch zur Betriebssystemanalyse. Dieser hier läuft nur unter Android!

Liste der Parameter name arch und version an verschiedenen PC-Systemen

Quelle: http://www.java-gaming.org/index.php/topic,14110
os name   os arch  java version
Windows XP   x86   1.5.0_02
Windows XP   x86   1.5.0
Windows XP   x86   1.5.0_03
Windows XP   x86   1.4.2_06
Windows XP   x86   1.5.0_01
Windows XP   x86   1.4.2_05
Windows XP   x86   1.4.2_08
Windows XP   x86   1.6.0-ea
Windows XP   x86   1.4.2_03
Windows XP   x86   1.4.2_07
Windows XP   x86   1.4.2_02
Windows XP   x86   1.4.2
Windows XP   x86   1.4.2_04
Windows XP   x86   1.5.0-beta2
Windows XP   x86   1.4.1_02
Windows XP   x86   1.5.0-rc
Windows XP   x86   1.4.1
Windows XP   x86   1.4.0
Windows XP   x86   1.6.0
Windows XP   x86   1.4.2_01
Windows XP   x86   1.5.0_04
Windows XP   x86   1.5.0-beta
Windows XP   x86   1.4.1_01
Windows XP   x86   1.4.2_09
Windows XP   x86   1.5.0_05
Windows XP   x86   1.4.1_03
Windows XP   x86   1.6.0-beta
Windows XP   x86   1.6.0-rc
Windows XP   x86   1.4.2_10
Windows XP   x86   1.5.0_06
Windows XP   x86   1.4.0_03
Windows XP   x86   1.6.0-beta2
Windows XP   x86   1.4.2_11
Windows XP   x86   1.5.0_07
Windows 2003   x86   1.5.0_02
Windows 2003   x86   1.5.0
Windows 2003   x86   1.5.0_03
Windows 2003   x86   1.4.2_06
Windows 2003   x86   1.5.0_01
Windows 2003   x86   1.4.2_05
Windows 2003   x86   1.6.0-ea
Windows 2003   x86   1.4.2_07
Windows 2003   x86   1.4.2_04
Windows 2003   x86   1.5.0-rc
Windows 2003   x86   1.5.0_04
Windows 2003   x86   1.5.0-beta
Windows 2003   x86   1.5.0_05
Windows 2003   x86   1.6.0-rc
Windows 2003   x86   1.5.0_06
Windows 2003   x86   1.5.0_07
Linux   i386   1.5.0_02
Linux   i386   1.5.0
Linux   i386   1.5.0_03
Linux   i386   1.4.2_06
Linux   i386   1.5.0_01
Linux   i386   1.4.2_05
Linux   i386   1.4.2_08
Linux   i386   1.6.0-ea
Linux   i386   1.4.2_03
Linux   i386   1.4.2_07
Linux   i386   1.4.2_02
Linux   i386   1.4.2-beta
Linux   i386   1.4.2
Linux   i386   1.4.2_04
Linux   i386   1.4.2-01
Linux   i386   1.5.0-rc
Linux   i386   1.4.2-rc1
Linux   i386   1.5.0_04
Linux   i386   1.4.2_09
Linux   i386   1.5.0_05
Linux   i386   1.6.0-beta
Linux   i386   1.6.0-rc
Linux   i386   1.4.2_10
Linux   i386   1.5.0_06
Linux   i386   1.6.0-beta2
Linux   i386   1.4.2_11
Linux   i386   1.5.0_07
Linux   amd64   1.4.2-01
Linux   amd64   1.5.0_05
Windows 2000   x86   1.5.0_02
Windows 2000   x86   1.5.0
Windows 2000   x86   1.5.0_03
Windows 2000   x86   1.4.2_06
Windows 2000   x86   1.5.0_01
Windows 2000   x86   1.4.2_05
Windows 2000   x86   1.4.2_08
Windows 2000   x86   1.6.0-ea
Windows 2000   x86   1.4.2_03
Windows 2000   x86   1.4.2_07
Windows 2000   x86   1.4.2_02
Windows 2000   x86   1.4.2-beta
Windows 2000   x86   1.4.2
Windows 2000   x86   1.4.2_04
Windows 2000   x86   1.5.0-beta2
Windows 2000   x86   1.4.1_02
Windows 2000   x86   1.5.0-rc
Windows 2000   x86   1.4.1
Windows 2000   x86   1.4.2_01
Windows 2000   x86   1.5.0_04
Windows 2000   x86   1.4.2_09
Windows 2000   x86   1.5.0_05
Windows 2000   x86   1.6.0-beta
Windows 2000   x86   1.6.0-rc
Windows 2000   x86   1.4.2_10
Windows 2000   x86   1.5.0_06
Windows 2000   x86   1.6.0-beta2
Windows 2000   x86   1.5.0_07
Windows 2000   x86   1.4.1_07
Mac OS X   i386   1.5.0_05
Mac OS X   i386   1.5.0_06
Mac OS X   ppc   1.5.0_02
Mac OS X   ppc   1.4.2_05
Mac OS X   ppc   1.4.2_03
Mac OS X   ppc   1.4.2_07
Mac OS X   ppc   1.4.2_09
Mac OS X   ppc   1.5.0_05
Mac OS X   ppc   1.5.0_06
Windows 98   x86   1.5.0_03
Windows 98   x86   1.4.2_06
Windows 98   x86   1.5.0_01
Windows 98   x86   1.4.2_02
Windows 98   x86   1.4.0
Windows 98   x86   1.4.2_01
SunOS   x86   1.5.0_04
SunOS   x86   1.5.0_06
SunOS   sparc   1.5.0_02
SunOS   sparc   1.4.2_04
SunOS   sparc   1.5.0-beta2
SunOS   sparc   1.5.0_05
SunOS   sparc   1.5.0_06
FreeBSD   i386   1.4.2-p6
FreeBSD   i386   1.4.2-p7
Windows NT   x86   1.5.0_02
Windows NT   x86   1.5.0
Windows NT   x86   1.4.2_05
Windows NT   x86   1.4.2_08
Windows NT   x86   1.4.2_03
Windows Me   x86   1.5.0_04
Windows Me   x86   1.5.0_06

Code 0-6: Liste der Parameter name arch und version an verschiedenen PC-Systemen