Javasacript(Ionic)

时间:2017-03-14 22:32:36

标签: javascript ionic-framework bluetooth-lowenergy ibeacon indoor-positioning-system

对于我的一个项目,我目前想要构建一个Ionic应用程序,为i​​OS和Android平台编写一次代码。我正在寻找一种方法来衡量两个移动设备之间的距离。一个设备应放置在特定位置,另一个设备应在进入第一个设备的范围(或更具体地说是第一个设备所在的位置)时检测到。

特定位置的设备1将连接到互联网,对于访问该位置的设备2也是如此。

我已经阅读了很多不同的实现,但大多数时候它需要Android或iOS的本机代码。

以下是我已经找到的解决方案:

  • 蓝牙:每部手机都有蓝牙,因此一旦手机接近另一部手机就不难发现,但这意味着与另一部手机配对,并不是真的可能测量两个设备之间的距离。
  • iBeacons和BLE::我们希望避免在发布时购买大量信标。这意味着我们希望创建一个移动应用程序来充当灯塔,但在许多设备上的Android上都不可能。此外,我们不关心微观位置,这意味着我们不会以100%的潜力使用信标。
  • GPS:在安全方面确实不太好,以确保这两个设备的位置都很好。
  • 在位置手动检入:确保设备2进入设备1位置的最佳方法是进行手动检查 地点。但这有点令人沮丧,因为没有创新 所有

我实际上已经没有想法了。实现应该在Javascript中编写快速原型,以便限制选项。

我已阅读StackExchange上的帖子:Stack,但问题是没有描述任何实现。

换句话说,我希望检入系统知道设备2在设备1的位置。即使在请求我们的服务器的API之间进行交换,我们怎么能确定两个设备是关闭的,或者至少是设备2去了一个特定的位置?

EDIT& NEWS

为了给可能面临相同情况的人提供更多选择,我与在Microsoft工作的人员以及名为:ThaliProject的项目联系,您可以在Google上找到这是一个PeerToPeer库,用于在移动设备之间进行通信。但这不适合这个问题:

  

不幸的是,Thali不会解决您的问题。 :(我们依赖   Android上的蓝牙4.2支持(所以我们可以是BLE的核心和   周)。

     

如果你需要在两者之间工作,蓝牙也行不通   Android和iOS设备因为Apple使用了专有变体   蓝牙不起作用。

     

现在BLE可以在Android和iOS之间运行。虽然很多Android   手机不能是外围设备,大多数都可以作为中心设备。

     

不同的人正在玩的另一种可能性是   声音。就像是   https://developers.google.com/nearby/messages/overview?hl=en。一个号码   小组已经通过超声波试验了局部发现   通讯。只需发送挑战并获得响应即可   超声波,你已经证明设备1和2非常接近   彼此。

我偶然发现了一个名为SonicNet.JS的JavaScript库,能够通过超声波发送数据和字符串,但实际上我正在努力让它在我的计算机上运行。这可能是一种解决方案,可以避免互操作性问题。

2 个答案:

答案 0 :(得分:0)

从wifi设备飞行的时间怎么样?基本上,设备A上的应用需要发送信号回合。设备B拿起它并返回带有签名的信号。设备A收到它并根据时间飞逝计算距离。

或者使用这里的API怎么样? https://indoor.here.com/#/。这个想法是GPS +高精度地图。我知道您已经考虑过GPS。但是高清地图为您提供了一种验证设备接收到的GPS信息的方法,从而可以解决您的安全问题。

答案 1 :(得分:-1)

您可以使用 Cordova蓝牙低功耗插件https://github.com/evothings/cordova-ble)。它主要适用于Android和iOS。

当然,这些设备应该支持BLE,但许多新款智能手机都是如此。

您可以先使用evothings.ble.startScan(success, error)扫描周围的人,然后使用RSSItxPower值来获取设备之间的距离。