草庐IT

javascript - Javascript(Ionic)中两个移动设备之间的距离

coder 2024-07-16 原文

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

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

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

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

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

我实际上已经没有想法了。实现应该使用 Javascript 来编写快速原型(prototype),因此选项有限。

我在 StackExchange 上读过一篇帖子:Stack ,但问题是没有描述实现。

换句话说,我希望签到系统知道设备 2 去了设备 1 的位置。即使在请求我们的服务器的 API 之间进行了交换,我们如何确定两个设备被或关闭了至少设备 2 到达了特定位置?

编辑与新闻

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

Unfortunately Thali isn't going to solve your problem. :( We depend on Bluetooth 4.2 support on Android (so we can be both a BLE central and peripheral).

Bluetooth also won't work if you need things to work between an Android and iOS device because Apple uses a proprietary variant of Bluetooth that doesn't work.

Now BLE does work between Android and iOS. And while many Android phones can't be peripheral, most of them can be central.

Another possibility that different folks are playing around with is sound. Something like https://developers.google.com/nearby/messages/overview?hl=en. A number of groups have been experimenting with local discovery via ultrasonic communication. Just send the challenge and get the response over ultrasonic and you have proven that devices 1 and 2 are very close to each other.

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

最佳答案

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

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

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

关于javascript - Javascript(Ionic)中两个移动设备之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42797813/

有关javascript - Javascript(Ionic)中两个移动设备之间的距离的更多相关文章

  1. ruby - 多次弹出/移动 ruby​​ 数组 - 2

    我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby​​数组,我们在StackOverflow上找到一

  2. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  3. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  4. ruby - #之间? Cooper 的 *Beginning Ruby* 中的错误或异常 - 2

    在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee

  5. ruby-on-rails - `a ||= b` 和 `a = b if a.nil 之间的区别? - 2

    我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行

  6. ruby-on-rails - 如何重命名或移动 Rails 的 README_FOR_APP - 2

    当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?

  7. ruby - 这两个 Ruby 类初始化定义有什么区别? - 2

    我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是

  8. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  9. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  10. [工业相机] 分辨率、精度和公差之间的关系 - 2

    📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年

随机推荐