2013-04-18 2 views
1

Это мой код для обнаружения, если телефон включен вокруг или нетAndroid как обнаружить, если телефон включен вокруг

private SensorManager sensorManager; 
    private int orientationLim = 165; 

@Override 
    public void onSensorChanged(SensorEvent event) { 
     if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) { 

      // If shake to stop is enabled 
      boolean turnAroundToStop = Utils.getBooleanFromProperties(this, Properties.SP_CB_TURN_AROUND_TO_STOP); 

      if (turnAroundToStop) { 
       float value = Math.abs(event.values[1]); 
       if (value > orientationLim && !stopped) { 
        // Down 
        stopped = true; 
       } else { 
        // Up 
        stopped = false; 
       } 
      } 
     } 
    } 

, но проблема в том, что stopped переменная устанавливается так, даже телефон не полностью обернулся, но немного.

Как я могу изменить этот код, который будет выполнен только в том случае, когда телефон перевернут.

ответ

0
float pitch = values[2]; 
if (pitch <= 45 && pitch >= -45) { 
    // mostly vertical 
} else if (pitch < -45) { 
    // mostly right side up 
} else if (pitch > 45) { 
    // mostly left side up 
} 

Посмотрите здесь на эту тему:

http://www.workingfromhere.com/blog/2009/03/30/orientation-sensor-tips-in-android/

+0

Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (http://meta.stackexchange.com/q/ 8259), чтобы включить здесь основные части ответа и предоставить ссылку для справки. – Nanne

+0

как насчет горизонтального экрана вниз? – senzacionale