userAccelerometer method

Stream<UserAccelerometerEvent> userAccelerometer({
  1. Duration samplingPeriod = SensorInterval.normalInterval,
})

Implementation

Stream<UserAccelerometerEvent> userAccelerometer({
  Duration samplingPeriod = SensorInterval.normalInterval,
}){
  if (_userAccelerometerStreamController == null) {
    _userAccelerometerStreamController =
        StreamController<UserAccelerometerEvent>();
    _featureDetected(
      () {
        final linearAccelerationSensor = LinearAccelerationSensor(
          SensorOptions(
            frequency: samplingPeriod.frequency,
          ),
        );

        linearAccelerationSensor.start();

        linearAccelerationSensor.onreading = (Event _) {
          _gyroscopeEventStreamController!.add(
            GyroscopeEvent(
              linearAccelerationSensor.x,
              linearAccelerationSensor.y,
              linearAccelerationSensor.z,
            ),
          );
        }.toJS;

        linearAccelerationSensor.onerror = (SensorErrorEvent e) {
          developer.log(
            'The linear acceleration API is supported but something is wrong!',
            error: e.error.message,
          );
        }.toJS;
      },
      apiName: 'LinearAccelerationSensor()',
      permissionName: 'accelerometer',
      onError: () {
        _userAccelerometerStreamController!
            .add(UserAccelerometerEvent(0, 0, 0));
      },
    );
    _userAccelerometerResultStream =
        _userAccelerometerStreamController!.stream.asBroadcastStream();

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

  return _userAccelerometerResultStream;
}