Ionic Android 问题:扫描功能不起作用
Posted
技术标签:
【中文标题】Ionic Android 问题:扫描功能不起作用【英文标题】:Ionic Android Issue: scan function not working 【发布时间】:2018-07-14 23:42:36 【问题描述】:我是 angularjs 和 ionic cordova 的新手。我正在关注这个关于 ionic cordova BLE 插件模块的视频讲座中给出的代码。我正在尝试使用 ionic 3 来完成这项工作,并为 BLE 安装了 ionic cordova 插件。
https://www.youtube.com/watch?v=chfXawb_eVY&t=1898s
我已按照确切的说明进行操作。这是我的代码文件:
app.module.ts
import BrowserModule from '@angular/platform-browser';
import ErrorHandler, NgModule from '@angular/core';
import IonicApp, IonicErrorHandler, IonicModule from 'ionic-angular';
import SplashScreen from '@ionic-native/splash-screen';
import StatusBar from '@ionic-native/status-bar';
import BLE from '@ionic-native/ble';
import MyApp from './app.component';
import HomePage from '../pages/home/home';
@NgModule(
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage
],
providers: [
StatusBar,
SplashScreen,
provide: ErrorHandler, useClass: IonicErrorHandler,
BLE
]
) export class AppModule
home.ts
import Component, NgZone from '@angular/core';
import NavController from 'ionic-angular';
import BLE from '@ionic-native/ble';
import ToastController from 'ionic-angular';
import setTimeout from 'core-js/library/web/timers';
@Component(
selector: 'page-home',
templateUrl: 'home.html'
)
export class HomePage
devices: any[] = [];
statusMessage:string;
constructor(public navCtrl: NavController,
public toastCtrl: ToastController,
private ble: BLE,
private ngZone: NgZone)
scan()
this.setStatus('Scanning for bluetooth LE devices');
this.devices = [];
this.ble.scan([], 2).subscribe(
device=>this.onDeviceDiscovered(device),
error=>this.scanError(error)
);
setTimeout(this.statusMessage.bind(this),5000,'Scan Complete');
onDeviceDiscovered(device)
console.log('Scanning');
console.log('Discovered ' + JSON.stringify(device,null,2));
this.ngZone.run(()=>
this.devices.push(device);
);
scanError(error)
console.log('Check your bluetooth connection');
home.html
<ion-header>
<ion-navbar>
<ion-title>
BLE Scanner
</ion-title>
<ion-buttons end>
<button ion-button (click)="scan()">
Scan
</button>
</ion-buttons>
</ion-navbar>
</ion-header>
<ion-content>
<ion-list>
<button ion-item *ngFor="let device of devices">
<h2> device.name || 'Unnamed' </h2>
<p> device.id </p>
<p>RSSI: device.rssi ></p>
</button>
</ion-list>
</ion-content>
函数scanError没有写在视频里,我已经写好了。
这是webview截图
this.setStatus 函数未定义。但是,在视频中,并没有声明该函数。我尝试声明
setStatus:any
但该函数仍然显示相同的消息。另外,即使我删除了 setStatus 函数,我也无法在控制台中收到任何消息。
我在一开始就包含了 NgZone 组件。
有什么办法可以解决这个问题还是我遗漏了什么?
【问题讨论】:
【参考方案1】:您需要在代码中编写一个 setStatus 函数。
setStatus(message)
console.log(message);
this.ngZone.run(() =>
this.statusMessage = message;
);
slides 上的代码是缩写的。演示文稿中示例的源代码可在 github https://github.com/don/ionic-ble-examples
上获得【讨论】:
以上是关于Ionic Android 问题:扫描功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Ionic 3 本地通知 LED/声音在 Android 中不起作用
Ionic/Angular HTTP post 请求在 android 上不起作用
ionic2 WebSocket 在 Android 应用程序中不起作用
Ionic 3.x:iOS 上的推送通知不起作用(适用于 Android?) Ionic Native Plugin Push