2016-05-19 4 views
0

Appcelerator Titanium App, fragen speziell über AndroidTitan: App ist auf Porträt fixiert, doch die Kamera dreht sich, wie wird die tatsächliche Ausrichtung des Geräts bestimmt?

Unsere App Portrait-Modus ist gesperrt,

  • android:screenOrientation="nosensor" ist in der tiapp.xml
  • Alle Fenster haben orientationModes: [Ti.UI.Portrait]
  • gesetzt

Noch Wenn wir die Kamera (mit einer Überlagerung) zeigen, ist es erlaubt, zu rotieren. Dies bedeutet, dass Benutzerfotos seitlich oder auf dem Kopf stehen können. Da die App im Hochformatmodus gesperrt ist, gibt Ti.Gesture.orientation und myWindow.orientation leider immer 1 (Hochformat) zurück, sodass das Bild nicht manuell deaktiviert werden kann.

Wie kann ich entweder a) die Ausrichtung der Kamera sperren oder b) die tatsächliche Ausrichtung des Geräts finden, damit ich das Bild manuell drehen kann?

Antwort

0

Die Antwort ist, den Beschleunigungsmesser zu verwenden.

function accelerometerCallback(e) { 
    var deviceOrientation; 
    // Get the current device angle 
    var xx = -e.x; 
    var yy = e.y; 
    var angle = Math.atan2(yy, xx); 

    if (angle >= -2.25 && angle <= -0.75) { 
    deviceOrientation = "portraitUpsideDown"; 
    } else if (angle >= -0.75 && angle <= 0.75) { 
    deviceOrientation = "landscapeRight"; 
    } else if (angle >= 0.75 && angle <= 2.25) { 
    deviceOrientation = "portrait"; 
    } else if (angle <= -2.25 || angle >= 2.25) { 
    deviceOrientation = "landscapeLeft"; 
    } 

    console.log('ACCELEROMETER: orientation = ' + deviceOrientation); 
} 

Ti.Accelerometer.addEventListener('update', accelerometerCallback); 

myWin.addEventListener('close', function() { 
    Ti.Accelerometer.removeEventListener('update', accelerometerCallback); 
}); 

Denken Sie daran, dass das Beschleunigungsmesser eine Zuhörer Feuer wie ein bajillion mal Sekunde und ist eine weitere Belastung für die Batterie. Stellen Sie sicher, dass Sie den Hörer update so schnell wie möglich entfernen.

Verwandte Themen