public QualiomOrientacaoDetector(QualiomOrientacaoCallback callback) {
   this.callback = callback;
   sensor = FilmadoraActivity.mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
   if (sensor == null)
     sensor = FilmadoraActivity.mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
   if (sensor == null) callback.sensorNaoDetectado();
 }
 @Override
 public void onSensorChanged(SensorEvent event) {
   boolean ok = event.values != null && event.values.length >= 3;
   if (!ok) return;
   final Float x = event.values[0];
   final Float y = event.values[1];
   final Float z = event.values[2];
   QualiomOrientacao anterior = orientacao;
   if (proximo(z, 0)) {
     if (proximo(x, 0)) {
       if (proximo(y, limite_maximo)) orientacao = QualiomOrientacao.Normal;
       if (proximo(y, limite_minimo)) orientacao = QualiomOrientacao.DeCabecaPraBaixo;
     } else if (proximo(y, 0)) {
       if (proximo(x, limite_maximo)) orientacao = QualiomOrientacao.Esquerda;
       if (proximo(x, limite_minimo)) orientacao = QualiomOrientacao.Direita;
     }
   }
   if (anterior != orientacao) callback.mudouOrientacao(orientacao);
 }