npm i --save @awarns/wifi
- 版本:1.0.0
- GitHub: https://github.com/GeoTecINIT/awarns-framework
- NPM: https://npmjs.net.cn/package/%40awarns%2Fwifi
- 下载
- 昨日:0
- 上周:0
- 上个月:0
@awarns/wifi
此模块包含获取附近 Wi-Fi 访问点(AP)信息的任务。这有助于评估附近是否存在具体的访问点。还可以基于 Wi-Fi 构建自定义室内定位和定位系统。
此插件作为 nativescript-context-apis 插件(由同一作者)的包装,提供 Wi-Fi 扫描任务。即使在后台也可以扫描附近的 Wi-Fi AP。
使用以下命令行指令安装插件
ns plugin add @awarns/wifi
用法
安装并设置此插件后,您将能够访问两个不同的任务来扫描附近的 Wi-Fi AP。结果将是以下描述的 WifiScan 记录。
任务
任务名称 | 描述 |
---|---|
acquirePhoneWifiScan |
允许在指定时间内执行单个 Wi-Fi 扫描 |
acquireMultiplePhoneWifiScan |
允许重复执行 Wi-Fi 扫描。扫描将一直进行,直到有剩余执行时间(最多 3 分钟或在下一次计划的任务执行之前,以较早发生者为准) |
注意:所有任务都需要 精确位置权限和活动 Wi-Fi 无线电 才能执行。每个任务将在框架初始化期间自动请求缺少的内容
获取单个 Wi-Fi 扫描
要为此任务注册其使用,您只需将其导入并在应用程序的任务列表中调用其生成器函数即可
import { Task } from '@awarns/core/tasks';
import { acquirePhoneWifiScanTask } from '@awarns/wifi';
export const demoTasks: Array<Task> = [
acquirePhoneWifiScanTask(/* optional */ { ensureIsNew: true, timeout: 15000 }),
];
任务生成器参数
名称 | 类型 | 描述 |
---|---|---|
ensureIsNew |
布尔值 |
确保生成的 Wi-Fi 扫描是最新的。值为 true 确保满足 Android Wi-Fi 扫描限制,因此报告的值始终是新的。默认值为 true |
timeout |
数字 |
在扫描附近 Wi-Fi AP 上的最大时间,以毫秒为单位。默认值为 15000 (15 秒) |
任务输出事件
在应用程序任务图中示例用法
on(
'startEvent',
run('acquirePhoneWifiScan')
.every(1, 'minutes')
.cancelOn('stopEvent')
);
on('wifiScanAcquired', run('writeRecords'));注意:要使用
writeRecords
任务,必须安装和配置持久性包。请参阅 持久性包文档。
批量获取 Wi-Fi 扫描
要为此任务注册其使用,您只需将其导入并在应用程序的任务列表中调用其生成器函数即可
import { Task } from '@awarns/core/tasks';
import { acquireMultiplePhoneWifiScanTask } from '@awarns/wifi';
export const demoTasks: Array<Task> = [
acquireMultiplePhoneWifiScanTask(/* optional */ { ensureIsNew: true, timeout: 15000 }),
];
任务生成器参数
名称 | 类型 | 描述 |
---|---|---|
ensureIsNew |
布尔值 |
确保生成的 Wi-Fi 扫描是最新的。值为 true 确保满足 Android Wi-Fi 扫描限制,因此报告的值始终是新的。默认值为 true |
timeout |
数字 |
执行每个单个 Wi-Fi 扫描的最大时间。默认值为 15000 (15 秒) |
任务输出事件
在应用程序任务图中示例用法
on(
'startEvent',
run('acquireMultiplePhoneWifiScan', {
maxInterval: 25000
/*
(Optional, mandatory if ensureIsNew=true) Maximun interval between scans, unlimited by default.
If ensureIsNew=true, the value must ensure that a maximum of 2 scans are being collectd every minute.
For example, here the task will be executed every 1 minute, which means it will have ~55s to run.
With 25s between scans we meet the OS restrictions and have enought time to collect 2 Wi-Fi fingerprints.
*/
})
.every(1, 'minutes')
.cancelOn('stopEvent')
);
on('wifiScanAcquired', run('writeRecords'));注意:要使用
writeRecords
任务,必须安装和配置持久性包。请参阅 持久性包文档。
事件
名称 | 负载 | 描述 |
---|---|---|
wifiScanAcquired |
WifiScan | Array<WifiScan> |
表示已获取一个或多个新的 Wi-Fi 扫描结果 |
记录
WifiScan
属性 | 类型 | 描述 |
---|---|---|
id |
字符串 |
记录的唯一 ID |
type |
字符串 |
始终 wifi-scan |
change |
更改 |
始终 none 。扫描结果作为整体返回。不报告中间结果 |
timestamp |
日期 |
扫描完成时的本地时间 |
isNew |
布尔值 |
表示扫描结果是否已缓存。当在扫描期间使用 ensureIsNew=false 选项时,此值只能是 false |
seen |
WifiApInfo 数组 |
扫描期间看到的 Wi-Fi AP。列表可以为空。有关 WifiApInfo 对象属性的详细信息,请参阅上下文-apis API 文档中的 Wi-Fi 部分 |
许可证
Apache License 版本 2.0