Я бы предложил это:
Сделать BluetoothService как в
@Injectable()
export class BluetoothService {
constructor(private _ble: BLE) {
}
//make all the api level calls here and maybe more if you want to cache it and use the infos from here later on in the app.
scan() {
return this._ble.scan();
}
}
Далее, Сделайте модель устройства
export class DeviceNameModel {
constructor(private _ble: BLE) {}
deviceSpecificFunction() {}
turnOnLamp() {
this._ble.write(some arraybuffer);
}
}
И, наконец, на вашей странице /s:
сканирование страницы для сканирования и подключения к устройству.
export class ScanPage() {
private _myDevice: DeviceNameModel;
scannedDevices: DeviceNameModel
constructor(private _ble: BLE){}
ngOnInit() {
this._ble.scan(scanTime)
.filter(filter predicate to remove devices that you don't ever
need to connect to)
.subscribe((response: DeviceNameModel[]) => {
this.scannedDevices = response;
});
}
connectTo(device: DeviceNameModel) {
this._ble.connect(device).subscribe(() => do sth);
}
}
Домашняя страница для взаимодействия с подключенным устройством.
export class HomePage implements OnInit {
private _myDevice: DeviceNameModel;
constructor(private _ble: BLE){
this._myDevice = new DeviceNameModel(_ble);
}
onToggle(event: boolean) {
return event ? this._myDevice.turnOnLamp() : this._myDevice.turnOffLamp();
}
}
Обратите внимание, что большая часть этого кода является псевдо-вспомогательным кодом, и вам необходимо адаптировать свои службы, модели и страницы к вашим потребностям.