
yj_nearbyglasses v1.0.10
tenta di rilevare occhiali intelligenti nelle vicinanze e avvisarti
yj_nearbyglasses
tentativo di rilevare smart glasses nelle vicinanze e avvisarti.
⚠ ATTENZIONE! ⚠
nearby-glasses-alert.pages.dev NON È CORRELATO AL MIO PROGETTO. Molte app nel Play Store e nell'App Store sembrano o sono persino chiamate in modo molto simile a Nearby Glasses. Sembrano appropriarsi del nome e cercare di trarne un rapido profitto. non aderiscono alla licenza AGPL, non danno alcuna garanzia. Non approvo tutto ciò.
⚠ ATTENZIONE! ⚠
MOLESTARE qualcuno perché si pensa che indossi un dispositivo di sorveglianza occulto può costituire reato penale. Potrebbe persino essere un reato più grave rispetto all'uso di tale dispositivo. Ti consiglio di consultare un avvocato riguardo alle leggi locali in materia.
⚠ NON MOLESTARE NESSUNO, IN NESSUN CASO ⚠
Nearby Glasses
L'app, chiamata Nearby Glasses, ha un unico scopo: cercare smart glasses nelle vicinanze e avvisarti.
Indice
- Nearby Glasses
- Perché?
- Come?
- Funzionalità
- iOS e Android
- Utilizzo
- ToDo
- Tecno-soluzionismo?
- Compilare dal sorgente
- Ringraziamenti
- Licenza e Crediti
Questa app ti notifica quando delle smart glasses sono nelle vicinanze. Utilizza gli identificatori aziendali nei dati Bluetooth emessi da queste. Pertanto, è probabile che ci siano falsi positivi (ad es. da visori VR). Quindi, procedi con cautela quando ti avvicini a una persona nelle vicinanze che indossa occhiali. Potrebbero essere semplicemente occhiali normali, nonostante l'avviso di questa app.
L'autore dell'app Yves Jeanrenaud non si assume alcuna responsabilità per questa app né per il suo funzionamento. Usala a tuo rischio. Per concezione tecnica, il rilevamento di dispositivi Bluetooth LE potrebbe talvolta semplicemente non funzionare come previsto. Non sono uno sviluppatore laureato. Tutto questo è scritto nel mio tempo libero e con conoscenze che ho appreso da autodidatta.
I falsi positivi sono probabili. Ciò significa che l'app Nearby Glasses potrebbe notificarti smart glasses nelle vicinanze quando in realtà potrebbe esserci un visore VR dello stesso produttore o un altro prodotto di quella stessa azienda. Potrebbe anche non rilevare smart glasses presenti nelle vicinanze. Ripeto: non sono uno sviluppatore professionista.
Tuttavia, questa app è libera e open source, puoi esaminare il codice, modificarlo e riutilizzarlo (secondo la licenza).
L'app Nearby Glasses non memorizza alcun dettaglio su di te né raccoglie alcuna informazione su di te o sul tuo telefono. Non ci sono telemetria, pubblicità o altre seccature. Se installi l'app tramite il Play Store, Google potrebbe sapere qualcosa su di te e raccogliere alcune statistiche. Ma l'app stessa no.
Se scegli di memorizzare (esportare) il file di log, è completamente a tua discrezione e sotto la tua responsabilità dove finiscono questi dati. I log vengono registrati solo localmente e non condivisi automaticamente con nessuno. Contengono pochi dati sensibili; in effetti, solo i codici ID del produttore dei dispositivi BLE incontrati.
Usa con estrema cautela! Come detto prima: non c'è alcuna garanzia che le smart glasses rilevate siano davvero nelle vicinanze. Potrebbe trattarsi di un altro dispositivo tecnicamente (a livello di BLE adv) simile alle smart glasses.
Ti prego di non agire impulsivamente. Pensa prima di agire in base a qualsiasi messaggio (non solo da questa app).
Perché?
- Perché considero le smart glasses un'intrusione intollerabile, un orribile pezzo di tecnologia che ignora il consenso e che è già utilizzato per creare vari e innumerevoli 'contenuti' altrettanto davvero disgustosi. 1, 2
- Alcune smart glasses presentano un piccolo LED che segnala che è in corso una registrazione. Ma questo è facilmente disattivabile, mentre i produttori affermano di impedirlo e non si assumono alcuna responsabilità (la tecnologia tende a fare così da decenni ormai). 3
- Le smart glasses sono già state usate per il riconoscimento facciale istantaneo 4 e secondo quanto riferito lo saranno di serie 5. Questo mette molte persone in pericolo.
- I dati vengono usati per addestrare l'IA, il che significa che le persone esamineranno le registrazioni e vedranno, probabilmente, gli aspetti più intimi 6
- Spero che questa app sia utile a qualcuno.
Come?
- È un approccio semplice, piuttosto euristico. Poiché il BLE utilizza MAC randomizzati e gli OSSID non sono stabili, né lo sono gli UUID degli annunci di servizio, non puoi semplicemente scansionare i beacon bluetooth. E, per rendere le cose ancora più difficili, alcuni come Meta, per esempio, utilizzano servizi Bluetooth proprietari e gli UUID non sono persistenti,
per ora possiamo affidarci solo ai nomi dei dispositivi comunicati. - L'approccio attualmente più praticabile proviene dal repository dei numeri assegnati dal Bluetooth SIG. Seguendo questo, il nome dell'azienda produttrice compare come codici numerici nell'intestazione di advertising del pacchetto (ADV) dei beacon BLE.
- questo è l'aspetto dei frame di advertising 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
- Secondo il [repository dei numeri assegnati del Bluetooth SIG](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/www.bluetooth.com/specifications/assigned-numbers), possiamo utilizzare questi company ID:
- `0x01AB` per `Meta Platforms, Inc. (formerly Facebook)`
- `0x058E` per `Meta Platforms Technologies, LLC`
- `0x0D53` per `Luxottica Group S.p.A` (che produce i Meta Ray-Bans)
- `0x03C2` per `Snapchat, Inc.` (che produce gli SNAP Spectacles)
- `0x05D6` per `Zhuhai Jieli Technology Co` (che produce Rogbird VisionPro e Rollme VistaView)
Sono **immutabili e obbligatori**. Naturalmente, Meta e altri produttori hanno anche altri prodotti dotati di Bluetooth e quindi il loro ID, ad esempio i visori VR. Pertanto, utilizzare questi codici di company ID per il processo di scansione dell'app è soggetto a falsi positivi. Ma se non vedi qualcuno che indossa un Occulus Rift intorno a te e non ci sono edifici dove potrebbe nascondersi, è probabile che si tratti invece di smart glasses.
- Durante l'abbinamento, gli smart glasses di solito emettono il loro nome prodotto, quindi possiamo cercare anche quello. Ma è raro vederlo sul campo. Le persone che intendono usare gli smart glasses nei bar, nei pub, per strada e altrove di solito si preparano in anticipo.
- Quando l'app riconosce un dispositivo Bluetooth Low Energy (BLE) con una potenza del segnale sufficiente (vedi RSI sotto), invia un messaggio di avviso. Questo dovrebbe aiutarti ad agire di conseguenza.
- Inoltre, cerchiamo i nomi dei dispositivi trasmessi, ad esempio `rayban`, `ray-ban` o `HeyCyan`. `HeyCyan` è [un famoso SDK per smart glasses di varie marche](https://github.com/ebowwa/HeyCyanSmartGlassesSDK). Tra quei dispositivi *HeyCyan*, potresti trovare anche i Nilox Smart AI Glasses venduti da ALDI e Hofer (in Austria). Per rafforzare questo, cerchiamo anche il `primary_UUID`, un identificatore di servizio fissato al lato software di quegli occhiali (`7905FFF0-B5CE-4E99-A40F-4B1E122D00D0`). Sebbene questo potrebbe cambiare in futuro, è improbabile poiché renderebbe inutilizzabili i dispositivi più vecchi, quindi potremmo semplicemente aggiungere più UUID alla routine di scansione.
## Funzionalità
- L'app *Nearby Glasses* mostra una notifica quando degli smart glasses sono nelle vicinanze (ovvero, un dispositivo BLE con uno dei company ID menzionati sopra)
- **Nelle vicinanze** significa che l'RSSI (potenza del segnale) è inferiore o uguale a un valore dato: -75 dBm per impostazione predefinita. Questo valore predefinito corrisponde a una distanza media e a un segnale accettabile.
### Cos'è l'RSSI?
- Lasciami spiegare un po' quel valore RSSI:<br/>
RSSI è l'acronimo di Received Signal Strength Indication. Il valore è un'indicazione dell'intensità del campo di ricezione delle applicazioni di comunicazione wireless. [Wikipedia ha un articolo piuttosto buono](https://en.wikipedia.org/wiki/Received_signal_strength_indicator) a riguardo.
In breve, l'RSSI dipende principalmente da:<br/>
- Potenza di trasmissione del dispositivo
- Design dell'antenna
- Muri e ostacoli
- Corpi umani che assorbono il segnale
- Riflessione e interferenza
- Orientamento del dispositivo<br/>
Ma negli scenari BLE (Bluetooth Low Energy) tipici, la distanza approssimativa in base all'RSSI (spazio aperto) è: <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 quasi perdita del segnale<br/>
Al chiuso, le distanze sono spesso molto più brevi.<br/>
L'RSSI diminuisce approssimativamente secondo<br/>
`RSSI ≈ -10 * n * log10(distance) + constant`<br/>
- Pertanto, la soglia RSSI predefinita di -75 dBm corrisponde a circa 10-15 metri in spazio aperto e 3-10 metri al chiuso o in spazi affollati. Hai buone probabilità di individuare così la persona che indossa gli smart glasses.
- *Nearby Glasses* mostra un log di debug opzionale esportabile (come file txt) e dispone di una funzione copia&incolla. Questi sono per utenti avanzati (nerd) e per ulteriore debug.
- In *Impostazioni*, puoi specificare la lunghezza del log e il debug (mostrare tutti gli elementi di scansione o solo i frame ADV).
- Puoi anche inserire alcuni **company ID** come stringa di valori esadecimali, ad esempio `0x01AB,0x058E,0x0D53`. Questo sovrascrive il rilevamento integrato, così la tua notifica appare per i nuovi valori.
- Per una migliore persistenza, utilizza il *Foreground Service* di Android. Puoi disabilitarlo in *Impostazioni* se non ti serve.
- Il *Notification Cooldown* in *Impostazioni* specifica quanto tempo deve passare tra due avvisi. Il valore predefinito è 10000 ms, ovvero 10 s. Questo vale anche per il canarino, ad esempio 10s significa che rimarrà in allerta per 10s prima di calmarsi di nuovo.
- Ora è un po' più localizzata: <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">
- Inglese
- Tedesco
- Svizzero tedesco
- Francese
- Spagnolo
- Cinese
- Italiano
- Portoghese (Brasile)
- Russo
- Turco
- altri in arrivo, eventualmente ([supporta questo progetto contribuendo nella tua lingua!](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/3))
- Ora lo sfondo dell'icona dell'app non è più trasparente
- Ora cerchiamo anche gli UUID
- *Nearby Glasses* ora supporta la modalità scura (tramite le impostazioni di sistema)
- Il problema del layout edge-to-edge dovrebbe essere risolto dalla [v1.0.4](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) in poi.
- Nuova licenza AGPL 3.0
- Ho deciso di rinunciare al CLA. Dopo alcune discussioni con persone che ne sapevano più di me sui progetti collaborativi, ho capito che era un passo inutile.
- ora ha un'icona leggermente diversa per aderire più rigorosamente alla AGPL 3.0.
## iOS e Android
- Finalmente, dopo tre settimane, il port per iOS è disponibile. Dovrebbe funzionare sulla maggior parte di iPhone e iPad; anche su quelli più vecchi (fino a iOS 16). [Il codice sorgente e i file di progetto sono forniti](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/iOS) anch'essi. Il codice è brutto e non ortodosso. Molti approcci sono rapidi e sporchi (ad esempio riutilizzo i file json dalla localizzazione Android), ma finora funziona. *Nearby Glasses* è disponibile tramite l'[Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896). (Si chiama original per distinguerlo da quegli imitatori). Un .ipa è disponibile per il sideloading sotto [releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases).
L'app iOS non funziona in background, perché non ho trovato la possibilità di usare qualcosa di simile ai `ForegroundServices` per scansionare permanentemente i BTLE ADV a causa delle restrizioni di iOS. Quindi, c'è solo una *Canary Mode* disponibile in *Nearby Glasses* su iOS. Se conosci Swift e iOS meglio di me (cosa probabile), contribuisci per favore!
- Poiché questo repository contiene sia il codice dell'app Android che quello iOS, ho riorganizzato le cartelle. Quindi, ci sono [/iOS](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/iOS) e [/Android](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/main/Android).
## Utilizzo
- Vedi [Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) per scaricare l'APK o usa il Google Play Store. F-Droid e/o Accrescent potrebbero seguire.
<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. Installa l'app (da [Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) o da [Google Play](https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses), per ora) o dall'[Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896), e aprila
2. Premi il pulsante *Start Scanning*
3. Concedi i permessi per attivare il Bluetooth (se non già abilitato) e per accedere ai dispositivi nelle vicinanze. Alcune versioni di Android richiedono anche di concedere i permessi per accedere alla tua posizione (prima della versione 13, per lo più). *Nearby Glasses* non fa nulla con le tue informazioni sulla posizione. Se non mi credi, dai un'occhiata al [codice](https://github.com/yjeanrenaud/yj_nearbyglasses/tree/main/app)
4. se non vedi partire la scansione, potresti dover abilitare il *Foreground Service* sul tuo particolare telefono nel menu *Impostazioni* (vedi sotto)
5. Tutto pronto! Quando vengono rilevati smart glasses nelle vicinanze, apparirà una notifica. Lo fa finché non premi *Stop Scanning* o non termini definitivamente l'app
7. Nel menu (in alto a destra, l'ingranaggio), puoi fare alcune *Impostazioni*:
1. *Enable Foreground Service*: In questo modo, impedisci ad Android di mettere in pausa l'app, evitando così che ti avvisi. Consiglio di lasciarlo abilitato
2. *RSSI threshold*: Questo numero negativo specifica quanto lontano può essere un dispositivo per essere motivo di avviso da parte di *Nearby Glasses*. Tecnicamente, si riferisce a quanto è forte il segnale ricevuto. Più vicino a zero significa segnale migliore, quindi minore distanza tra il tuo telefono e gli smart glasses. Vedi [RSSI sopra per spiegazioni e indicazioni](#how). Consiglio di lasciarlo a -75
3. *Enable Notifications*: Non vorresti disabilitarlo
4. Canary Mode. Questa è la nuova impostazione predefinita. Con questa, non riceverai notifiche di sistema che ti avvisano di smart glasses nelle vicinanze, ma invece vedrai un canarino che indica che non ci sono smart glasses intorno. L'app iOS ha solo una canary mode a causa di vincoli tecnici. <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*: Qui specifichi quante notifiche sugli smart glasses trovati nelle vicinanze vuoi ricevere o per quanto tempo il canarino dovrebbe nascondersi. Ho scelto 10 secondi (10000 ms) come valore predefinito. In questo modo, non perderai la notifica e allo stesso tempo non sarai troppo infastidito né scaricherai troppo velocemente la batteria
6. *Enable Log Display*: Disabilitarlo potrebbe risparmiarti un po' di batteria. È disabilitato in canary mode.
7. *Debug*: È necessario per vedere più dei soli frame BLE corrispondenti nel riquadro di visualizzazione del log. È utile per vedere se le cose funzionano. È disabilitato in canary mode.
8. *Max log lines*: Quanto può diventare lungo il log. 200 sembra un buon equilibrio tra durata della batteria e usabilità del log (per nerd come me). È disabilitato in canary mode.
9. *BLE ADV only*: Questo esclude altri frame Bluetooth LE dal log per una migliore leggibilità. È disabilitato in canary mode.
10. *Override Company IDs*: Se vuoi, puoi far avvisare *Nearby Glasses* di altri dispositivi rispetto a quelli specificati sopra. Utile per il debug, almeno per me. Lascialo vuoto se non ti serve o non sai cosa farne
11. Ogni impostazione viene salvata ed è effettiva immediatamente. Per tornare indietro, usa il pulsante o il gesto indietro
8. La funzione di esportazione ti consente di condividere un file di testo del log dell'app. Per nerd come me
9. Puoi anche copiare&incollare il log toccando il riquadro di visualizzazione del log
## ToDos
- **Ora funziona sul campo!** Sono riuscito a far testare l'app ad alcune persone con smart glasses verificati intorno a loro. Un ringraziamento speciale a Lena!
- Vedi [Releases](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) per scaricare l'APK.
- Ho pubblicato [*Nearby Glasses* anche su Google Play](https://play.google.com/store/apps/details?id=ch.pocketpc.nearbyglasses). Tuttavia, pubblicherò sempre [le release qui su GitHub](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) e [altrove](https://yves.app/nearbyglasses/latest.apk), per coloro che evitano il Google Play.
---
- Aggiungere un'opzione per inserire i falsi positivi in una lista di ignorati. Forse nella notifica?
- Non sono affatto un esperto di BT o Android. Per quello che ho imparato, si potrebbe anche scavare più a fondo nella comunicazione degli smart glasses intercettando il traffico BLE. Così facendo, probabilmente non avremmo bisogno di affidarci al fatto che il dispositivo si comporti secondo le specifiche BT, ma potremmo anche usare euristiche sulle trasmissioni di traffico cifrato senza molti falsi positivi. Ma non esamino pacchetti di traffico BT da più di dieci anni. Sono contento di essermi ricordato dei frame ADV... Quindi se qualcuno potesse aiutare su questo, sarebbe molto apprezzato!
---
- Aggiungere **più ID di produttori** di smart glasses. Al momento, sono Meta, Oakley e Snap. Sarebbe utile anche una lista di smart glasses con telecamere disponibili. Ho aperto una [ISSUE per questo](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/56), così le persone possono **contribuire** inviando i loro log (che sono perfettamente sicuri, secondo me) quando incontrano altri smart glasses che registrano
- dal 24 marzo 2026, è disponibile anche la versione iOS.
- Il **problema di layout** con i **dispositivi Google Pixel** sembra risolto dalla versione 1.0.3. Se ancora non riesci a raggiungere il menu perché è in qualche modo mescolato con la barra di stato. Ci guarderò il prima possibile. Nel frattempo, prova a mettere lo schermo in modalità orizzontale e ruotalo *in senso orario (verso destra)*.
## Tech-Solutionism?
So che questo potrebbe sembrare un posto strano per farlo, ma ascoltami su questo. Sono consapevole che questa è una soluzione tecnica a un problema sociale, che è a sua volta amplificato dalla tecnologia.
Non voglio promuovere il techsolutionism né voglio che le persone si sentano falsamente al sicuro. È comunque un approccio imperfetto e probabilmente lo sarà sempre. Non è tutto positivo solo perché questa app ora esiste. Abbiamo bisogno di soluzioni migliori per frenare la tecnologia di sorveglianza e l'invasione della privacy.
## Compilare dal sorgente
Poiché *Nearby Glasses* è open source, puoi anche compilare l'app da solo dal codice sorgente. Questo assicura che non ci siano altre librerie incluse nell'APK e che tu ottenga ciò che vuoi.
Nota che questa app si basa su:
- Gradle Wrapper: 9.3.1
- Android Gradle Plugin: 8.13.2
- Kotlin: 1.9.22
- compileSdk: 36
- targetSdk: 36
- minSdk: 26
- Nessun product flavor
- Repository: solo google() e mavenCentral()
- Nessun plugin Google Services o Firebase
### Requisiti
- **JDK 17** (richiesto — il progetto ha come target Java 17)
- **Android SDK Platform 35** installato
- compileSdk = 35
- targetSdk = 35
- Git
### Compilazione dell'APK passo dopo passo```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
Shoutouts
- @[email protected] per avermi aiutato con gli avvisi
- @[email protected] per aver proposto l'idea di una modalità canary
- @pojntfx per avermi fatto notare i miei fraintendimenti sulla licenza
- Sarah-Jane B. per i consigli di UX design
- Lena Radau per la traduzione in spagnolo
- Marcel L. per il feedback e i test dell'app iOS
- Lena Hansen per i test sul campo
- Tutti gli altri che hanno già fornito feedback sull'app!
Licenza e crediti
Icona dell'app: L'icona è basata su Glasses SVG Vector di sensa, con licenza CC0 1.0 Universal.
Licenza: Questa app Nearby Glasses è distribuita con licenza AGPL-3.0.
Canary: I disegni canary sono realizzati da me e distribuiti con licenza CC BY-SA 4.0. Li ho forniti come file svg grezzi (creati in InkScape) e convertiti in xml, ovviamente, per le risorse dell'app



