
yj_nearbyglasses v1.0.10
intentando detectar gafas inteligentes cercanas y advertirte
yj_nearbyglasses
intenta detectar gafas inteligentes cercanas y avisarte.
⚠ ¡ADVERTENCIA! ⚠
nearby-glasses-alert.pages.dev NO ESTÁ RELACIONADO CON MI PROYECTO. Muchas aplicaciones en Play Store y App Store se ven o incluso se llaman muy parecidas a Nearby Glasses. Parecen secuestrar el nombre e intentar sacar un beneficio rápido de ello. No cumplen con la licencia AGPL y no dan nada en absoluto. No lo respaldo.
⚠ ¡ADVERTENCIA! ⚠
ACOSAR a alguien porque crees que lleva un dispositivo de vigilancia encubierto puede ser un delito penal. Puede incluso ser un delito más grave que usar dicho dispositivo. Por favor, busca asesoramiento legal sobre las leyes locales en esta materia.
⚠ NO ACOSES A NADIE BAJO NINGUNA CIRCUNSTANCIA ⚠
Nearby Glasses
La aplicación, llamada Nearby Glasses, tiene un único propósito: buscar gafas inteligentes cercanas y avisarte.
Índice de contenidos
- Nearby Glasses
- ¿Por qué?
- ¿Cómo?
- Características
- iOS y Android
- Uso
- Pendientes
- ¿Tecno-solucionismo?
- Compilar desde el código fuente
- Agradecimientos
- Licencia y créditos
Esta aplicación te notifica cuando hay gafas inteligentes cerca. Utiliza identificadores de empresa en los datos Bluetooth que estas emiten. Por lo tanto, es probable que haya falsos positivos (p. ej., de cascos de realidad virtual). Por ello, procede con precaución al acercarte a una persona que lleve gafas. Podrían ser simplemente gafas normales, a pesar de la advertencia de esta aplicación.
El autor de la aplicación, Yves Jeanrenaud, no asume ninguna responsabilidad por esta aplicación ni por su funcionamiento. Úsala bajo tu propio riesgo. Por diseño técnico, la detección de dispositivos Bluetooth LE puede que a veces simplemente no funcione como se espera. No soy un desarrollador titulado. Todo esto está escrito en mi tiempo libre y con conocimientos que me he enseñado a mí mismo.
Es probable que haya falsos positivos. Esto significa que la aplicación Nearby Glasses puede notificarte de gafas inteligentes cercanas cuando en realidad podría haber un casco de realidad virtual del mismo fabricante u otro producto de esa misma marca. También puede pasar por alto gafas inteligentes cercanas. De nuevo: no soy un desarrollador profesional.
Sin embargo, esta aplicación es gratuita y de código abierto; puedes revisar el código, modificarlo y reutilizarlo (bajo la licencia).
La aplicación Nearby Glasses no almacena ningún dato sobre ti ni recopila información alguna sobre ti o tu teléfono. No hay telemetría, ni anuncios, ni ninguna otra molestia. Si instalas la aplicación a través de Play Store, Google puede saber algo sobre ti y recopilar algunas estadísticas. Pero la aplicación en sí no lo hace.
Si decides almacenar (exportar) el archivo de registro, eso depende completamente de ti y de tu responsabilidad sobre dónde van esos datos. Los registros se guardan solo localmente y no se comparten automáticamente con nadie. Contienen pocos datos sensibles; de hecho, solo los códigos de identificación del fabricante de los dispositivos BLE encontrados.
¡Úsala con extrema precaución! Como se ha dicho antes: no hay garantía de que las gafas inteligentes detectadas estén realmente cerca. Podría ser otro dispositivo que técnicamente (a nivel de anuncios BLE) se parezca a unas gafas inteligentes.
Por favor, no actúes de forma precipitada. Piensa antes de actuar ante cualquier mensaje (no solo de esta aplicación).
¿Por qué?
- Porque considero que las gafas inteligentes son una intrusión intolerable, que ignoran el consentimiento, una pieza horrible de tecnología que ya se está utilizando para crear varios y muchísimos contenidos igualmente verdaderamente repugnantes. 1, 2
- Algunas gafas inteligentes tienen un pequeño LED que indica que se está grabando. Pero esto se puede desactivar fácilmente, mientras que los fabricantes afirman prevenirlo y no asumen ninguna responsabilidad (la tecnología tiende a hacer esto desde hace décadas). 3
- Las gafas inteligentes ya se han utilizado para reconocimiento facial instantáneo 4 y, según se informa, lo traerán de serie 5. Esto pone a mucha gente en peligro.
- Los datos se utilizan para entrenar IA, lo que significa que la gente revisará las grabaciones y verá, probablemente, las imágenes más íntimas 6
- Espero que esta aplicación sea útil para alguien.
¿Cómo?
- Es un enfoque sencillo y bastante heurístico. Como BLE utiliza MAC aleatorias y los OSSID no son estables, ni tampoco el UUID de los anuncios de servicio, no puedes simplemente escanear las balizas Bluetooth. Y, para empeorar las cosas, algunos como Meta, por ejemplo, utilizan servicios Bluetooth propietarios y los UUID no son persistentes,
por ahora solo podemos confiar en los nombres de dispositivo comunicados. - El enfoque más viable actualmente proviene del repositorio de números asignados de Bluetooth SIG. Siguiendo esto, el nombre de la empresa fabricante aparece como códigos numéricos en el encabezado del paquete de anuncios (ADV) de las balizas BLE.
- así es como se ven las tramas de anuncios 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
- Según el [repositorio de números asignados de Bluetooth SIG](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/www.bluetooth.com/specifications/assigned-numbers), podemos usar estos IDs de empresa:
- `0x01AB` para `Meta Platforms, Inc. (anteriormente Facebook)`
- `0x058E` para `Meta Platforms Technologies, LLC`
- `0x0D53` para `Luxottica Group S.p.A` (que fabrica las Meta Ray-Bans)
- `0x03C2` para `Snapchat, Inc.` (que fabrica las SNAP Spectacles)
- `0x05D6` para `Zhuhai Jieli Technology Co` (que fabrica Rogbird VisionPro y Rollme VistaView)
Son **inmutables y obligatorios**. Por supuesto, Meta y otros fabricantes también tienen otros productos que vienen con Bluetooth y, por tanto, su ID, p. ej. cascos de realidad virtual. Por lo tanto, usar estos códigos de ID de empresa para el proceso de escaneo de la app es propenso a falsos positivos. Pero si no puedes ver a alguien usando un Oculus Rift a tu alrededor y no hay edificios donde puedan esconderse, es muy probable que se trate de gafas inteligentes.
- Durante el emparejamiento, las gafas inteligentes suelen emitir su nombre de producto, así que también podemos escanearlo. Pero es raro que lo veamos en el campo. Las personas que tienen la intención de usar gafas inteligentes en bares, pubs, en la calle y en otros lugares suelen prepararse para ello de antemano.
- Cuando la app reconoce un dispositivo Bluetooth Low Energy (BLE) con una intensidad de señal suficiente (ver RSSI más abajo), envía un mensaje de alerta. Esto debería ayudarte a actuar en consecuencia.
- Además, escaneamos nombres de dispositivos emitidos, p. ej. `rayban`, `ray-ban` o `HeyCyan`. `HeyCyan` es [un famoso SDK para gafas inteligentes de varias marcas](https://github.com/ebowwa/HeyCyanSmartGlassesSDK). Entre esos dispositivos *HeyCyan*, también puedes encontrar las Nilox Smart AI Glasses que venden ALDI y Hofer (en Austria). Para reforzar esto, también buscamos el `primary_UUID`, un identificador de servicio fijado al lado de software de esas gafas (`7905FFF0-B5CE-4E99-A40F-4B1E122D00D0`). Aunque esto podría cambiar en el futuro, es poco probable, ya que dejaría inutilizables los dispositivos más antiguos; por tanto, quizás añadamos más UUIDs a la rutina de escaneo entonces.
## Características
- La app *Nearby Glasses* muestra una notificación cuando hay gafas inteligentes cerca (es decir, un dispositivo BLE de uno de esos IDs de empresa mencionados anteriormente)
- **Cerca** significa que el RSSI (intensidad de señal) es menor o igual a un valor dado: -75 dBm por defecto. Este valor por defecto corresponde a una distancia media y una señal aceptable.
### ¿Qué es el RSSI?
- Déjame explicar un poco ese valor RSSI:<br/>
RSSI es la abreviatura de Received Signal Strength Indication (Indicación de intensidad de señal recibida). El valor es una indicación de la intensidad de campo de recepción de aplicaciones de comunicación inalámbrica. [Wikipedia tiene un artículo bastante bueno](https://en.wikipedia.org/wiki/Received_signal_strength_indicator) al respecto.
En resumen, el RSSI depende principalmente de:<br/>
- Potencia de transmisión del dispositivo
- Diseño de la antena
- Paredes y obstáculos
- Cuerpos humanos que absorben la señal
- Reflexión e interferencia
- Orientación del dispositivo<br/>
Pero en escenarios típicos de BLE (Bluetooth Low Energy), la distancia aproximada del RSSI (espacio abierto) es: <br/>
- -60 dBm ~ 1 – 3 m<br/>
- -70 dBm ~ 3 – 10 m<br/>
- -80 dBm ~ 10 – 20 m<br/>
- -90 dBm ~ 20 – 40 m<br/>
- -100 dBm ~ 30 – 100+ m o casi pérdida de señal<br/>
En interiores, las distancias suelen ser mucho más cortas.<br/>
El RSSI cae aproximadamente según<br/>
`RSSI ≈ -10 * n * log10(distance) + constant`<br/>
- Por tanto, el umbral RSSI por defecto de -75 dBm corresponde a unos 10 a 15 metros en espacio abierto y de 3 a 10 metros en interiores o espacios concurridos. Así tienes una buena oportunidad de detectar a esa persona que lleva gafas inteligentes.
- *Nearby Glasses* muestra un registro de depuración opcional que es exportable (como archivo txt) y cuenta con una función de copiar y pegar. Están pensados para usuarios avanzados (frikis) y para depuración adicional.
- En *Ajustes*, puedes especificar la longitud del registro, la depuración (mostrar todos los elementos de escaneo o solo tramas ADV).
- También puedes introducir algunos **IDs de empresa** como cadena de valores hexadecimales, p. ej. `0x01AB,0x058E,0x0D53`. Esto anula la detección integrada, por lo que tu notificación aparecerá para los nuevos valores.
- Para una mejor persistencia, usa el *Servicio en primer plano* de Android. Puedes desactivarlo en *Ajustes* si no lo necesitas.
- El *Tiempo de espera de notificación* en *Ajustes* especifica cuánto tiempo debe pasar entre dos avisos. El valor por defecto es 10000 ms, es decir, 10 s. Esto también se aplica al canario; p. ej., 10 s significa que permanecerá en alerta durante 10 s antes de calmarse de nuevo.
- Ahora está un poco más localizado: <img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/HEAD/img/canary_hide.svg" align="right" alt="Dibujo de un canario que se esconde bajo un ala" height="100" width="100">
- Inglés
- Alemán
- Alemán suizo
- Francés
- Español
- Chino
- Italiano
- Portugués (Brasil)
- Ruso
- Turco
- más por venir, eventualmente ([apoya este proyecto contribuyendo en tu idioma!](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/3))
- Ahora el fondo del icono de la app ya no es transparente
- Ahora también escaneamos UUIDs
- *Nearby Glasses* ahora admite el modo oscuro (a través de los ajustes del sistema)
- El problema de diseño de borde a borde debería estar solucionado desde [v1.0.4](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) en adelante.
- Recientemente licenciado bajo AGPL 3.0
- Decidí renunciar al CLA. Después de algunas discusiones con personas que sabían más que yo sobre proyectos colaborativos, obtuve la idea de que era un paso innecesario.
## iOS y Android
- Finalmente, después de tres semanas, el port para iOS está disponible. Debería funcionar en la mayoría de iPhones y iPads; incluso en los más antiguos (hasta iOS 16). [También se proporcionan el código fuente y los archivos del proyecto](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/iOS). El código es feo y poco ortodoxo. Muchos enfoques son rápidos y sucios (p. ej., reutilizo los archivos json de la localización de Android), pero funciona hasta ahora. *Nearby Glasses* está disponible a través de la [Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896). (Se llama original para distinguirla de esos imitadores). Hay un .ipa disponible para sideloading en [releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases).
La app de iOS no funciona en segundo plano, porque no encontré ninguna posibilidad de usar algo similar a `ForegroundServices` para escanear permanentemente tramas BTLE ADV debido a las restricciones de iOS. Por tanto, solo hay un *Modo Canario* disponible en *Nearby Glasses* bajo iOS. Si conoces Swift e iOS mejor que yo (lo cual es probable), ¡contribuye!
- Debido a que este repositorio contiene tanto el código de la app de Android como el de iOS, reorganizé las carpetas. Por tanto, hay [/iOS](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/iOS) y [/Android](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/Android).
## Uso
- Consulta [Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) para descargar el APK o usa Google Play Store. F-Droid y/o Accrescent pueden seguir.
<img width="135" height="300" align ="right" alt="Captura de pantalla Nearby Glasses: Ajustes" 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. Instala la app (desde [Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) o desde [Google Play](https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses), por ahora) o desde [Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896), y ábrela
2. Pulsa el botón *Iniciar escaneo*
3. Concede permisos para activar Bluetooth (si aún no está habilitado) y para acceder a los dispositivos cercanos. Algunas versiones de Android también requieren que concedas permisos para acceder a tu ubicación (antes de la Versión 13, mayormente). *Nearby Glasses* no hace nada con tu información de ubicación. Si no me crees, mira el [código](https://github.com/yjeanrenaud/yj_nearbyglasses/tree/main/app)
4. Si no ves que el escaneo comienza, puede que necesites habilitar el *Servicio en primer plano* en tu teléfono concreto en el menú de *Ajustes* (ver más abajo)
5. ¡Ya está todo listo! Cuando se detecten gafas inteligentes cerca, aparecerá una notificación. Lo hará hasta que pulses *Detener escaneo* o cierres la app por completo
7. En el menú (arriba a la derecha, el engranaje), puedes hacer algunos *Ajustes*:
1. *Habilitar servicio en primer plano*: Con esto, evitas que Android pause la app y así evitas que deje de alertarte. Recomiendo dejarlo habilitado
2. *Umbral RSSI*: Este número negativo especifica a qué distancia puede estar un dispositivo para ser motivo de alerta por parte de *Nearby Glasses*. Técnicamente, se refiere a la intensidad con la que se recibe la señal. Más cerca de cero significa mejor señal, por tanto menos distancia entre tu teléfono y las gafas inteligentes. Consulta [RSSI arriba para explicaciones y orientación](#how). Recomiendo dejarlo en -75
3. *Habilitar notificaciones*: No querrías desactivar eso
4. Modo Canario. Este es el nuevo valor por defecto. Con esto, no recibirás notificaciones del sistema alertándote de gafas inteligentes cercanas, sino que verás un canario que indica que no hay gafas inteligentes alrededor. La app de iOS solo tiene un modo canario debido a limitaciones técnicas. <img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/HEAD/img/canary.svg" alt="Dibujo de un canario" width="100" height="100" alignt="left">
5. *Tiempo de espera de notificación/canario*: Aquí especificas cuántas notificaciones sobre gafas inteligentes encontradas cerca quieres recibir o cuánto tiempo debe esconderse el canario. Elegí 10 segundos (10000 ms) como valor por defecto. Así, no te perderás la notificación y al mismo tiempo no te molestará demasiado ni agotará tu batería demasiado rápido
6. *Habilitar visualización de registro*: Desactivar esto podría ahorrarte algo de batería. Está desactivado en el modo canario.
7. *Depuración*: Es necesario para ver más que solo las tramas BLE coincidentes en el marco de visualización del registro. Es útil para ver si las cosas funcionan. Está desactivado en el modo canario.
8. *Máx. líneas de registro*: Cuánto puede llegar a ser el registro. 200 parece un buen equilibrio entre duración de la batería y usabilidad del registro (para frikis como yo). Está desactivado en el modo canario.
9. *Solo BLE ADV*: Esto excluye otras tramas Bluetooth LE del registro para una mejor legibilidad. Está desactivado en el modo canario.
10. *Anular IDs de empresa*: Si quieres, puedes hacer que *Nearby Glasses* te alerte de otros dispositivos distintos a los especificados anteriormente. Útil para depuración, al menos para mí. Déjalo vacío si no lo necesitas o no sabes qué hacer con ello
11. Cada ajuste se guarda y es efectivo inmediatamente. Para volver atrás, usa tu botón o gesto de retroceso
8. La función de exportación te permite compartir un archivo de texto del registro de la app. Para frikis como yo
9. También puedes copiar y pegar el registro tocando el marco de visualización del registro
## Tareas pendientes
- **¡Ahora funciona en el mundo real!** Conseguí que algunas personas lo probaran con gafas inteligentes verificadas a su alrededor. ¡Gracias especiales a Lena!
- Consulta [Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) para descargar el APK.
- También subí [*Nearby Glasses* a Google Play](https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses). Sin embargo, siempre publicaré [releases aquí en GitHub](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) y [en otros lugares](https://yves.app/nearbyglasses/latest.apk), para aquellos que evitan Google Play.
---
- Añadir una opción para poner los falsos positivos en una lista de ignorados. ¿Quizás en la notificación?
- No soy en absoluto un experto en BT o Android. Por lo que he aprendido, uno podría profundizar también en la comunicación de las gafas inteligentes olfateando el tráfico BLE. Al hacerlo, probablemente no necesitaríamos depender de que el dispositivo se comporte según las especificaciones BT, sino que también podríamos usar heurísticas sobre las transmisiones de tráfico cifrado sin muchos falsos positivos. Pero no he mirado los paquetes de tráfico BT en más de diez años. ¡Me alegro de haber recordado las tramas ADV...! Así que si alguien pudiera ayudar con esto, ¡se agradecería enormemente!
---
- Añadir **más IDs de fabricantes** de gafas inteligentes. Ahora mismo, son Meta, Oakley y Snap. Una lista de gafas inteligentes con cámaras disponibles también ayudaría. Abrí un [ISSUE para esto](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/56), para que la gente pueda **ayudar** enviando sus registros (que son perfectamente seguros, en mi opinión) cuando encuentren otras gafas inteligentes grabadoras
- a partir del 24 de marzo de 2026, la versión para iOS también está disponible.
- El **problema de diseño** con **dispositivos Google Pixel** parece estar solucionado a partir de la Versión 1.0.3. Si aún no puedes llegar al menú porque está mezclado con la barra de estado de alguna manera, lo investigaré lo antes posible. Mientras tanto, intenta poner tu pantalla en modo horizontal y gírala *en el sentido de las agujas del reloj (hacia la derecha)*.
## ¿Solución-tecnológica?
Sé que este puede ser un lugar extraño para hacerlo, pero escúchame. Soy consciente de que esta es una solución técnica a un problema social, que a su vez está amplificado por la tecnología.
No quiero promover el tecnosolucionismo ni quiero que la gente se sienta falsamente segura. Sigue siendo un enfoque imperfecto y probablemente siempre lo será. No todo es bueno solo porque esta app exista ahora. Necesitamos mejores soluciones para frenar la tecnología de vigilancia y la intrusión en la privacidad.
## Compilar desde el código fuente
Como *Nearby Glasses* es de código abierto, también puedes compilar la app tú mismo desde el código fuente. Esto asegura que no haya otras bibliotecas incluidas en el APK y obtienes lo que quieres.
Ten en cuenta que esta app se basa en:
- Gradle Wrapper: 9.3.1
- Android Gradle Plugin: 8.13.2
- Kotlin: 1.9.22
- compileSdk: 36
- targetSdk: 36
- minSdk: 26
- Sin sabores de producto
- Repositorios: solo google() y mavenCentral()
- Sin Google Services ni plugins de Firebase
### Requisitos
- **JDK 17** (requerido — el proyecto apunta a Java 17)
- **Android SDK Platform 35** instalado
- compileSdk = 35
- targetSdk = 35
- Git
### Compilar el APK paso a paso```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
Agradecimientos
- @[email protected] por ayudarme con las advertencias
- @[email protected] por señalar la idea de un modo canario
- @pojntfx por señalar mis malentendidos sobre las licencias
- Sarah-Jane B. por los consejos de diseño UX
- Lena Radau por la traducción al español
- Marcel L. por los comentarios y las pruebas de la app para iOS
- Lena Hansen por las pruebas de campo
- ¡A todos los demás que ya han proporcionado comentarios sobre la app!
Licencia y créditos
Icono de la app: El icono se basa en Iconos de gafas creados por Freepik - Flaticon
Licencia: Esta app Nearby Glasses está licenciada bajo la licencia AGPL-3.0.
Canario: Los dibujos del canario están hechos por mí y licenciados bajo CC BY-SA 4.0. Los proporcioné como archivos svg en bruto (hechos en InkScape) y convertidos a xml, obviamente, para los recursos de la app



