Nativescript - обновляет значение RSSI каждую секунду. - PullRequest
0 голосов
/ 19 ноября 2018

В настоящее время у меня есть одно приложение Bluetooth, которое сканирует все доступные устройства и может подключиться к устройству.

У меня есть список, который будет отображаться при каждом обнаружении устройства Bluetooth. Однако могу ли я узнать, как заставить приложение обновлять значение RSSI каждую секунду?

вот мой код.

doStartScanning(){
  this.peripherals=[];
  this.distance=[];
  bluetooth.startScanning({
    serviceUUIDs: [], 
   // seconds: 4, /*if this is not specify, user can manually stop the scanning by press button stop scan*/
    onDiscovered: (peripheral) => { 
      this.zone.run(() => {
        console.log("---UUID "+peripheral.UUID);
        this.peripherals.push(peripheral);
        this.distance.push(`${Math.round((Math.pow(10,(-62-(peripheral.RSSI+20))/20))*10)/10}`);
      })
    }
   
  }
  ).then(function() {
    console.log("scanning complete");
  }, function (err) {
    console.log("error while scanning: " + err);
  });
 
}

/*user can stop scan the available bluetooth*/
doStopScanning(){
  bluetooth.stopScanning().then(function() {
  console.log("Scanning Stop!");
  },
  function (err) {
    dialogs.alert({
      title: "Whoops!",
      message: err,
      okButtonText: "OK, so be it"
    });
  });
} 
 <GridLayout rows="*">
            <ListView [items]="peripherals" separatorColor="#90c3d4">
                <ng-template let-peripherals="item" let-i="index" let-odd="odd" let-even="even">
                    <StackLayout orientation="horizontal" class="padded-label" >
                        <StackLayout class="padded-label-stack">
                            <Label horizontalAlignment="right" width="40" text="{{ peripherals.RSSI +20}} dBm" class="rssi-label" ></Label>
                            <Label horizontalAlignment="right" width="40" text="{{ distance[i] }} m" class="rssi-label" ></Label>
                        </StackLayout>
                        <StackLayout class="padded-label-stack" (tap)="onTapPeripheral(peripherals.UUID,peripherals.name, peripherals.state)">
                          <Label text="Name: {{ peripherals.name }}" class="title-label" textWrap="true" ></Label>
                          <Label text="UUID: {{ peripherals.UUID }}" class="uuid-label" textWrap="true"    ></Label>
                          <Label text="State: {{ peripherals.state }}" class="uuid-label" textWrap="true"    ></Label>
                        </StackLayout>
                    </StackLayout>
                </ng-template>
            </ListView>
        </GridLayout>

1 Ответ

0 голосов
/ 19 ноября 2018

К сожалению, плагин не поддерживает чтение RSSI. Возможно, вам придется переопределить CBPeripheralDelegate / BluetoothGattCallback, реализованный плагином, чтобы прочитать это.

...