import React, { useState, useEffect } from 'react';
import { View, Text, Button, Vibration, StyleSheet } from 'react-native';
import DeviceInfo from 'react-native-device-info';
export default function DeviceInfoHaptics() {
const [brand, setBrand] = useState('');
const [model, setModel] = useState('');
const [systemVersion, setSystemVersion] = useState('');
useEffect(() => {
setBrand(DeviceInfo.getBrand());
setModel(DeviceInfo.getModel());
setSystemVersion(DeviceInfo.getSystemVersion());
}, []);
const handleVibrate = () => {
Vibration.vibrate(100); // vibrate for 100 milliseconds
};
return (
<View style={styles.container}>
<Text style={styles.title}>Device Info and Haptics</Text>
<Text>Device Brand: {brand}</Text>
<Text>Device Model: {model}</Text>
<Text>System Version: {systemVersion}</Text>
<View style={styles.buttonContainer}>
<Button title="Vibrate Button" onPress={handleVibrate} accessibilityLabel="Trigger device vibration" />
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
padding: 20
},
title: {
fontSize: 20,
fontWeight: 'bold',
marginBottom: 20
},
buttonContainer: {
marginTop: 30,
width: '60%'
}
});We use react-native-device-info to get device details like brand, model, and system version. These values are stored in state variables and shown on screen.
The useEffect hook runs once when the component loads to fetch and set this info.
The handleVibrate function uses React Native's Vibration.vibrate() method to make the device vibrate for 100 milliseconds when the button is pressed.
The UI is simple with text labels and a button, styled for clarity and accessibility.