
tenta di rilevare occhiali intelligenti nelle vicinanze e avvisarti
tentativo di rilevare occhiali intelligenti nelle vicinanze e avvisarti.
L'app, chiamata Nearby Glasses, ha un unico scopo: Cercare occhiali intelligenti nelle vicinanze e avvisarti.
Questa app ti avvisa quando ci sono occhiali intelligenti nelle vicinanze. Utilizza gli identificatori aziendali nei dati Bluetooth inviati da questi. Pertanto, sono probabili falsi positivi (ad esempio da visori VR). Quindi, procedi con cautela quando ti avvicini a una persona che indossa occhiali. Potrebbero essere solo occhiali normali, nonostante l'avviso di questa app.
L'autore dell'app Yves Jeanrenaud non si assume alcuna responsabilità per questa app né per la sua funzionalità. Usala a tuo rischio. Per progettazione tecnica, la rilevazione di dispositivi Bluetooth LE a volte potrebbe semplicemente non funzionare come previsto. Non sono uno sviluppatore laureato. Tutto è scritto nel mio tempo libero e con conoscenze che ho imparato da solo.
I falsi positivi sono probabili. Ciò significa che l'app Nearby Glasses potrebbe avvisarti della presenza di occhiali intelligenti nelle vicinanze quando in realtà potrebbe esserci un visore VR dello stesso produttore o un altro prodotto di quella marca. Potrebbe anche non rilevare occhiali intelligenti nelle vicinanze. Ancora: non sono uno sviluppatore professionista.
Tuttavia, questa app è gratuita e open source, puoi rivedere il codice, modificarlo e riutilizzarlo (sotto la licenza).
L'app Nearby Glasses non memorizza alcun dato su di te né raccoglie informazioni su di te o sul tuo telefono. Non ci sono telemetria, nessun annuncio e nessun altro fastidio. Se installi l'app tramite Play Store, Google potrebbe sapere qualcosa su di te e raccogliere alcune statistiche. Ma l'app in sé non lo fa.
Se scegli di salvare (esportare) il file di log, è completamente a tua discrezione e responsabilità dove questi dati vadano a finire. I log vengono registrati solo localmente e non vengono condivisi automaticamente con nessuno. Contengono pochi dati sensibili; infatti, solo i codici ID del produttore dei dispositivi BLE incontrati.
Usala con estrema cautela! Come detto prima: Non c'è garanzia che gli occhiali intelligenti rilevati siano realmente nelle vicinanze. Potrebbe essere un altro dispositivo tecnicamente simile (a livello di annuncio BLE) agli occhiali intelligenti.
Per favore, non agire impulsivamente. Pensa prima di agire in base a qualsiasi messaggio (non solo da questa app).
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 Bluetooth SIG](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/HEAD/www.bluetooth.com/specifications/assigned-numbers/), possiamo utilizzare questi ID aziendali:
- `0x01AB` per `Meta Platforms, Inc. (ex Facebook)`
- `0x058E` per `Meta Platforms Technologies, LLC`
- `0x0D53` per `Luxottica Group S.p.A` (che produce i Meta Ray-Ban)
- `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 del loro ID, ad esempio visori VR. Pertanto, utilizzare questi codici ID aziendali per il processo di scansione dell'app può portare a falsi positivi. Ma se non puoi vedere qualcuno che indossa un Occulus Rift intorno a te e non ci sono edifici in cui potrebbero nascondersi, è probabile che si tratti invece di smart glasses.
- Durante l’accoppiamento, gli smart glasses di solito emettono il nome del prodotto, quindi possiamo scansionare anche quello. Ma è raro vederlo sul campo. Le persone con l'intenzione di usare smart glasses in bar, pub, per strada e altrove di solito si preparano in anticipo.
- Quando l'app riconosce un dispositivo Bluetooth Low Energy (BLE) con un'intensità del segnale sufficiente (vedi RSSI sotto), invierà un messaggio di avviso. Questo dovrebbe aiutarti a comportarti di conseguenza.
- Inoltre, eseguiamo la scansione dei 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 questi dispositivi *HeyCyan*, potresti trovare anche i Nilox Smart AI Glasses venduti da ALDI e Hofer (in Austria). Per rafforzare ciò, cerchiamo anche il `primary_UUID`, un identificatore di servizio fissato dal lato software di questi occhiali (`7905FFF0-B5CE-4E99-A40F-4B1E122D00D0`). Sebbene possa cambiare in futuro, è improbabile poiché renderebbe inutilizzabili i dispositivi più vecchi, quindi potremmo semplicemente aggiungere più UUID alla routine di scansione.
## Caratteristiche
- L'app *Nearby Glasses* mostra una notifica quando smart glasses sono nelle vicinanze (cioè, un dispositivo BLE di uno degli ID aziendali menzionati sopra)
- **Vicino** significa che l'RSSI (intensità del segnale) è minore o uguale a un dato valore: -75 dBm di default. Questo valore predefinito corrisponde a una distanza media e a un segnale discreto.
### Cos'è l'RSSI?
- Lascia che ti spieghi un po' questo valore RSSI:<br/>
RSSI è l'acronimo di Received Signal Strength Indication (Indicazione dell'intensità del segnale ricevuto). Il valore è un'indicazione dell'intensità del campo di ricezione per le applicazioni di comunicazione wireless. [Wikipedia ha un articolo abbastanza buono](https://en.wikipedia.org/wiki/Received_signal_strength_indicator) al riguardo.
In breve, l'RSSI dipende principalmente da:<br/>
- Potenza di trasmissione del dispositivo
- Progetto dell'antenna
- Muri e ostacoli
- Corpi umani che assorbono il segnale
- Riflessione e interferenza
- Orientamento del dispositivo<br/>
Ma negli scenari tipici BLE (Bluetooth Low Energy), la distanza approssimativa dall'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 vicino alla perdita di segnale<br/>
All'interno, le distanze sono spesso molto più brevi.<br/>
L'RSSI diminuisce approssimativamente secondo<br/>
`RSSI ≈ -10 * n * log10(distanza) + costante`<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. In questo modo hai buone possibilità di individuare la persona che indossa gli smart glasses.
- *Nearby Glasses* mostra un log di debug opzionale, esportabile (come file txt) e con funzione di copia e incolla. Queste sono per utenti avanzati (nerd) e per ulteriore debug.
- In *Impostazioni*, puoi specificare la lunghezza del log, il debug (visualizzare tutti gli elementi di scansione o solo i frame ADV).
- Puoi anche inserire alcuni **ID aziendali** come stringa di valori esadecimali, ad esempio `0x01AB,0x058E,0x0D53`. Questo sovrascrive il rilevamento integrato, quindi la notifica viene visualizzata per i nuovi valori.
- Per una maggiore persistenza, utilizza il *Servizio in primo piano* di Android. Puoi disabilitarlo in *Impostazioni* se non ti serve.
- Il *Cooldown notifica* in *Impostazioni* specifica quanto tempo deve passare tra due avvisi. Il default è 10000 ms, ovvero 10 s. Questo vale anche per il canarino, ad esempio 10 s significa che rimarrà in allerta per 10 s prima di calmarsi.
- Ora è un po' più localizzato: <img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/HEAD/img/canary_hide.svg" align="right" alt="Disegno di un canarino che si nasconde sotto un'ala" height="100" width="100">
- Inglese
- Tedesco
- Tedesco svizzero
- Francese
- Spagnolo
- Cinese (parziale)
- Italiano
- Portoghese (Brasile)
- Russo (parziale)
- 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 eseguiamo anche la scansione degli UUID
- *Nearby Glasses* ora supporta la modalità scura (tramite impostazioni di sistema)
- Il problema di layout edge-to-edge dovrebbe essere risolto dalla [v1.0.4](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) in poi.
- Nuovamente concesso in 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 ottenuto l'idea che fosse un passo non necessario.
## iOS e Android
- Finalmente, dopo tre settimane, la versione iOS è disponibile. Dovrebbe funzionare sulla maggior parte degli iPhone e iPad; anche quelli più vecchi (fino a iOS 16). Sono forniti anche [codice sorgente e file di progetto](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/HEAD/iOS/). Il codice è brutto e non ortodosso. Molti approcci sono rapidi e sporchi (ad esempio, riutilizzo i file json dalla localizzazione Android), ma per ora funziona. *Nearby Glasses* è disponibile tramite [Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896). (Si chiama original per distinguerlo dai cloni). Un file .ipa è disponibile per il sideloading nelle [release](https://github.com/yjeanrenaud/yj_nearbyglasses/releases).
L'app iOS non funziona in background, perché non ho trovato alcuna possibilità di utilizzare qualcosa di simile a `ForegroundServices` per scansionare permanentemente i BTLE ADV a causa delle restrizioni iOS. Quindi, in *Nearby Glasses* su iOS è disponibile solo una *Modalità Canarino*. Se conosci Swift e iOS meglio di me (cosa probabile), per favore contribuisci!
- Poiché questo repository contiene sia il codice dell'app Android che iOS, ho riorganizzato le cartelle. Quindi ci sono [/iOS](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/HEAD/iOS/) e [/Android](https://github.com/yjeanrenaud/yj_nearbyglasses/blob/HEAD/Android/).
## Utilizzo
- Vedi [Release](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) per scaricare l'APK o usa Google Play Store. Potrebbero seguire F-Droid e/o Accrescent.
<img width="135" height="300" align="right" alt="Screenshot Nearby Glasses: Impostazioni" 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="Disponibile su 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="Scarica sull'App Store" src="https://assets.kitploit.com/production/public/readmes/12083/a6fa504b048d52b4e9f5108021dce33af0d96b8b78c34095072971f4a34471fa.png" /></a>
1. Installa l'app (da [Release](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 da [Apple App Store](https://apps.apple.com/us/app/nearby-glasses-original/id6761056896), e aprilo
2. Premi il pulsante *Avvia scansione*
3. Concedi le autorizzazioni per attivare il Bluetooth (se non già abilitato) e per accedere ai dispositivi nelle vicinanze. Alcune versioni di Android richiedono anche di concedere l'autorizzazione per accedere alla tua posizione (principalmente prima della versione 13). *Nearby Glasses* non fa nulla con le informazioni sulla tua posizione. Se non mi credi, guarda il [codice](https://github.com/yjeanrenaud/yj_nearbyglasses/tree/main/app)
4. se non vedi iniziare la scansione, potresti dover abilitare *Servizio in primo piano* sul tuo particolare telefono nel menu *Impostazioni* (vedi sotto)
5. Tutto pronto! Quando vengono rilevati smart glasses nelle vicinanze, apparirà una notifica. Continua finché non premi *Interrompi scansione* o termina l'app definitivamente
7. Nel menu (in alto a destra, l'ingranaggio), puoi effettuare alcune *Impostazioni*:
1. *Abilita servizio in primo piano*: In questo modo impedisci ad Android di mettere in pausa l'app impedendole di avvisarti. Raccomando di lasciarlo abilitato
2. *Soglia RSSI*: Questo numero negativo specifica quanto lontano può essere un dispositivo per essere motivo di avviso da *Nearby Glasses*. Tecnicamente, si riferisce a quanto forte viene ricevuto il segnale. Più vicino a zero significa segnale migliore, quindi minore distanza tra il telefono e gli smart glasses. Vedi [RSSI sopra per spiegazioni e indicazioni](#how). Raccomando di lasciarlo a -75
3. *Abilita notifiche*: Non vorresti disabilitarlo
4. Modalità Canarino. Questa è la nuova impostazione predefinita. Con questa, non riceverai notifiche di sistema che ti avvisano della presenza di smart glasses nelle vicinanze, ma vedrai invece un canarino che indica nessuno smart glass intorno. L'app iOS ha solo la modalità canarino a causa di limitazioni tecniche. <img src="https://raw.githubusercontent.com/yjeanrenaud/yj_nearbyglasses/HEAD/img/canary.svg" alt="Disegno di un canarino" width="100" height="100" alignt="left">
5. *Cooldown notifica/canarino*: Qui specifichi quante notifiche sugli smart glasses trovati nelle vicinanze desideri ricevere o per quanto tempo il canarino dovrebbe nascondersi. Ho scelto 10 secondi (10000 ms) come valore predefinito. In questo modo, non ti perderai la notifica e allo stesso tempo non sarai infastidito eccessivamente o non consumerai troppo la batteria
6. *Abilita visualizzazione log*: Disabilitarlo potrebbe risparmiare un po' di batteria. È disabilitato in modalità canarino.
7. *Debug*: È necessario per vedere più dei soli frame BLE corrispondenti nella finestra di visualizzazione del log. È utile per vedere se le cose funzionano. È disabilitato in modalità canarino.
8. *Numero massimo di righe log*: Quanto lungo può diventare il log. 200 sembra un buon compromesso tra durata della batteria e usabilità del log (per nerd come me). È disabilitato in modalità canarino.
9. *Solo BLE ADV*: Esclude altri frame Bluetooth LE dal log per una migliore leggibilità. È disabilitato in modalità canarino.
10. *Sovrascrivi ID aziendali*: Se vuoi, puoi far sì che *Nearby Glasses* ti avvisi di altri dispositivi diversi da quelli specificati sopra. Utile per il debug, almeno per me. Lascia vuoto se non ti serve o se non sai cosa farci
11. Ogni impostazione viene salvata ed è immediatamente effettiva. Per tornare indietro, usa il pulsante indietro o il gesto
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 e incollare il log toccando la finestra di visualizzazione del log
## ToDo
- **Funziona ora 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 [Release](https://github.com/yjeanrenaud/yj_nearbyglasses/releases) per scaricare l'APK.
- Ho anche pubblicato [*Nearby Glasses* 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 chi evita Google Play.
---
- Aggiungere un'opzione per inserire i falsi positivi in una lista di ignore. Magari nella notifica?
- Non sono affatto un esperto di BT o Android. Per quanto ho imparato, si potrebbe anche approfondire la comunicazione degli smart glasses sniffando il traffico BLE. In questo modo, probabilmente non avremmo bisogno di fare affidamento sul comportamento del dispositivo secondo le specifiche BT, ma potremmo anche usare euristiche sulle trasmissioni di traffico crittografato con pochi falsi positivi. Ma non ho guardato i 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. Anche un elenco di smart glasses con fotocamera disponibili sarebbe utile. Ho aperto un [ISSUE per questo](https://github.com/yjeanrenaud/yj_nearbyglasses/issues/56), così le persone potrebbero **aiutare** inviando i loro log (che sono perfettamente sicuri, secondo me) quando incontrano altri smart glasses con registrazione
- a partire dal 24 marzo 2026, è disponibile anche la versione iOS.
- Il **problema di layout** con **dispositivi Google Pixel** sembra essere risolto a partire dalla versione 1.0.3. Se non riesci ancora a raggiungere il menu perché è mescolato con la barra di stato in qualche modo. Ci guarderò al più presto. Nel frattempo, prova a mettere lo schermo in modalità orizzontale e ruota *in senso orario (a destra)*.
## Tecno-soluzionismo?
Lo so, questo potrebbe essere 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 tecno-soluzionismo né voglio che le persone si sentano falsamente sicure. È ancora un approccio imperfetto e probabilmente lo sarà sempre. Non è tutto positivo solo perché questa app esiste ora. Abbiamo bisogno di soluzioni migliori per arginare la tecnologia di sorveglianza e l'intrusione nella privacy.
## Compila dal sorgente
Poiché *Nearby Glasses* è open source, puoi anche compilare l'app da solo dal codice sorgente. In questo modo ti assicuri che non ci siano altre librerie incluse nell'APK e ottieni ciò che desideri.
Nota bene: Questa app si basa su:
- Gradle Wrapper: 8.13
- Android Gradle Plugin: 8.13.2
- Kotlin: 1.9.22
- compileSdk: 35
- targetSdk: 35
- 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
### Creazione 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
Icona dell'app: L'icona è basata su Eyeglass icons created by Freepik - Flaticon
Licenza: Questa app Nearby Glasses è concessa in licenza AGPL-3.0.
Canarino: I disegni del canarino sono realizzati da me e concessi in licenza CC BY-SA 4.0. Li ho forniti come file SVG grezzi (fatti in InkScape) e convertiti in XML, ovviamente, per le risorse dell'app