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,14110os 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