реактивные датчики Все три датчика считывают - PullRequest
0 голосов
/ 30 мая 2019

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

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 }) );

1 Ответ

0 голосов
/ 05 июня 2019

Да, это наблюдаемые RxJS, которые можно комбинировать.

Допустим, вы хотели бы получить ответ, подобный этому:

{ 
  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
  }))
)
...