Родные модули для датчиков недоступны.Реагирующая ли ссылка работала успешно? - PullRequest
0 голосов
/ 23 декабря 2018

Я следовал первым шагам учебника React Native здесь:

https://facebook.github.io/react-native/docs/getting-started.html

Затем я хочу прочитать информацию с датчиков устройства.

Для этогоЯ также следовал этому уроку:

https://medium.com/react-native-training/using-sensors-in-react-native-b194d0ad9167

и получил следующий код (просто скопировал / вставил оттуда):

// Reference:
// https://medium.com/react-native-training/using-sensors-in-react-native-b194d0ad9167
// https://react-native-sensors.github.io

import React, { Component } from 'react';
import {
  StyleSheet,
  Text,
  View
} from 'react-native';
import { Accelerometer } from "react-native-sensors";

const Value = ({name, value}) => (
  <View style={styles.valueContainer}>
    <Text style={styles.valueName}>{name}:</Text>
    <Text style={styles.valueValue}>{new String(value).substr(0, 8)}</Text>
  </View>
)

export default class App extends Component {
  constructor(props) {
    super(props);

    new Accelerometer({
      updateInterval: 400 // defaults to 100ms
    })
      .then(observable => {
        observable.subscribe(({x,y,z}) => this.setState({x,y,z}));
      })
      .catch(error => {
        console.log("The sensor is not available");
      });

    this.state = {x: 0, y: 0, z: 0};
  }

  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.headline}>
          Accelerometer values
        </Text>
        <Value name="x" value={this.state.x} />
        <Value name="y" value={this.state.y} />
        <Value name="z" value={this.state.z} />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  headline: {
    fontSize: 30,
    textAlign: 'center',
    margin: 10,
  },
  valueContainer: {
    flexDirection: 'row',
    flexWrap: 'wrap',
  },
  valueValue: {
    width: 200,
    fontSize: 20
  },
  valueName: {
    width: 50,
    fontSize: 20,
    fontWeight: 'bold'
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

Вот полный репозиторийВы можете скачать и попробовать прямо сейчас:

$ git clone https://github.com/napolev/react-native-app
$ cd react-native-app
$ npm i
$ expo start

Моя проблема в том, что после того, как я это сделаю: $ expo start я получаю следующую ошибку:

Native modules for sensors not available. Did react-native link run successfully?

, как вы можете видеть на следующемimage:

enter image description here

Есть идеи о том, как я могу сделать эту работу?

Спасибо!

1 Ответ

0 голосов
/ 23 декабря 2018

Вероятно, это связано с тем, что вы используете Expo , а для react-native-sensors требуется полная версия React Native .

Для использования react-native-sensorsвам, вероятно, придется удалить свое приложение, а затем установить зависимость.Если вы извлекаете свое приложение, на вашем компьютере для разработки потребуется установить Xcode (для iOS) и Android Studio (для Android).

Для получения более подробной информации о различиях между Expo и React-Native, проверьте этот SO-ответ: В чем разница между Expo и React Native?

Однако Expo делаетУ вас есть доступ к некоторой информации о датчике, вы можете узнать больше об использовании акселерометра здесь https://docs.expo.io/versions/latest/sdk/accelerometer

Expo также имеет доступ к гироскопу , магнитометру и шагомер , хотя нет барометра, который я вижу в документах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...