explaingit

getnopeek/nopeek-android

15KotlinAudience · generalComplexity · 2/5LicenseSetup · easy

TLDR

NoPeek is an Android app that scans for nearby smart glasses and VR headsets such as Meta Ray-Ban and Apple Vision Pro using Bluetooth and alerts you when one is detected, with no internet connection required.

Mindmap

mindmap
  root((NoPeek))
    What it does
      Detects smart glasses
      Bluetooth scanning
      Local alerts only
    Detection methods
      Manufacturer company ID
      Device name check
      MAC address prefix
    Supported devices
      Meta Ray-Ban glasses
      Snap Spectacles
      Apple Vision Pro
      Meta Quest headsets
    Privacy
      No internet needed
      No data sent
      Local history only
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Get alerted when someone wearing Meta Ray-Ban smart glasses or Snap Spectacles enters within 10-15 meters outdoors.

USE CASE 2

Contribute new device support by adding a Bluetooth manufacturer company ID to NoPeek's detection database.

USE CASE 3

Run NoPeek in the background during meetings to receive push notifications if a recording-capable wearable appears nearby.

Tech stack

KotlinAndroidBluetooth LE

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose including commercial use as long as you keep the copyright notice.

In plain English

NoPeek is an Android app that scans for nearby smart glasses and VR headsets using Bluetooth, and alerts you when it finds one. The motivation is that modern smart glasses like Meta Ray-Ban frames look identical to ordinary glasses but can record video and audio. This app attempts to detect them before a recording begins. The detection works by listening for Bluetooth Low Energy signals that nearby devices broadcast. Every Bluetooth device includes a manufacturer identifier in that signal, and this identifier cannot be changed or randomized. NoPeek maintains a list of known identifiers for camera-capable wearables, including Meta Ray-Ban glasses, Oakley Meta glasses, Snap Spectacles, TCL RayNeo glasses, Meta Quest headsets, Apple Vision Pro, and several others. When the app sees one of those identifiers, it alerts you with a vibration and sound, and optionally a push notification if the app is running in the background. The app uses a three-layer detection approach. The primary method is the manufacturer company ID embedded in the Bluetooth advertisement, which the README describes as immutable. A secondary check looks at the device name, which is only visible when a device is pairing or just powered on. A fallback check uses the MAC address prefix, though modern devices randomize their MAC addresses so this is treated as low-confidence supporting evidence. Apple devices receive special handling: since the Apple company ID is shared across all Apple products, the app requires both the company ID and the device name Vision Pro before flagging an Apple device, to avoid your phone triggering its own alert. The detection range is roughly 10 to 15 meters outdoors and 3 to 10 meters indoors, based on the default signal strength threshold. That threshold is adjustable in the settings. The app requires no internet connection. No data is sent anywhere. Detection history is stored locally on your phone only. The source code is open and the project is licensed under MIT. The README notes that detection is not guaranteed since some devices may not broadcast Bluetooth signals at all times.

Copy-paste prompts

Prompt 1
I want to add detection support for a new smart glasses model to NoPeek. Show me where the manufacturer company IDs are defined in the Kotlin code and how to add a new entry.
Prompt 2
Help me write an Android Bluetooth LE scanner in Kotlin that reads manufacturer IDs from BLE advertisement packets, following the same approach NoPeek uses for its primary detection layer.
Prompt 3
I want to fork NoPeek and add a feature that logs each detection event with a timestamp to a local SQLite database. Walk me through where to hook into the existing detection callback.
Open on GitHub → Explain another repo

← getnopeek on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.