Testen der Hardwareunterstützung in Javascript für Geräteausrichtungsereignisse des iPhone 3GS

8

Ich versuche, HTML5 deviceOrientation-Ereignisse in Javascript zu verwenden, um ein Bild zu drehen, wenn der Benutzer sein iPhone um ihn herum dreht.

Ich benutze diesen Code, um zu erkennen, wenn sich das Gyroskop bewegt:

%Vor%

Es funktioniert wirklich gut auf iPhone 4+ und iPad 2, aber es gibt kein Gyroskop auf dem 3GS (und älteren iPhones). Deshalb teste ich den deviceOrientationSupport wie folgt:

%Vor%

Ich habe diesen Code auf vielen Websites oder in Foren gesehen, aber mein Problem ist, dass dieser Test mit meinem iPhone 3GS unter IOS 5.0.1 mich anzeigt: deviceOrientationSupport OK!

Ich denke, dass diese Testüberprüfung nur möglich ist, wenn Safari in der Lage ist, diese Ereignisse zu behandeln: (

Also meine Frage ist, ist es möglich, einen Test hinzuzufügen, um zu wissen, ob die Hardware Ausrichtungsereignisse auslösen kann?

Danke!

    
MavBzh 31.01.2012, 09:45
quelle

4 Antworten

3

Nachdem ich das gleiche Problem hatte, hatte ich auch Probleme mit älteren iPads / iPhones, die nicht einmal die Funktion addEventListener aufgerufen haben.

Ich fand also, dass das Folgende viel besser für mich funktionierte und jede Möglichkeit eliminierte, dass ein nicht unterstütztes Gerät durchkam (dies war mit einem Ladebildschirm ausgestattet, so dass es ein Intervall brauchte, bevor der vollständige Test abgeschlossen wurde. Also nicht für jeden) .

%Vor%     
Ricardinho 14.01.2014, 15:24
quelle
4

Ich hoffe, dass Sie nicht zu spät kommen, aber ist es nicht frustrierend, dass Safari für iOS 4.2+ DeviceOrientationEvent auf einem iPhone 3GS (oder anderen Geräten ohne Gyroskop) registriert?

Bottom Line, DeviceOrientation funktioniert nicht mit dem iPhone 3GS. Aber wie schon erwähnt, DeviceMotionEvent funktioniert, aber Sie müssen anders auf die Ereignisdaten zugreifen als mit einem Gerät mit einem Gyroskop (albern ich weiß!).

Erster Schritt: Ich habe eine Variable im Mix hinzugefügt, um zu erfassen, ob das OrientationEvent tatsächlich mit Nicht-Null-Daten feuert (oder nicht, wie es bei einem Gyroskop der Fall wäre).

%Vor%

Jetzt wissen Sie, ob das Ereignis tatsächlich Gyroskopdaten enthält oder nicht! Wenn Sie also auf etwas anderes (z. B. window.DeviceMotionEvent) voreinstellen möchten, können Sie eine Bedingung verwenden.

%Vor%

Ich habe dies auf Mobile Safari für iPhone 3GS (kein Gyroskop) und iPad 2 (Gyroskop) und Chrome auf meinem Macbook Pro (Gyroskop) getestet. Scheint zu funktionieren.

Wenn Sie jetzt die DeviceMotionEvent-Daten als Alternative erhalten möchten, wenn die Ausrichtungsdaten nicht verfügbar sind, dann ...

%Vor%

Dies sollte Ihre Basis für die meisten Geräte mit einem Webkit-Browser abdecken ... Ich hoffe. Havent hat es auf allen Android-Geräten getestet.

Es sollte beachtet werden, dass jedes Ereignis unterschiedliche Zahlen zurückgibt, so dass Sie möglicherweise etwas arbeiten müssen, um sie zu normalisieren. Aber das sind die Grundlagen dafür, wie Sie darauf zugreifen.

Lass es mich wissen, wenn das hilft!

    
Arjun Mehta 25.03.2012 00:25
quelle
0

Obwohl es auf dem 3GS kein Gyroskop gibt, ist es durchaus in der Lage, Veränderungen der Geräteausrichtung mit dem eingebauten Beschleunigungsmesser zu erkennen. iOS hat diese Unterstützung seit dem ersten iPhone.

    
LordT 31.01.2012 11:07
quelle
0

Ich hatte ein ähnliches Problem, dass mein Desktop auch das window.DeviceOrientationEvent-Ereignis akzeptiert hat. Ich habe den folgenden Code verwendet, um nach Orientierungshilfen in mobilen Geräten zu suchen:

%Vor%

JSFiddle: Ссылка

    
Mathieu 04.06.2015 14:53
quelle