¿Cómo capturar un evento de rotación de 180 grados de la pantalla?
private static final int ROTATION_0 = 0;
Inicialmente, si el dispositivo es horizontal o vertical está relacionado con la dirección de visualización predeterminada cuando el El dispositivo de hardware está instalado.
private static final int ROTATION_90 = 1;
Después de configurar la orientación de la pantalla en rotación automática, la pantalla girará en esta dirección cuando el lado derecho se gire hacia arriba.
private static final int ROTATION_270 = 2;
Después de configurar la orientación de la pantalla en rotación automática, cuando el lado izquierdo se gira hacia arriba, la pantalla girará en esa dirección.
private static final int ROTATION_180 = 3;
Después de configurar la orientación de la pantalla en rotación automática, cuando la parte inferior de la pantalla se gira hacia arriba, la pantalla girará en esa dirección.
(Las constantes anteriores están definidas en WindowOrientationListener.java)
Echemos un vistazo a la clase WindowOrientationListener
La clase clave para controlar la rotación de la pantalla del teléfono móvil
Esta clase es una clase abstracta
WindowOrientationListener registra un acelerador de tipo SensorEventListener
La única otra implementación de esta clase en el sistema es la clase PhoneWindowManager
En la construcción de la clase WindowOrientationListener En la función, se obtendrá una instancia de la clase SensorManager, el objeto sensor de aceleración se obtendrá a través de SensorManager y finalmente se creará un SensorEventListener.
Ventana privadaOrientationListener(Contexto contexto, int tasa) {
mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_ SERVICE);
mRate = tasa;
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
if (mSensor != null) {
mSensorEventListener = new SensorEventListenerImpl(this); p>
p>
}
}
Registre un monitor para el mSensor anterior (también conocido como mSensorEventListener anterior)
public void enable() { //zai zhu ce jian shi qi qian mEnabled=false
if (mSensor == null) {
Log.w(TAG, " No se puede detectar el sensor.
No habilitado");
Devolución;
}
if (mEnabled == false) {
if (localLOGV) Registro. d(TAG, " WindowOrientationListener habilitado");
mSensorManager.registerListener(mSensorEventListener, mSensor, mRate);
mEnabled = true; >
}