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

yj_nearbyglasses v1.0.10

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

Поделиться

yj_nearbyglasses

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

⚠ ПРЕДУПРЕЖДЕНИЕ! ⚠

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

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-рекламы) похожее на умные очки.
Пожалуйста, не действуйте опрометчиво. Думайте, прежде чем действовать на основании любых сообщений (не только от этого приложения).

Зачем?

  • Потому что я считаю умные очки невыносимым вторжением, пренебрегающим согласием, ужасным образцом техники, которая уже используется для создания разнообразного и огромного количества столь же по-настоящему отвратительного «контента». 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), мы можем использовать следующие идентификаторы компаний:
  - `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)
  Они **неизменны и обязательны**. Конечно, у Meta и других производителей есть и другие продукты с Bluetooth, и поэтому их идентификатор, например, VR-гарнитуры. Следовательно, использование этих кодов компаний в процессе сканирования приложения подвержено ложным срабатываниям. Но если вы не видите никого в Oculus Rift вокруг себя и рядом нет зданий, где можно было бы спрятаться, скорее всего, это умные очки.
- Во время сопряжения умные очки обычно передают название своего продукта, поэтому мы можем сканировать и на него тоже. Но в полевых условиях мы редко это увидим. Люди, намеревающиеся использовать умные очки в барах, пабах, на улице и в других местах, обычно готовятся к этому заранее.
- Когда приложение распознает устройство Bluetooth Low Energy (BLE) с достаточной силой сигнала (см. RSSI ниже), оно отправляет предупреждающее сообщение. Это должно помочь вам действовать соответствующим образом.
- Кроме того, мы сканируем транслируемые имена устройств, например, `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-устройство с одним из указанных выше идентификаторов компаний)
- **Рядом** означает, что RSSI (сила сигнала) меньше или равна заданному значению: -75 дБм по умолчанию. Это значение по умолчанию соответствует средней дистанции и приемлемому сигналу.
  ### Что такое 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 дБм ~ 1–3 м<br/>
  - -70 дБм ~ 3–10 м<br/>
  - -80 дБм ~ 10–20 м<br/>
  - -90 дБм ~ 20–40 м<br/>
  - -100 дБм ~ 30–100+ м или почти потеря сигнала<br/>
В помещении расстояния часто гораздо меньше.<br/>
RSSI падает примерно по формуле<br/>
    `RSSI ≈ -10 * n * log10(расстояние) + константа`<br/>
- Поэтому порог RSSI по умолчанию -75 дБм соответствует примерно 10–15 метрам на открытом пространстве и 3–10 метрам в помещении или в людных местах. Так у вас будет хороший шанс заметить человека в умных очках.
- *Nearby Glasses* показывает необязательный журнал отладки, который можно экспортировать (в виде txt-файла) и который имеет функцию копирования и вставки. Это для продвинутых пользователей (гиков) и для дальнейшей отладки.
- В разделе *Настройки* вы можете указать длину журнала, отладку (отображение всех элементов сканирования или только ADV-кадров).
- Вы также можете ввести некоторые **идентификаторы компаний** в виде строки шестнадцатеричных значений, например, `0x01AB,0x058E,0x0D53`. Это переопределяет встроенное обнаружение, поэтому ваше уведомление будет появляться для новых значений.
- Для лучшей устойчивости используется Android *Foreground Service*. Вы можете отключить это в *Настройках*, если оно вам не нужно.
- *Время ожидания уведомления* в *Настройках* определяет, сколько времени должно пройти между двумя предупреждениями. По умолчанию 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* теперь поддерживает тёмный режим (через системные настройки)
- Проблема с макетом edge-to-edge должна быть исправлена начиная с [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). Код уродливый и нетрадиционный. Многие подходы быстрые и грязные (например, я повторно использую json-файлы из локализации Android), но пока работает. *Nearby Glasses* доступно через [Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896). (Оно называется original, чтобы отличаться от клонов). .ipa доступен для боковой загрузки в [релизах](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).

## Использование

- Смотрите [Релизы](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) для загрузки APK или используйте Google Play Store. 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="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. Установите приложение (из [Релизов](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* на вашем конкретном телефоне в меню *Настройки* (см. ниже)
5. Всё готово! Когда рядом будут обнаружены умные очки, появится уведомление. Оно будет появляться, пока вы не нажмёте *Stop Scanning* или полностью не завершите работу приложения
7. В меню (справа вверху, значок шестерёнки) вы можете изменить некоторые *Настройки*:
   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="Рисунок канарейки" 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. Вы также можете скопировать и вставить журнал, нажав на окно отображения журнала

## Задачи
- **Теперь работает в реальных условиях!** Мне удалось привлечь несколько человек к тестированию с проверенными умными очками вокруг них. Особая благодарность Лене!
- Смотрите [Релизы](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-кадры... Так что если кто-то может помочь с этим, это было бы очень признательно!
---
- Добавить **больше идентификаторов производителей** умных очков. Сейчас это 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 за полевые испытания
  • Всем остальным, кто уже оставил отзывы о приложении!

Лицензия и авторство

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

Категории