Функция сканирования BLE не работает должным образом в приложении ionic v4

#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. Я не знаю, можете ли вы использовать оба одновременно. в том же приложении я думаю, что это возможно не одновременно.