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); }