Реактивные датчики Все три датчика считывают

Это не проблема, скорее это вопрос. Есть ли способ получить данные со всех трех датчиков одновременно (акселерометр, гироскоп, магнитометр) или достаточно просто установить интервал обновления для всех трех одинаковых значений. Как это

setUpdateIntervalForType(SensorTypes.accelerometer, 100); setUpdateIntervalForType(SensorTypes.magenetometer, 100); setUpdateIntervalForType(SensorTypes.gyroscope, 100);

const subscription = accelerometer.subscribe(({ x, y, z, timestamp }) => console.log({ x, y, z, timestamp }) );

const subscription1 = gyroscope.subscribe(({ x, y, z, timestamp }) => console.log({ x, y, z, timestamp }) );

const subscription2 = magenetometer.subscribe(({ x, y, z, timestamp }) => console.log({ x, y, z, timestamp }) );

0 ответов

Да, это RxJS Observables, которые позволяют комбинировать.

Допустим, вы хотели бы получить такой ответ:

{ 
  accelerometer: {x,y,z,timestamp}, 
  gyroscope: {x,y,z,timestamp},
  magnetometer: {x,y,z,timestamp}
}

и вы хотели бы испускать только на этой наблюдаемой, если у вас есть все данные, а не частичные данные.

Реализация выглядит так:

import {
  combineLatest
} from "rxjs";
import {
  map
} from 'rxjs/operators';

import {
  accelerometer,
  magnetometer,
  gyroscope
} from "react-native-sensors";


const combinedStream = combineLatest(
  accelerometer,
  magnetometer,
  gyroscope
).pipe(
  map(([accelerometerValue, magnetometerValue, gyroscopeValue]) => ({
    accelerometer: accelerometerValue,
    magnetometer: magnetometerValue,
    gyroscope: gyroscopeValue
  }))
)

Другие вопросы по тегам