#android #ionic-framework #bluetooth #bluetooth-lowenergy #ionic4
#Android #ionic-framework #bluetooth #bluetooth-низкое энергопотребление #ionic4
Вопрос:
Я создал небольшое приложение с ionic Framework v4.
Я установил cordova-plugin-ble-central и использовал функцию scan () для сканирования всех устройств, но она находит не все устройства. Например, я пытаюсь отсканировать Samsung Galaxy S6, но он не может быть найден.
Мой мобильный — это Samsung Galaxy S8.
Мой код в home.page.ts:
import { Component, NgZone } from "@angular/core";
import { BLE } from "@ionic-native/ble/ngx";
import { AlertController, ToastController } from "@ionic/angular";
@Component({
selector: "app-home",
templateUrl: "home.page.html",
styleUrls: ["home.page.scss"]
})
export class HomePage {
devices: any[] = [];
statusMessage: string;
constructor(
private ble: BLE,
private alertCtrl: AlertController,
private toastCtrl: ToastController,
private ngZone: NgZone
) {
this.checkBluetooth();
}
checkBluetooth() {
this.ble.isEnabled().then(
success => {
this.showToast("Bluetooth is enabled");
},
error => {
this.showError("Bluetooth is *not* enabled");
}
);
}
enableBluetooth() {
this.ble.enable().then(
success => {
this.showToast("Bluetooth is enabled");
},
error => {
this.showError("The user did *not* enable Bluetooth");
}
);
}
listDevices() {
this.setStatus("Scanning for bluetooth LE devices");
this.devices = [];
this.ble
.scan([], 5)
.subscribe(
device => this.onDeviceDiscovered(device),
error => this.showError("No devices because " error)
);
setTimeout(this.setStatus.bind(this), 5000, "Scan complete");
}
onDeviceDiscovered(device) {
this.showToast("Discovered " JSON.stringify(device, null, 2));
this.ngZone.run(() => {
this.devices.push(device);
});
}
setStatus(message) {
this.showToast(message);
this.ngZone.run(() => {
this.statusMessage = message;
});
}
async showError(error) {
const alert = await this.alertCtrl.create({
header: "Error",
subHeader: error,
buttons: ["OK"]
});
await alert.present();
}
async showToast(msj) {
const toast = await this.toastCtrl.create({
message: msj,
duration: 1000
});
await toast.present();
}
}
interface pairedlist {
class: number;
id: string;
address: string;
name: string;
}
Как выполнить сканирование правильно, чтобы найти все устройства? Спасибо.
Комментарии:
1. Может быть, это потому, что вы используете BLE, а не все телефоны используют ble?
2. @Sam как я могу узнать, использует ли мой телефон BLE? И на случай, если я захочу просканировать другие устройства, которые не используют BLE, можете ли вы порекомендовать мне плагин для сканирования также этих устройств?
3. Да, этот плагин позволяет подключать другие устройства: ionicframework.com/docs/native/bluetooth-serial в документе говорится, что вы можете подключиться к Arduino. но вы также можете подключаться к другим устройствам
4. @Sam большое вам спасибо. Возможно ли использовать оба плагина для моего приложения ionic?
5. Я не знаю, можете ли вы использовать оба одновременно. в том же приложении я думаю, что это возможно не одновременно.