Назад к обновлениям
New releaseSep 7, 2026

yj_nearbyglasses v1.0.10

пытается обнаружить умные очки поблизости и предупредить вас

Поделиться

yj_nearbyglasses

попытка обнаружить умные очки поблизости и предупредить вас.

⚠ ВНИМАНИЕ! ⚠

nearby-glasses-alert.pages.dev НЕ ИМЕЕТ ОТНОШЕНИЯ К МОЕМУ ПРОЕКТУ. Многие приложения в Play Store и App Store выглядят или даже называются очень похоже на Nearby Glasses. Похоже, они перехватывают название и пытаются быстро на этом нажиться. они не соблюдают лицензию AGPL, не дают никаких whatsoever. Я это не одобряю.

Screenshot Nearby Glasses classic Screenshot Nearby Glasses canary mode

⚠ ВНИМАНИЕ! ⚠

ПРЕСЛЕДОВАНИЕ кого-либо из-за того, что вы считаете, будто на нём надето скрытое устройство слежки, может быть уголовным преступлением. Оно может быть даже более серьёзным преступлением, чем использование такого устройства. Пожалуйста, обратитесь за юридической консультацией относительно местных законов по этому вопросу.

⚠ НЕ ПРЕСЛЕДУЙТЕ НИКОГО ВООБЩЕ ⚠


Nearby Glasses

Приложение под названием Nearby Glasses имеет единственную цель: искать умные очки поблизости и предупреждать вас.

Get It On Google Play Get it at IzzyOnDroid Get it on Obtainium Download on the App Store

Содержание

Это приложение уведомляет вас, когда умные очки находятся поблизости. Оно использует идентификаторы компаний в данных Bluetooth, передаваемых этими устройствами. Поэтому вероятны ложные срабатывания (например, от VR-гарнитур). Следовательно, пожалуйста, действуйте с осторожностью, приближаясь к человеку в очках поблизости. Это могут быть просто обычные очки, несмотря на предупреждение этого приложения.

Автор приложения Yves Jeanrenaud не несёт никакой ответственности за это приложение и его функциональность. Используйте на свой риск. По техническим причинам обнаружение устройств Bluetooth LE иногда может просто не работать как ожидается. Я не дипломированный разработчик. Всё это написано в моё свободное время и на основе знаний, которые я освоил самостоятельно.
Ложные срабатывания вероятны. Это означает, что приложение Nearby Glasses может уведомить вас об умных очках поблизости, когда на самом деле рядом может быть VR-гарнитура того же производителя или другой продукт этой компании. Оно также может пропустить умные очки поблизости. Повторюсь: я не профессиональный разработчик.
Однако это приложение бесплатное и с открытым исходным кодом, вы можете изучить код, изменить его и повторно использовать (в соответствии с лицензией).
Приложение Nearby Glasses не хранит никаких сведений о вас и не собирает никакой информации о вас или вашем телефоне. Здесь нет телеметрии, рекламы и других неудобств. Если вы устанавливаете приложение через Play Store, Google может что-то о вас знать и собирать некоторую статистику. Но само приложение — нет.
Если вы решите сохранить (экспортировать) файл журнала, это полностью ваше решение и ваша ответственность за то, куда попадут эти данные. Журналы записываются только локально и не передаются автоматически никому. Они содержат мало конфиденциальных данных; фактически, только идентификационные коды производителей встреченных BLE-устройств.

Используйте с крайней осторожностью! Как уже говорилось: нет гарантии, что обнаруженные умные очки действительно находятся поблизости. Это может быть другое устройство, технически (на уровне BLE adv) похожее на умные очки.
Пожалуйста, не действуйте опрометчиво. Думайте, прежде чем реагировать на любые сообщения (не только от этого приложения).

Зачем?

  • Потому что я считаю умные очки недопустимым вторжением, пренебрегающим согласием, ужасным куском технологий, который уже используется для создания множества и тонн столь же поистине отвратительного «контента». 1, 2
  • Некоторые умные очки оснащены небольшим светодиодом, означающим, что идёт запись. Но его легко отключить, при этом производители заявляют, что предотвращают это, и не несут никакой ответственности вообще (технологии склонны к этому уже десятилетиями). 3
  • Умные очки уже использовались для мгновенного распознавания лиц 4 и, как сообщается, будут иметь это из коробки 5. Это подвергает многих людей опасности.
  • Их данные используются для обучения ИИ, а это значит, что люди будут просматривать записи и видеть, вероятно, самые интимные подробности 6
  • Я надеюсь, что это приложение кому-то пригодится.

Как?

  • Это простой, довольно эвристический подход. Поскольку BLE использует рандомизированные MAC, а OSSID не стабильны, как и UUID сервисных объявлений, вы не можете просто сканировать Bluetooth-маяки. И, чтобы сделать ситуацию ещё более мрачной, некоторые, например Meta, используют проприетарные Bluetooth-сервисы, а UUID не постоянны, пока мы можем полагаться только на передаваемые имена устройств.
  • Текущий наиболее жизнеспособный подход исходит из репозитория назначенных номеров Bluetooth SIG. Согласно ему, название компании-производителя отображается в виде числовых кодов в заголовке пакета объявления (ADV) BLE-маяков.
  • вот как выглядят кадры 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

- Согласно [репозиторию назначенных номеров Bluetooth SIG](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/www.bluetooth.com/specifications/assigned-numbers), мы можем использовать следующие company ID:
  - `0x01AB` для `Meta Platforms, Inc. (formerly 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)
  Они **неизменяемы и обязательны**. Разумеется, у Meta и других производителей есть и другие продукты с Bluetooth, а значит, и их ID, например VR-гарнитуры. Поэтому использование этих company ID в процессе сканирования приложением чревато ложными срабатываниями. Но если вы не видите рядом человека в Occulus Rift и поблизости нет зданий, где он мог бы спрятаться, скорее всего, это умные очки.
- При сопряжении умные очки обычно передают название своего продукта, так что мы можем сканировать и по нему. Но в реальных условиях мы редко это увидим. Люди, намеревающиеся использовать умные очки в барах, пабах, на улице и в других местах, обычно готовятся к этому заранее.
- Когда приложение распознаёт устройство Bluetooth Low Energy (BLE) с достаточной силой сигнала (см. RSI ниже), оно отправляет уведомление. Это должно помочь вам действовать соответствующим образом.
- Кроме того, мы сканируем транслируемые имена устройств, например `rayban`, `ray-ban` или `HeyCyan`. `HeyCyan` — это [известный SDK для умных очков различных брендов](https://github.com/ebowwa/HeyCyanSmartGlassesSDK). Среди этих устройств *HeyCyan* можно также найти Nilox Smart AI Glasses, которые продаются в ALDI и Hofer (в Австрии). Для надёжности мы также ищем `primary_UUID` — идентификатор сервиса, жёстко закреплённый в программной части этих очков (`7905FFF0-B5CE-4E99-A40F-4B1E122D00D0`). Хотя в будущем это может измениться, это маловероятно, так как сделало бы старые устройства непригодными, поэтому в таком случае мы просто добавим больше UUID в процедуру сканирования.
## Возможности
- Приложение *Nearby Glasses* показывает уведомление, когда умные очки находятся поблизости (то есть устройство BLE с одним из упомянутых выше company ID)
- **Поблизости** означает, что RSSI (сила сигнала) меньше или равна заданному значению: по умолчанию -75 dBm. Это значение по умолчанию соответствует средней дистанции и приемлемому сигналу.
  ### Что такое RSSI?
- Позвольте немного объяснить это значение RSSI:<br/>
RSSI — сокращение от Received Signal Strength Indication (индикатор уровня принимаемого сигнала). Это значение является показателем напряжённости поля приёма для приложений беспроводной связи. [В Википедии есть довольно хорошая статья](https://en.wikipedia.org/wiki/Received_signal_strength_indicator) об этом.
Кратко говоря, RSSI зависит в основном от:<br/>
  - Мощности передачи устройства
  - Конструкции антенны
  - Стен и препятствий
  - Поглощения сигнала человеческими телами
  - Отражения и интерференции
  - Ориентации устройства<br/>
Но в типичных сценариях BLE (Bluetooth Low Energy) примерная зависимость 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/>
- Таким образом, порог RSSI по умолчанию в -75 dBm соответствует примерно 10–15 метрам на открытом пространстве и 3–10 метрам в помещениях или в местах скопления людей. Так у вас есть хороший шанс заметить человека в умных очках.
- *Nearby Glasses* показывает опциональный журнал отладки, который можно экспортировать (в виде txt-файла), и имеет функцию копирования и вставки. Это для продвинутых пользователей (гиков) и для дальнейшей отладки.
- В разделе *Settings* вы можете задать длину журнала, режим отладки (отображать все элементы сканирования или только ADV-кадры).
- Вы также можете ввести некоторые **company ID** в виде строки шестнадцатеричных значений, например `0x01AB,0x058E,0x0D53`. Это переопределяет встроенное обнаружение, так что ваше уведомление появится для новых значений.
- Для лучшей устойчивости работы используется *Foreground Service* Android. Вы можете отключить его в разделе *Settings*, если он вам не нужен.
- *Notification Cooldown* в разделе *Settings* задаёт, сколько времени должно пройти между двумя предупреждениями. По умолчанию 10000 мс, то есть 10 с. Это также относится к канарейке: например, 10 с означает, что она будет оставаться в тревоге 10 с, прежде чем снова успокоится.
- Теперь приложение немного более локализовано: <img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/HEAD/img/canary_hide.svg" align="right" alt="Drawing of a canary that hides underneath a wing" height="100" width="100">
   - Английский
   - Немецкий
   - Швейцарский немецкий
   - Французский
   - Испанский
   - Китайский
   - Итальянский
   - Португальский (Бразилия)
   - Русский
   - Турецкий
   - со временем, возможно, больше ([поддержите этот проект, внеся вклад на своём языке!](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/3))
- Теперь фон иконки приложения больше не прозрачный
- Теперь мы сканируем и UUID тоже
- *Nearby Glasses* теперь поддерживает тёмный режим (через системные настройки)
- Проблема с edge-to-edge разметкой должна быть исправлена начиная с [v1.0.4](https://github.com/yjeanrenaud/yj_nearbyglasses/releases).
- Теперь лицензировано под AGPL 3.0
- Я решил отказаться от CLA. После некоторых обсуждений с людьми, которые разбирались в совместных проектах лучше меня, я пришёл к выводу, что это был ненужный шаг.
- теперь у него немного другая иконка, чтобы более строго соответствовать AGPL 3.0.
## iOS и Android
- Наконец, спустя три недели, доступна версия для iOS. Она должна работать на большинстве iPhone и iPad, даже на старых (вплоть до iOS 16). [Исходный код и файлы проекта также предоставлены](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/iOS). Код некрасивый и неортодоксальный. Многие подходы быстрые и грязные (например, я повторно использую json-файлы из локализации Android), но пока это работает. *Nearby Glasses* доступно в [Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896). (Оно называется original, чтобы его можно было отличить от подделок). Файл .ipa доступен для сайдлоадинга в разделе [releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases).
  Приложение для iOS не работает в фоновом режиме, потому что я не нашёл возможности использовать что-то похожее на `ForegroundServices` для постоянного сканирования BTLE ADV из-за ограничений iOS. Поэтому в *Nearby Glasses* под iOS доступен только *Canary Mode*. Если вы знаете 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 Store. F-Droid и/или Accrescent могут появиться позже.
<img width="135" height="300" align ="right" alt="Screenshot Nearby Glasses: Settings" 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="Get It On 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="Download on the 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. Нажмите кнопку *Start Scanning*
3. Предоставьте разрешения для активации Bluetooth (если он ещё не включён) и для доступа к устройствам поблизости. Некоторые версии Android также требуют предоставить разрешения на доступ к вашему местоположению (в основном до версии 13). *Nearby Glasses* ничего не делает с информацией о вашем местоположении. Если вы мне не верите, посмотрите на [код](https://github.com/yjeanrenaud/yj_nearbyglasses/tree/main/app)
4. если вы не видите, что сканирование началось, возможно, вам нужно включить *Foreground Service* на вашем конкретном телефоне в меню *Settings* (см. ниже)
5. Всё готово! Когда умные очки обнаружены поблизости, появится уведомление. Оно будет появляться, пока вы не нажмёте *Stop Scanning* или окончательно не завершите приложение
7. В меню (справа вверху, шестерёнка) вы можете изменить некоторые *Settings*:
   1. *Enable Foreground Service*: Этим вы предотвращаете приостановку приложения Android, а значит, и пропуск уведомлений. Рекомендую оставить это включённым
   2. *RSSI threshold*: Это отрицательное число задаёт, насколько далеко может находиться устройство, чтобы стать причиной уведомления от *Nearby Glasses*. Технически оно относится к тому, насколько сильным принимается сигнал. Ближе к нулю означает лучший сигнал, а значит, меньшее расстояние между вашим телефоном и умными очками. См. [RSSI выше для объяснений и рекомендаций](#how). Рекомендую оставить -75
   3. *Enable Notifications*: Вам вряд ли захочется это отключать 
   4. Canary Mode. Это новый режим по умолчанию. С ним вы не будете получать системные уведомления, предупреждающие вас об умных очках поблизости, а вместо этого увидите канарейку, которая указывает на отсутствие умных очков рядом. В приложении для iOS из-за технических ограничений есть только режим канарейки. <img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/HEAD/img/canary.svg" alt="Drawing of a canary" width="100" height="100" alignt="left"> 
   5. *Notification/Canary Cooldown*: Здесь вы задаёте, сколько уведомлений об обнаруженных поблизости умных очках вы хотите получать или как долго канарейка должна прятаться. Я выбрал 10 секунд (10000 мс) в качестве значения по умолчанию. Так вы не пропустите уведомление и в то же время не будете слишком сильно им раздражаться или слишком быстро разряжать батарею
   6. *Enable Log Display*: Отключение этого может сэкономить немного заряда батареи. В режиме канарейки это отключено.
   7. *Debug*: Нужно, чтобы видеть в окне журнала больше, чем только совпадающие BLE-кадры. Полезно, чтобы понять, работает ли всё. В режиме канарейки это отключено.
   8. *Max log lines*: Какой длины может достигать журнал. 200 кажется хорошим балансом между сроком службы батареи и удобством использования журнала (для таких гиков, как я). В режиме канарейки это отключено.
   9. *BLE ADV only*: Это исключает другие кадры Bluetooth LE из журнала для лучшей читаемости. В режиме канарейки это отключено.
   10. *Override Company IDs*: Если хотите, вы можете заставить *Nearby Glasses* уведомлять вас о других устройствах, помимо указанных выше. Полезно для отладки, по крайней мере для меня. Оставьте пустым, если вам это не нужно или вы не знаете, что с этим делать
   11. Каждая настройка сохраняется и вступает в силу немедленно. Чтобы вернуться назад, используйте кнопку или жест «назад»
8. Функция экспорта позволяет вам поделиться текстовым файлом журнала приложения. Для таких гиков, как я
9. Вы также можете копировать и вставлять журнал, нажав на окно отображения журнала

## ToDos
- **Теперь это работает в реальных условиях!** Мне удалось привлечь нескольких людей для тестирования с проверенными умными очками рядом с ними. Особая благодарность Лене!
- См. [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](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) и [в других местах](https://yves.app/nearbyglasses/latest.apk) для тех, кто избегает Google Play.

---

- Добавить опцию внесения ложных срабатываний в список игнорирования. Может быть, в уведомлении?
- Я совсем не эксперт по BT или Android. Судя по тому, что я узнал, можно было бы также глубже изучить коммуникацию умных очков, перехватывая BLE-трафик. Поступая так, мы, вероятно, могли бы не полагаться на то, что устройство ведёт себя в соответствии со спецификациями BT, а также использовать эвристики на зашифрованных передачах трафика почти без ложных срабатываний. Но я не смотрел на пакеты BT-трафика более десяти лет. Я рад, что вспомнил про ADV-кадры... Так что если кто-то может помочь с этим, буду очень признателен!
---
- Добавить **больше manufacturer ID** умных очков. Сейчас это Meta, Oakley и Snap. Список доступных умных очков с камерами тоже помог бы. Я открыл [ISSUE по этому поводу](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/56), чтобы люди могли **помочь**, присылая свои журналы (которые, на мой взгляд, совершенно безопасны) при обнаружении других записывающих умных очков
- по состоянию на 24 марта 2026 года версия для 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
- Без product flavors
- Репозитории: только 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 за полевые испытания
  • Всем остальным, кто уже предоставил обратную связь по приложению!

Лицензия и благодарности

Иконка приложения: Иконка основана на Glasses SVG Vector by sensa, licensed under CC0 1.0 Universal.


Лицензия: Это приложение Nearby Glasses лицензировано под AGPL-3.0 license.
Канарейка: Рисунки канареек созданы мной и лицензированы под CC BY-SA 4.0. Я предоставил их в виде исходных svg-файлов (созданных в InkScape) и, очевидно, преобразованных в xml для ресурсов приложения

Категории