返回更新列表
新发布Sep 7, 2026

yj_nearbyglasses v1.0.10

尝试检测附近的智能眼镜并警告您

分享

yj_nearbyglasses

尝试检测附近的智能眼镜并提醒你。

⚠ 警告!⚠

nearby-glasses-alert.pages.dev 与我的项目无关。Play Store 和 App Store 中有许多应用看起来甚至名称都与 Nearby Glasses 非常相似。它们似乎是在盗用这个名字,试图借此快速牟利。它们不遵守 AGPL 许可证,也完全不提供任何东西。我不认可它们。

Nearby Glasses 经典版截图 Nearby Glasses canary 模式截图

⚠ 警告!⚠

仅仅因为你认为某人佩戴了隐蔽监控设备就对其进行骚扰,可能构成刑事犯罪。这可能比使用此类设备本身更为严重。请就此事咨询当地法律的专业意见。

⚠ 请勿骚扰任何人 ⚠


Nearby Glasses

这款名为 Nearby Glasses 的应用只有一个目的:寻找附近的智能眼镜并提醒你。

在 Google Play 获取 在 IzzyOnDroid 获取 在 Obtainium 获取 在 App Store 下载

目录

当智能眼镜在附近时,此应用会通知你。它利用这些设备发出的蓝牙数据中的公司标识符进行检测。因此,很可能存在误报(例如来自 VR 头显)。所以,当你接近附近佩戴眼镜的人时,请务必谨慎。尽管此应用发出警告,但他们戴的可能只是普通眼镜。

应用作者 Yves Jeanrenaud 对此应用及其功能不承担任何责任。请自行承担使用风险。从技术设计上讲,检测蓝牙 LE 设备有时可能无法按预期工作。我不是科班出身的开发者。这一切都是我在空闲时间利用自学知识完成的。
很可能出现误报。 这意味着,Nearby Glasses 应用可能会在附近实际上只有同制造商的 VR 头显或该公司其他产品时,通知你附近有智能眼镜。它也可能漏掉附近的智能眼镜。再次强调:我不是专业开发者。
然而,此应用是免费且开源的,你可以查看代码、修改并重新使用它(在许可证条款下)。
Nearby Glasses 应用不会存储任何关于你的详细信息,也不会收集任何关于你或你手机的信息。没有遥测、没有广告,也没有其他烦扰。如果你通过 Play Store 安装此应用,Google 可能会了解你的一些信息并收集一些统计数据。但应用本身不会。
如果你选择存储(导出)日志文件,那完全由你决定,数据去向的责任也由你承担。日志仅在本地记录,不会自动与任何人共享。它们包含的敏感数据很少;事实上,仅包含遇到的 BLE 设备的制造商 ID 代码。

请极其谨慎地使用! 如前所述:无法保证检测到的智能眼镜真的就在附近。它可能是另一种在技术上(在 BLE 广播层面)与智能眼镜相似的设备。
请不要鲁莽行事。在根据任何消息采取行动之前请三思(不仅限于此应用的消息)。

为什么?

  • 因为我认为智能眼镜是一种令人无法容忍的入侵、无视同意的、可怕的科技产品,它已经被用来制作各种且大量的同样真正令人恶心的“内容”。12
  • 一些智能眼镜带有小 LED 指示灯,表示正在录制。但这很容易被禁用,而制造商却声称能防止这种情况,并且完全不承担责任(科技行业几十年来一直如此)。3
  • 智能眼镜此前已被用于即时人脸识别 4,据报道未来将开箱即用 5。这让很多人处于危险之中。
  • 这些数据被用于训练 AI,这意味着人们会查看这些录像,并很可能看到最私密的细节 6
  • 我希望这个应用对某些人有用。

如何实现?

  • 这是一种简单的、偏启发式的方法。由于 BLE 使用随机化的 MAC 地址,且 OSSID 不稳定,服务通告的 UUID 也不稳定,你无法直接扫描蓝牙信标。而且,更糟糕的是,有些公司(例如 Meta)使用专有的蓝牙服务,UUID 也不是持久不变的,目前我们只能依赖通信中的设备名称
  • 目前最可行的方法来自 Bluetooth SIG 分配的编号仓库。据此,制造商公司名称会以数字代码的形式出现在 BLE 信标的广播数据包头部(ADV)中。
  • 这就是 BLE 广播帧的样子:``` Frame 1: Advertising (ADV_IND) Time: 0.591232 s Address: C4:7C:8D:1E:2B:3F (Random Static) RSSI: -58 dBm

Flags: 02 01 06 Flags: LE General Discoverable Mode, BR/EDR Not Supported

Manufacturer Specific Data: Length: 0x1A Type: Manufacturer Specific Data (0xFF) Company ID: 0x058E (Meta Platforms Technologies, LLC) Data: 4D 45 54 41 5F 52 42 5F 47 4C 41 53 53

Service UUIDs: Complete List of 16-bit Service UUIDs 0xFEAA

根据[蓝牙SIG分配编号仓库](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/www.bluetooth.com/specifications/assigned-numbers),我们可以使用这些公司ID:
  - `0x01AB` 对应 `Meta Platforms, Inc.(前身为Facebook)`
  - `0x058E` 对应 `Meta Platforms Technologies, LLC`
  - `0x0D53` 对应 `Luxottica Group S.p.A`(Meta Ray-Bans的制造商)
  - `0x03C2` 对应 `Snapchat, Inc.`(SNAP Spectacles的制造商)
  - `0x05D6` 对应 `Zhuhai Jieli Technology Co`(Rogbird VisionPro和Rollme VistaView的制造商)
  这些ID是**不可更改且强制性的**。当然,Meta和其他制造商还有其他带蓝牙的产品,因此也会使用其ID,例如VR头显。因此,在应用的扫描过程中使用这些公司ID代码容易产生误报。但如果你看不到周围有人佩戴Oculus Rift,且附近没有可供藏身的建筑物,那么很可能是智能眼镜。
- 在配对过程中,智能眼镜通常会广播其产品名称,因此我们也可以扫描该名称。但在实际场景中很少能看到这种情况。有意在酒吧、酒馆、街头等场所使用智能眼镜的人通常会提前做好准备。
- 当应用识别到信号强度足够(参见下方RSSI)的蓝牙低功耗(BLE)设备时,会推送一条警报消息。这有助于你采取相应行动。
- 此外,我们还会扫描广播的设备名称,例如 `rayban`、`ray-ban` 或 `HeyCyan`。`HeyCyan` 是[一个知名的多品牌智能眼镜SDK](https://github.com/ebowwa/HeyCyanSmartGlassesSDK)。在这些 *HeyCyan* 设备中,你可能还会发现由ALDI和Hofer(奥地利)销售的Nilox Smart AI Glasses。为了加强检测,我们还会查找 `primary_UUID`,这是一个固定在这些眼镜软件端的服务标识符(`7905FFF0-B5CE-4E99-A40F-4B1E122D00D0`)。虽然这未来可能会改变,但可能性不大,因为那会使旧设备无法使用,因此届时我们可能只需在扫描例程中添加更多UUID即可。
## 功能特性
- *Nearby Glasses* 应用在智能眼镜附近时显示通知(即检测到上述公司ID之一的BLE设备)
- **附近** 意味着RSSI(信号强度)小于或等于给定值:默认-75 dBm。该默认值对应中等距离和还算可以的信号。
  ### 什么是RSSI?
- 让我稍微解释一下RSSI值:<br/>
RSSI是Received Signal Strength Indication(接收信号强度指示)的缩写。该值用于指示无线通信应用的接收场强。[维基百科有一篇相当不错的文章](https://en.wikipedia.org/wiki/Received_signal_strength_indicator)对此进行了介绍。
简而言之,RSSI主要取决于:<br/>
  - 设备发射功率
  - 天线设计
  - 墙壁和障碍物
  - 人体吸收信号
  - 反射和干扰
  - 设备方向<br/>
但在典型的BLE(蓝牙低功耗)场景中,RSSI的粗略距离(开阔空间)为:<br/>
  - -60 dBm 约 1 – 3 米<br/>
  - -70 dBm 约 3 – 10 米<br/>
  - -80 dBm 约 10 – 20 米<br/>
  - -90 dBm 约 20 – 40 米<br/>
  - -100 dBm 约 30 – 100+ 米或接近信号丢失<br/>
在室内,距离通常要短得多。<br/>
RSSI大致按以下公式衰减:<br/>
    `RSSI ≈ -10 * n * log10(distance) + constant`<br/>
- 因此,默认的-75 dBm RSSI阈值对应开阔空间中约10至15米,室内或拥挤空间中约3至10米。这样你就有很大机会发现佩戴智能眼镜的人。
- *Nearby Glasses* 提供可选的调试日志,可导出(为txt文件),并具有复制粘贴功能。这些功能面向高级用户(极客)以及进一步的调试。
- 在 *设置* 下,你可以指定日志长度、调试级别(显示所有扫描项或仅显示ADV帧)。
- 你还可以输入一些**公司ID**作为十六进制值字符串,例如 `0x01AB,0x058E,0x0D53`。这会覆盖内置检测,因此你的通知将针对新值显示。
- 为了更好的持久性,它使用Android的*前台服务*。如果不需要,你可以在*设置*下禁用它。
- *设置*下的*通知冷却时间*指定两次警告之间必须经过的时间。默认值为10000毫秒,即10秒。这也适用于金丝雀模式,例如10秒意味着它会保持警报状态10秒,然后才再次平静下来。
- 现在本地化程度更高了:<img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/HEAD/img/canary_hide.svg" align="right" alt="一只躲在翅膀下的金丝雀的图画" height="100" width="100">
   - 英语
   - 德语
   - 瑞士德语
   - 法语
   - 西班牙语
   - 中文
   - 意大利语
   - 葡萄牙语(巴西)
   - 俄语
   - 土耳其语
   - 未来还会有更多([用你的语言贡献,支持这个项目!](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/3))
- 现在应用图标的背景不再是透明的了
- 现在我们也会扫描UUID
- *Nearby Glasses* 现在支持深色模式(通过系统设置)
- 从[v1.0.4](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)开始,边缘到边缘的布局问题应该已修复。
- 新许可证为AGPL 3.0
- 我决定放弃CLA。在与一些比我更了解协作项目的人讨论后,我认识到这是一个不必要的步骤。
## iOS和Android
- 终于,在三周之后,iOS移植版可用了。它应该能在大多数iPhone和iPad上运行,甚至包括较旧的设备(可回溯至iOS 16)。[源代码和项目文件也已提供](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/iOS)。代码比较丑陋且非正统。许多方法都是快速而粗糙的(例如,我复用了Android本地化中的json文件),但到目前为止它是可用的。*Nearby Glasses* 可通过[Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896)获取。(名称中带有"original"是为了与那些山寨应用区分开来)。在[releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)下提供用于侧载的.ipa文件。
  iOS应用无法在后台运行,因为我找不到使用类似`ForegroundServices`的方法来持续扫描BTLE ADV,这受限于iOS的限制。因此,*Nearby Glasses* 在iOS下只有*金丝雀模式*可用。如果你比我更了解Swift和iOS(这很有可能),请贡献代码!
- 由于此仓库同时包含Android和iOS应用代码,我重新组织了文件夹结构。因此,现在有[/iOS](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/iOS)和[/Android](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/Android)。

## 使用方法

- 参见[Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)下载APK,或使用Google Play商店。F-Droid和/或Accrescent可能会后续跟进。
<img width="135" height="300" align ="right" alt="Nearby Glasses截图:设置" src="https://assets.kitploit.com/production/public/readmes/12083/71a0271ff9172cad52e8d83ed9a29ba43b509c7b250be2a0254a5a4371ee3401.png" />

<a href="https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses" target="_blank"><img width="239" height="71" alt="在Google Play获取" src="https://assets.kitploit.com/production/public/readmes/12083/a7dbeba4623dd255798dd1159e543cdbeeb9e43faa6db7f859b0f9ed3699932c.png" /></a> <a href="https://apps.apple.com/us/app/nearby-glasses-original/id6761056896"><img width="213" height="71" alt="在App Store下载" src="https://assets.kitploit.com/production/public/readmes/12083/a6fa504b048d52b4e9f5108021dce33af0d96b8b78c34095072971f4a34471fa.png" /></a>
1. 安装应用(目前可从[Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)或[Google Play](https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses)获取),或从[Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896)获取,然后打开它
2. 点击*开始扫描*按钮
3. 授予权限以激活蓝牙(如果尚未启用)并访问附近的设备。某些Android版本还需要你授予访问位置的权限(大多数在版本13之前)。*Nearby Glasses* 不会对你的位置信息做任何处理。如果你不相信我,请查看[代码](https://github.com/yjeanrenaud/yj_nearbyglasses/tree/main/app)
4. 如果你没有看到扫描开始,你可能需要在*设置*菜单中为你的特定手机启用*前台服务*(见下文)
5. 一切就绪!当检测到附近有智能眼镜时,将出现通知。它会持续通知,直到你点击*停止扫描*或彻底终止应用
7. 在菜单中(右上角的齿轮图标),你可以进行一些*设置*:
   1. *启用前台服务*:这样可以防止Android暂停应用,从而避免错过警报。我建议保持启用状态
   2. *RSSI阈值*:这个负数指定设备距离多远才会触发*Nearby Glasses*的警报。从技术上讲,它指的是信号接收的强度。越接近零意味着信号越好,即手机与智能眼镜之间的距离越短。参见[上方关于RSSI的解释和指导](#how)。我建议保持为-75
   3. *启用通知*:你不会想禁用它
   4. 金丝雀模式。这是新的默认模式。使用此模式,你不会收到系统通知来提醒你附近有智能眼镜,而是会看到一只金丝雀来指示周围没有智能眼镜。由于技术限制,iOS应用只有金丝雀模式。<img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/HEAD/img/canary.svg" alt="一只金丝雀的图画" width="100" height="100" alignt="left">
   5. *通知/金丝雀冷却时间*:在这里,你可以指定希望收到多少条关于附近发现智能眼镜的通知,或者金丝雀应该隐藏多长时间。我选择10秒(10000毫秒)作为默认值。这样,你既不会错过通知,也不会被它过度打扰或过快耗尽电池
   6. *启用日志显示*:禁用此功能可能会节省一些电量。此功能在金丝雀模式下已禁用。
   7. *调试*:需要在日志显示框中看到不仅仅是匹配的BLE帧时使用。它有助于确认一切是否正常工作。此功能在金丝雀模式下已禁用。
   8. *最大日志行数*:日志可以有多长。200似乎是电池寿命和日志可用性之间的良好平衡(对于像我这样的极客而言)。此功能在金丝雀模式下已禁用。
   9. *仅BLE ADV*:这将从日志中排除其他蓝牙LE帧,以提高可读性。此功能在金丝雀模式下已禁用。
   10. *覆盖公司ID*:如果你愿意,可以让*Nearby Glasses*提醒你上述指定之外的其他设备。至少对我而言,这对调试很有用。如果不需要或不知道如何使用,请留空
   11. 每项设置都会保存并立即生效。要返回,请使用返回按钮或手势
8. 导出功能使你能够共享应用日志的文本文件。适合像我这样的极客
9. 你也可以通过点击日志显示框来复制粘贴日志

## 待办事项
- **现在已在真实环境中运行!** 我设法让一些人在周围有经过验证的智能眼镜的情况下进行测试。特别感谢Lena!
- 参见[Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)下载APK。
- 我也将[*Nearby Glasses*推送到了Google Play](https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses)。不过,我始终会在[GitHub这里发布releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases)以及[其他地方](https://yves.app/nearbyglasses/latest.apk),供那些不使用Google Play的人使用。

---

- 添加一个选项,将误报设备加入忽略列表。也许可以在通知中实现?
- 我完全不是BT或Android专家。据我所知,人们还可以通过嗅探BLE流量来更深入地研究智能眼镜的通信。通过这样做,我们可能就不需要依赖设备按照BT规范行事,还可以对加密的传输流量使用启发式方法,而不会产生太多误报。但我已经十多年没有研究过BT流量包了。我很庆幸还记得ADV帧……所以如果有人能在这方面提供帮助,将不胜感激!
---
- 添加**更多智能眼镜制造商ID**。目前有Meta、Oakley和Snap。如果能有一份带摄像头的智能眼镜列表也会很有帮助。我为此开了一个[ISSUE](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/56),这样人们可以在遇到其他录音智能眼镜时**协助**发送他们的日志(在我看来这些日志非常安全)。
- 截至2026年3月24日,iOS版本也已可用。
- **Google Pixel设备**上的**布局问题**似乎已从版本1.0.3开始修复。如果你仍然无法访问菜单,因为它与状态栏混在一起,我会尽快处理。同时,尝试将屏幕切换到横屏模式并*顺时针(向右)*旋转。

## 技术解决方案主义?
我知道,在这里说这个可能有点奇怪,但请听我说完。我意识到这是对社会问题的技术解决方案,而这个问题本身又被技术放大了。
我不想推广技术解决方案主义,也不想让人们产生虚假的安全感。这仍然是一种不完美的方法,而且可能永远都是。仅仅因为这个应用现在存在,并不意味着一切都好了。我们需要更好的解决方案来遏制监控技术和隐私侵犯。

## 从源代码构建
由于*Nearby Glasses*是开源的,你也可以从源代码自行构建应用。这可以确保APK中不包含其他库,并且你得到的是你想要的。

请注意,此应用基于以下构建:
- Gradle Wrapper: 9.3.1
- Android Gradle Plugin: 8.13.2
- Kotlin: 1.9.22
- compileSdk: 36
- targetSdk: 36
- minSdk: 26
- 无产品风味
- 仅使用google()和mavenCentral()仓库
- 无Google Services或Firebase插件

### 要求

- **JDK 17**(必需 — 项目目标为Java 17)
- **已安装Android SDK Platform 35**
  - compileSdk = 35
  - targetSdk = 35
- Git
### 逐步构建APK```bash
#Verify Java version:

 $java -version
#It must report Java 17.

#Get the source code
 $git clone https://github.com/yjeanrenaud/yj_nearbyglasses
 $cd yj_nearbyglasses

#Build Debug
 $./gradlew clean assembleDebug

#Build Release (with your own signature cert)
 $./gradlew clean assembleRelease

#Build unsigned Release for IzzyOnDroid / F-Droid
 $./gradlew clean izziFdroid 

#Run and Test
 $./gradlew test lint

致谢

  • @[email protected] 帮助我处理警告信息
  • @[email protected] 提出了金丝雀模式的想法
  • @pojntfx 指出了我在许可协议方面的误解
  • Sarah-Jane B. 提供 UX 设计建议
  • Lena Radau 负责西班牙语翻译
  • Marcel L. 提供反馈并测试 iOS 应用
  • Lena Hansen 负责实地测试
  • 所有其他已为这款应用提供反馈的人!

许可与致谢

应用图标:该图标基于 Freepik - Flaticon 创建的眼镜图标
许可证:本应用 Nearby Glasses 采用 AGPL-3.0 许可证 授权。
金丝雀:金丝雀绘图由我本人绘制,并采用 CC BY-SA 4.0 许可协议授权。我提供了原始 svg 文件(使用 InkScape 制作),并转换为 xml 格式,显然,用于应用资源

分类