我想做的是:使用 https:/github.comdoncordova-plugin-ble-central。 插件创建一个安卓应用程序使用离子和需要获得RSSI数据和广告数据也连续甚至在屏幕锁定也。
我做了什么:现在我得到的数据后,按下扫描按钮和RSSI数据和广告数据在缓冲区内
我需要什么。
以下是我的代码。
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);
})
}
如何获得扫描蓝牙设备连续包括他们的广告数据?
根据插件的文档。
https:/github.comdoncordova-plugin-ble-central#scan
{
"name": "TI SensorTag",
"id": "BD922605-1B07-4D55-8D09-B66653E51BBA",
"rssi": -79,
"advertising": /* ArrayBuffer or map */
}
插件应该为你提供BLE设备应该提供广告,要么是你的缓冲区解码不对,要么是设备没有广告数据包。
如何扫描,即使屏幕锁定或应用程序是在后台?
你可以试试这个插件的后台模式扫描