accelerometer method

Stream<AccelerometerEvent> accelerometer({
  1. Duration samplingPeriod = SensorInterval.normalInterval,
})

Implementation

Stream<AccelerometerEvent> accelerometer({
  Duration samplingPeriod = SensorInterval.normalInterval,
}){
  if (_accelerometerStreamController == null) {
    _accelerometerStreamController = StreamController<AccelerometerEvent>();
    _featureDetected(
      () {
        final accelerometer = Accelerometer(
          SensorOptions(
            frequency: samplingPeriod.frequency,
          ),
        );

        accelerometer.start();

        accelerometer.onreading = (Event _) {
          _accelerometerStreamController!.add(
            AccelerometerEvent(
              accelerometer.x,
              accelerometer.y,
              accelerometer.z,
            ),
          );
        }.toJS;

        accelerometer.onerror = (SensorErrorEvent e) {
          developer.log(
            'The accelerometer API is supported but something is wrong!',
            error: e.error.message,
          );
        }.toJS;
      },
      apiName: 'Accelerometer()',
      permissionName: 'accelerometer',
      onError: () {
        _accelerometerStreamController!.add(AccelerometerEvent(0, 0, 0));
      },
    );
    _accelerometerResultStream =
        _accelerometerStreamController!.stream.asBroadcastStream();

    _accelerometerStreamController!.onCancel = () {
      _accelerometerStreamController!.close();
    };
  }

  return _accelerometerResultStream;
}