如何使用Ionic 4持续扫描出血设备并获取广告数据。

问题描述 投票:1回答:1

我想做的是:使用 https:/github.comdoncordova-plugin-ble-central。 插件创建一个安卓应用程序使用离子和需要获得RSSI数据和广告数据也连续甚至在屏幕锁定也。

我做了什么:现在我得到的数据后,按下扫描按钮和RSSI数据和广告数据在缓冲区内

我需要什么。

  1. 如何连续扫描蓝牙设备,包括他们的广告数据?
  2. 如何扫描,即使屏幕被锁定或应用程序是在后台?

以下是我的代码。

html代码:

<ion-header>
  <ion-toolbar>
    <ion-title>
      BLE Scanner
    </ion-title>
    <ion-button (click)="Scan()" slot="end">
      <ion-icon name="Bluetooth"></ion-icon>
      <p>Scan</p>
    </ion-button>
  </ion-toolbar>
</ion-header>

<ion-content>
  <ion-list>
    <ion-card-content ion-item *ngFor="let device of devices">
      <p>{{device.name || 'Unnamed'}}</p>
      <p>{{device.id}}</p>
      <p> RSSI: {{device.rssi}}</p>
    </ion-card-content>
  </ion-list>
</ion-content>

.ts 代码 :

import { BLE } from '@ionic-native/ble/ngx';


  devices: any[] = [];

  constructor(private ble: BLE, private ngZone: NgZone) {

  }
  Scan() {
    this.devices = [];
    this.ble.scan([],5).subscribe(
      device => this.onDeviceDiscovered(device)
    );
  }
  onDeviceDiscovered(device) {
    console.log('Discovered' + JSON.stringify(device, null, 2));
    this.ngZone.run(() => {
      this.devices.push(device)
      console.log(device)
      let  adData = new Uint8Array(device.advertising);
      console.log(adData);
    })
  }
cordova ionic-framework ionic3 cordova-plugins ionic4
1个回答
0
投票

如何获得扫描蓝牙设备连续包括他们的广告数据?

根据插件的文档。

https:/github.comdoncordova-plugin-ble-central#scan

{
    "name": "TI SensorTag",
    "id": "BD922605-1B07-4D55-8D09-B66653E51BBA",
    "rssi": -79,
    "advertising": /* ArrayBuffer or map */
}

插件应该为你提供BLE设备应该提供广告,要么是你的缓冲区解码不对,要么是设备没有广告数据包。

如何扫描,即使屏幕锁定或应用程序是在后台?

你可以试试这个插件的后台模式扫描

https:/ionicframework.comdocsnativebackground-mode。

https:/github.comkatzercordova-plugin-background-mode。

© www.soinside.com 2019 - 2024. All rights reserved.