Skip to content

beyondlevi/lume

Repository files navigation

Lume

Glanceable reading on Rokid AR glasses.
Read PDFs, TXT files and shared text one word at a time — streamed live from your phone over Bluetooth.

License: MIT Platform: Android Kotlin 2.1 Glasses: Rokid

Lume RSVP reading demo on Rokid glasses

Real-world use, captured through the lens — full clip: docs/media/demo.mp4

https://github.com/beyondlevi/lume/raw/main/docs/media/demo.mp4


What it is

Lume turns Rokid AR glasses into a wearable speed reader. It uses RSVP (Rapid Serial Visual Presentation): the text flows one word at a time at a fixed point in your field of view, with the focal letter (ORP) highlighted, so your eyes never travel across a line. Start at a comfortable 350 wpm and push up to 700.

Library Reading Paused (context)
Library on the glasses RSVP word display Paused with sentence context

It is a paired two-app system:

  • Phone app (host) — your reading library. Add PDF and TXT files, paste text, or share text/PDFs from any Android app straight into Lume through the native share sheet. The phone extracts the text on-device and streams word windows to the glasses.
  • Glasses app (client) — a green-phosphor HUD. Pick a document, tap to read; tap to pause, swipe to change speed while playing or to jump back/forward a sentence while paused. Reading progress is saved automatically and synced back to the phone.
Rokid Glasses (thin HUD client)              Android Phone (host / brain)
  library / RSVP reader        <──CXR/BLE/SPP──>  document library (PDF/TXT/share)
  word-window buffering  ── UpdateProgress ─────►  text extraction + progress store

Features

Reader (glasses)

  • RSVP display — one word at a time at a fixed focal point, with the optimal-recognition-point letter highlighted so the eye locks once and never scans.
  • Adaptive pacing — long words, clause/sentence endings and paragraph breaks hold proportionally longer, keeping high speeds comfortable.
  • Speed dial — 150–700 wpm in 25 wpm steps, adjusted mid-read with a swipe; the footer shows live progress and current speed.
  • Pause with context — pausing shows the surrounding sentence with the current word highlighted, so you re-anchor instantly before resuming.
  • Sentence stepping — while paused, swipe to rewind or skip to sentence boundaries.
  • Progress sync — the phone persists the exact word you stopped at, per document; reopening (even after reconnecting) resumes in place.
  • Word-window streaming — the glasses buffer ~400 words and request ahead over Bluetooth, so reading never stalls on the radio link.

Library (phone)

  • PDF and TXT import — text extracted fully on-device (PdfBox-Android); nothing leaves your phone.
  • Paste text — quick capture with an optional title.
  • Native Android share target — share text or PDF/TXT files (single or multiple) from any app straight into the library.
  • Document cards — word count, source tag (PDF / TXT / SHARED) and a live reading-progress bar; long-press to remove.
  • Reading-speed setting — a default wpm selector on the phone, pushed live to connected glasses (protocol-synced); the glasses persist the last speed used.
  • Glasses link status — live connection state on the home screen.

Platform

  • Hybrid Bluetooth transport — races Rokid CXR-L, BLE GATT and Bluetooth Classic SPP and keeps whichever completes a versioned handshake first, with automatic reconnection and a low-power hibernate mode.
  • See-through-display HUD discipline — black-as-transparent rendering, focus-highlight suppression and keep-screen-on handling tuned for the Rokid display.
  • Bilingual UI — English / Português, chosen on the phone and pushed to the glasses.

Backlog

Planned and candidate improvements, roughly in priority order:

  • EPUB import — the most requested e-book format; chapter-aware.
  • Web article import — share a URL, get a clean readable extraction.
  • Chapter / heading navigation — jump between sections on long books instead of sentence-stepping only.
  • Bookmarks & multiple positions — save spots beyond the single resume point.
  • Reading stats — time read, average wpm, streaks, per-document history on the phone.
  • Smart pacing profiles — per-language tuning and an optional "accelerate over time" ramp.
  • OCR for scanned PDFs — image-only PDFs currently extract no text.
  • Line/chunk mode — an alternative two-or-three-word display for lower speeds and skimming.
  • Phone reading mode — read the same library on the phone when the glasses are off.
  • Auto-advance documents — queue several shares and read them back-to-back.
  • Glasses-side quick settings — font size and brightness without leaving the reader.

Suggestions and PRs are welcome — open an issue to discuss.

Project structure

android-phone/       Phone host: library + text extraction + transport server
android-glasses/     Glasses client: HUD + RSVP reader + transport client
shared-contracts/    Shared Bluetooth wire protocol + document contracts
docs/                Architecture, usage and media

Each Android app is an independent Gradle build; both compile shared-contracts directly via sourceSets.

Build

There is no gradlew (Unix) checked in — only gradlew.bat. On macOS/Linux run the pinned wrapper via its jar with JDK 17+ (21 works):

export JAVA_HOME="$(/usr/libexec/java_home -v 21)"
export ANDROID_HOME="$HOME/Library/Android/sdk"

# Phone APK
cd android-phone && "$JAVA_HOME/bin/java" -cp gradle/wrapper/gradle-wrapper.jar \
  org.gradle.wrapper.GradleWrapperMain assembleDebug --console=plain

# Glasses APK
cd ../android-glasses && "$JAVA_HOME/bin/java" -cp gradle/wrapper/gradle-wrapper.jar \
  org.gradle.wrapper.GradleWrapperMain assembleDebug --console=plain

Outputs: android-phone/app/build/outputs/apk/debug/lume-phone-debug.apk and android-glasses/app/build/outputs/apk/debug/lume-glasses-debug.apk.

The glasses build bundles the Rokid CXR native libs — Unable to strip … libcxr-bridge-jni.so is a benign warning, not an error.

Install / sideload

  • Phone: adb install -r android-phone/app/build/outputs/apk/debug/lume-phone-debug.apk
  • Glasses: push the APK to phone storage and sideload it via the Hi Rokid app (there is no direct developer ADB to the glasses):
    adb push android-glasses/app/build/outputs/apk/debug/lume-glasses-debug.apk /sdcard/Download/

First run

  1. Install the phone app and sideload the glasses app.
  2. Pair the phone and glasses over Bluetooth at the OS level.
  3. Open Lume on the phone, grant Bluetooth/notification permissions, and add something to read (file, pasted text, or share from another app).
  4. Open Lume on the glasses. Pick a document and tap to start reading.

Reader controls (glasses touchpad)

Gesture Playing Paused
Tap Pause Resume
Swipe up/down Speed +/- Sentence back/forward
Double tap Back to library Back to library

Release signing

Release builds read signing from env vars or Gradle properties: ANDROID_KEYSTORE_PATH, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS, ANDROID_KEY_PASSWORD, and optional LUME_VERSION_NAME / LUME_VERSION_CODE. assembleRelease falls back to the debug keystore when signing values are absent; partial configuration fails the build.

Acknowledgments

Lume was inspired by Flow, a glanceable-reading experiment for the Meta Ray-Ban Display shared by its author on Reddit: "I made Flow — exploring glanceable reading" (live demo). Seeing RSVP reading work so naturally on smart glasses was the spark for building the same experience — with a phone-side library, file import and Android share integration — for the Rokid platform. Thank you for putting the idea out there.

License

Released under the MIT License.

About

Glanceable RSVP reading on Rokid AR glasses — phone library (PDF/TXT/share) + glasses speed reader

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages