A collaborative study app for Android — video/audio study rooms, screen sharing, group chat, and hands‑free presentation control using real‑time hand‑gesture recognition.
Studify is an Android app that turns a study group into a live, interactive room. Members sign in, chat in groups, jump into video / audio calls, share their screen, and — the standout feature — control a shared presentation with hand gestures so the presenter never has to reach for the screen while teaching.
It combines a modern camera + on‑device vision pipeline (CameraX + MediaPipe Hand Landmarker) with real‑time communication (Agora RTC) and a Firebase backend for auth and group messaging.
- Real‑time hand‑gesture control — a MediaPipe Hand Landmarker runs on the live CameraX feed; recognized gestures (e.g. swipe) drive actions like moving to the next/previous slide during a presentation.
- Presentation sharing — open and present slide decks (
.pptxparsed with Apache POI) and share them to the room. - Video & audio study rooms — group calls powered by Agora RTC with an in‑app participant grid.
- Screen sharing — share your screen to the group via a
MediaProjectionservice + Agora screen‑share extension. - Group chat & channels — text chat, groups/channels, and user management backed by Firebase Auth + Firestore.
- Custom camera overlay — a
CustomView/OverlayViewrenders detected hand landmarks on top of the camera preview.
| Area | Tech |
|---|---|
| Language | Kotlin + Java |
| UI | Android Views, Material 3, Navigation, ConstraintLayout, CameraX preview |
| Vision | MediaPipe Hand Landmarker (tasks-vision), TensorFlow Lite task‑vision, CameraX |
| Realtime | Agora RTC full SDK, Agora Video UIKit, Agora screen‑share extension |
| Backend | Firebase Authentication, Cloud Firestore |
| Docs | Apache POI + POI‑OOXML (PowerPoint parsing) |
| Networking | Fuel, Jackson |
| Build | Gradle (Kotlin DSL), minSdk 26, targetSdk 34 |
flowchart LR
subgraph Device["Android device"]
CAM[CameraX preview] --> MP[MediaPipe Hand Landmarker]
MP --> GEST[Gesture -> action]
GEST --> PRES[Presentation control - Apache POI slides]
end
subgraph Room["Live study room"]
RTC[Agora RTC - audio/video]
SS[Screen share - MediaProjection]
end
subgraph Cloud["Firebase"]
AUTH[Auth]
FS[(Firestore - chats & groups)]
end
PRES --> SS
Device --> RTC
Device --> AUTH
Device --> FS
app/src/main/java/com/handlandmarker/
├── Camera_Landmarks/ CameraX fragment (live camera)
├── HandLandmarkerHelper MediaPipe hand-landmark inference
├── OverlayView / Canvas Landmark rendering over the preview
├── AgoraPart/ Video, Audio, ScreenShare (Agora RTC)
├── MainPages/ Auth, chats, group chat, adapters (Firebase)
├── LocalDatabase/ Local SQLite helper
└── accets/ Data models (User, Message, Group)
# 1) Open the project in Android Studio (let Gradle sync)
# 2) Add your own google-services.json (Firebase) and Agora App ID
# 3) Run on a physical device with a camera (min SDK 26)Requires a Firebase project (Auth + Firestore) and an Agora account (App ID / token) for the realtime features.
Android · CameraX · MediaPipe · Agora · Firebase — a hands‑free, collaborative way to study together.


