Реактивное сканирование устройств Bluetooth - PullRequest
0 голосов
/ 24 января 2019

Для моего проекта я пытаюсь отсканировать HM-10 BLE с помощью собственного приложения. Я использую этот пример Сканирование для устройств Bluetooth с React Native . Кажется, что я успешно установил библиотеку, потому что когда я запускаю код, я не получаю ошибки. Я сделал следующие шаги.

  1. react-native init reactnativeBLE
  2. npm i --save react-native-ble-manager
  3. npm install
  4. react-native link react-native-ble-manager
  5. react-native run-ios

Однако, когда я запускаю пример кода, я не нахожу никаких устройств. В моем файле App.js я скопировал код примера:

import React, { Component } from 'react';
import { 
    AppRegistry,
    ListView,
    NativeAppEventEmitter, 
    View, 
    Text, 
    Button } from 'react-native';
import BleManager from 'react-native-ble-manager';

// I changed this to export default App
    class BluetoothScanner extends Component {
        constructor(props){
            super(props);

        const dataSource = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
        this.devices = [];
        this.state = {
            dataSource: dataSource.cloneWithRows(this.devices)
        };
    }

    componentDidMount() {
        console.log('bluetooth scanner mounted');

        NativeAppEventEmitter.addListener('BleManagerDiscoverPeripheral',(data) => 
        {
            let device = 'device found: ' + data.name + '(' + data.id + ')'; 

            if(this.devices.indexOf(device) == -1) {
                this.devices.push(device);
            }

            let newState = this.state;
            newState.dataSource = newState.dataSource.cloneWithRows(this.devices);
            this.setState(newState);
        });

        BleManager.start({showAlert: false})
                  .then(() => {
                            // Success code 
                            console.log('Module initialized');
                            });
    }

    startScanning() {
       console.log('start scanning');
       BleManager.scan([], 120);
    }

    render() {
        return (
            <View style={{padding: 50 }}>
                <Text>Bluetooth scanner</Text>
                <Button onPress={() => this.startScanning()} title="Start scanning"/>

                <ListView
                    dataSource={this.state.dataSource}
                    renderRow={(rowData) => <Text>{rowData}</Text>}
                />
            </View>
        );
    }
}

Мой вопрос Почему я не могу сканировать устройства BLE, когда нажимаю start scanning? Нужна ли дополнительная настройка?

Любые комментарии или советы будут очень признательны! Заранее спасибо:)

1 Ответ

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

Может быть, вам нужно включить ваше местоположение и Bluetooth одновременно.

...