私は、正しい用語が何であるかまだまだわかりませんが、私はジャイロスコープAPIを使用し、 'Z値'を監視することで、私が探している価値を達成することができました。ここに私の実例があります。 (expoで実行する必要があります)
import React from 'react';
import Expo, {
Gyroscope,
} from 'expo';
import { Text, TouchableOpacity, View } from 'react-native';
export default class Test extends React.Component {
constructor(props) {
super(props);
this.state = {
gyroscopeData: {
x: 0,
y: 0,
z: 0
},
}
}
componentDidMount() {
this._toggle();
}
componentWillUnmount() {
this._unsubscribe();
}
_toggle =() => {
if (this._subscription) {
this._unsubscribe();
} else {
this._subscribe();
}
}
_slow =() => {
Gyroscope.setUpdateInterval(1000);
}
_fast =() => {
Gyroscope.setUpdateInterval(16);
}
_subscribe =() => {
this._subscription = Gyroscope.addListener((result) => {
this.setState({gyroscopeData: result});
});
}
_unsubscribe =() => {
this._subscription && this._subscription.remove();
this._subscription = null;
}
render() {
let { x, y, z } = this.state.gyroscopeData;
return (
<View>
{/*<Text> x: {round(x)}</Text>*/}
{/*<Text> y: {round(y)}</Text>*/}
<Text> z: {z}</Text>
<View>
<TouchableOpacity onPress={this._toggle}>
<Text>Toggle</Text>
</TouchableOpacity>
<TouchableOpacity onPress={this._slow}>
<Text>Slow</Text>
</TouchableOpacity>
<TouchableOpacity onPress={this._fast}>
<Text>Fast</Text>
</TouchableOpacity>
</View>
</View>
);
}
}
function round(n) {
if (!n) {
return 0;
}
return Math.floor(n * 100)/100;
}