import React, { useState, useEffect } from 'react'; import { StatusBar } from 'expo-status-bar'; import { StyleSheet, Text, View, Button, FlatList } from 'react-native'; import BlekitModule, { BleManager, Device } from 'blekit'; export default function App() { const [isScanning, setIsScanning] = useState(false); const [devices, setDevices] = useState([]); const [status, setStatus] = useState('Ready'); const startScan = () => { setStatus('Scanning...'); setIsScanning(true); // Get the BleManager instance const bleManager = BlekitModule.getBleManager(); // Reset devices list setDevices([]); // Start scanning for BLE devices bleManager.startDeviceScan(null, (error: any, device: Device) => { if (error) { console.error('Error during scan:', error); setStatus('Scan Error'); setIsScanning(false); return; } if (device) { // Add new device or update existing one setDevices(prev => { const existingIndex = prev.findIndex(d => d.id === device.id); if (existingIndex >= 0) { // Update existing device const updated = [...prev]; updated[existingIndex] = device; return updated; } else { // Add new device return [...prev, device]; } }); } }); // Stop scanning after 10 seconds setTimeout(() => { bleManager.stopDeviceScan(); setIsScanning(false); setStatus('Scan Complete'); }, 10000); }; const connectToDevice = (device: Device) => { setStatus(`Connecting to ${device.name || device.id}...`); const bleManager = BlekitModule.getBleManager(); bleManager.connectToDevice(device.id) .then(() => { setStatus('Connected'); console.log('Connected to device'); }) .catch((error: any) => { setStatus(`Connection Error: ${error.message}`); console.error('Connection error:', error); }); }; return ( BLE Device Scanner {status}