blob: 7e6da156386dba68404321049078b6c3ff6dfbcc [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.plugins.sensors;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import io.flutter.plugin.common.EventChannel;
class StreamHandlerImpl implements EventChannel.StreamHandler {
private SensorEventListener sensorEventListener;
private final SensorManager sensorManager;
private final Sensor sensor;
StreamHandlerImpl(SensorManager sensorManager, int sensorType) {
this.sensorManager = sensorManager;
sensor = sensorManager.getDefaultSensor(sensorType);
}
@Override
public void onListen(Object arguments, EventChannel.EventSink events) {
sensorEventListener = createSensorEventListener(events);
sensorManager.registerListener(sensorEventListener, sensor, sensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onCancel(Object arguments) {
sensorManager.unregisterListener(sensorEventListener);
}
SensorEventListener createSensorEventListener(final EventChannel.EventSink events) {
return new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public void onSensorChanged(SensorEvent event) {
double[] sensorValues = new double[event.values.length];
for (int i = 0; i < event.values.length; i++) {
sensorValues[i] = event.values[i];
}
events.success(sensorValues);
}
};
}
}