How nuvioindia-bit/myra-ai-voice-assistant works
MYRA is an Android voice assistant whose main interaction runs from the user through MainActivity: microphone audio is sent to Gemini Live, while recognized text can be parsed into commands and executed by the ViewModel. Settings configure the API key, voice, personality, and prime contacts. Separate services support wake-word activation, call monitoring, accessibility control, and the floating overlay. The graph covers the documented product branches, but several service and command implementations were not sampled; those connections are included only where the excerpts, source index, or README support them.
Main entry points: MainActivity.kt Main Activity · GeminiLiveClient.kt Gemini Live Client · MainViewModel.kt Action ViewModel · SettingsActivity.kt Settings
Components 19
Voice Conversation
- Audio Engine
app/src/main/java/com/myra/assistant/ai/AudioEngine.kt - Gemini Live Client
app/src/main/java/com/myra/assistant/ai/GeminiLiveClient.kt
Commands and Actions
- Command Parser
app/src/main/java/com/myra/assistant/ai/CommandParser.kt - App Command
app/src/main/java/com/myra/assistant/model/AppCommand.kt - Action ViewModel
app/src/main/java/com/myra/assistant/viewmodel/MainViewModel.kt - Accessibility Service
app/src/main/java/com/myra/assistant/service/AccessibilityHelperService.kt
App Interface
- Main Activity
app/src/main/java/com/myra/assistant/ui/main/MainActivity.kt - Settings
app/src/main/java/com/myra/assistant/ui/settings/SettingsActivity.kt - Chat UI
app/src/main/java/com/myra/assistant/ui/main/UiComponents.kt - Orb Animation
app/src/main/java/com/myra/assistant/ui/main/OrbAnimationView.kt - Chat Messages
app/src/main/java/com/myra/assistant/model/ChatMessage.kt
Background Services
- Wake Word Service
Myra/app/src/main/java/com/myra/assistant/service/WakeWordService.kt - Call Monitor
app/src/main/java/com/myra/assistant/service/CallMonitorService.kt - Floating Overlay
app/src/main/java/com/myra/assistant/service/MyraOverlayService.kt - Power Button Receiver
app/src/main/java/com/myra/assistant/service/PowerButtonReceiver.kt - Boot Receiver
app/src/main/java/com/myra/assistant/service/BootReceiver.kt
Other components
- User
- Gemini Live API
- Phone and Apps
Connections 22
- User → Main Activity: interacts
README.md - Main Activity → Audio Engine: starts audio
app/src/main/java/com/myra/assistant/ui/main/MainActivity.kt - Audio Engine → Main Activity: sends chunks
app/src/main/java/com/myra/assistant/ui/main/MainActivity.kt - Main Activity → Gemini Live Client: connects
app/src/main/java/com/myra/assistant/ui/main/MainActivity.kt - Main Activity → Gemini Live Client: sends audio
app/src/main/java/com/myra/assistant/ui/main/MainActivity.kt - Gemini Live Client → Gemini Live API: WebSocket session
README.md - Main Activity → Command Parser: parses text
app/src/main/java/com/myra/assistant/ui/main/MainActivity.kt - Command Parser → App Command: creates command
app/src/main/java/com/myra/assistant/ai/CommandParser.kt - Main Activity → Action ViewModel: executes command
app/src/main/java/com/myra/assistant/ui/main/MainActivity.kt - Action ViewModel → Accessibility Service: uses controls
app/src/main/java/com/myra/assistant/viewmodel/MainViewModel.kt - Action ViewModel → Phone and Apps: performs actions
README.md - Settings → Accessibility Service: checks status
app/src/main/java/com/myra/assistant/ui/settings/SettingsActivity.kt - Settings → Gemini Live Client: sets preferences
- Main Activity → Settings: opens settings
app/src/main/java/com/myra/assistant/ui/main/MainActivity.kt - Main Activity → Chat UI: displays chat
- Chat UI → Chat Messages: renders messages
app/src/main/java/com/myra/assistant/ui/main/UiComponents.kt - Main Activity → Chat Messages: creates messages
app/src/main/java/com/myra/assistant/ui/main/MainActivity.kt - Wake Word Service → Main Activity: activates assistant
Myra/app/src/main/java/com/myra/assistant/service/WakeWordService.kt - Call Monitor → Main Activity: launches call UI
app/src/main/java/com/myra/assistant/service/CallMonitorService.kt - User → Power Button Receiver: double presses
README.md - Power Button Receiver → Floating Overlay: shows overlay
- User → Floating Overlay: uses floating orb
README.md