protected void manageUpdateListener(boolean register, SensorEventListener listener) { if (register) { if (!listeningForUpdate) { sensorAttached = sensorHelper.attach(proxy.getTiContext().getActivity()); if (sensorAttached) { LocationManager locationManager = (LocationManager) proxy.getTiContext().getActivity().getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); String provider = locationManager.getBestProvider(criteria, true); if (provider != null) { Location location = locationManager.getLastKnownLocation(provider); if (location != null) { geomagneticField = new GeomagneticField( (float) location.getLatitude(), (float) location.getLongitude(), (float) location.getAltitude(), System.currentTimeMillis()); } } sensorHelper.registerListener(SENSORS, listener, SensorManager.SENSOR_DELAY_UI); listeningForUpdate = true; } } } else { if (listeningForUpdate) { sensorHelper.unregisterListener(SENSORS, listener); if (sensorHelper.isEmpty()) { listeningForUpdate = false; sensorHelper.detach(); } } } }
@Override public void eventListenerRemoved(String type, int count, KrollProxy proxy) { if (accelerometerRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_ACCELEROMETER, this); accelerometerRegistered = false; } } if (magneticFieldRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_MAGNETIC_FIELD, this); magneticFieldRegistered = false; } } if (ambiantTemperatureRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_AMBIENT_TEMPERATURE, this); ambiantTemperatureRegistered = false; } } if (gameRotationVectorRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_GAME_ROTATION_VECTOR, this); gameRotationVectorRegistered = false; } } if (geomagneticRotationVectorRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR, this); geomagneticRotationVectorRegistered = false; } } if (gravityRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_GRAVITY, this); gravityRegistered = false; } } if (gyroscopeRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_GYROSCOPE, this); gyroscopeRegistered = false; } } if (gyroscopeUncalibratedRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_GYROSCOPE_UNCALIBRATED, this); gyroscopeUncalibratedRegistered = false; } } /*if (heartRateRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_HEART_RATE, this); heartRateRegistered = false; } }*/ if (lightRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_LIGHT, this); lightRegistered = false; } } if (linearAccelerationRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_LINEAR_ACCELERATION, this); linearAccelerationRegistered = false; } } if (magneticFieldUncalibratedRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED, this); magneticFieldUncalibratedRegistered = false; } } if (orientationRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_ORIENTATION, this); orientationRegistered = false; } } if (pressureRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_PRESSURE, this); pressureRegistered = false; } } if (proximityRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_PROXIMITY, this); proximityRegistered = false; } } if (relativeHumidityRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_RELATIVE_HUMIDITY, this); relativeHumidityRegistered = false; } } if (rotationVectorRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_ROTATION_VECTOR, this); rotationVectorRegistered = false; } } if (significantMotionRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_SIGNIFICANT_MOTION, this); significantMotionRegistered = false; } } if (stepCounterRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_STEP_COUNTER, this); stepCounterRegistered = false; } } if (stepDetectorRegistered) { if (EVENT_UPDATE.equals(type)) { TiSensorHelper.unregisterListener(Sensor.TYPE_STEP_DETECTOR, this); stepDetectorRegistered = false; } } setflashLightOff(); super.eventListenerRemoved(type, count, proxy); }
public void unregisterListener() { TiSensorHelper.unregisterListener(Sensor.TYPE_ORIENTATION, this); }