Watch the demo video on Google Drive:
An intelligent Android meeting recorder application powered by Google Gemini AI that provides real-time transcription, intelligent summaries, and comprehensive meeting insights.
- Continuous Audio Recording: High-quality audio capture with automatic chunking
- Pause/Resume: Control recording with pause and resume functionality
- Silence Detection: Automatically detects if microphone is working
- Phone Call Integration: Automatically pauses recording during incoming calls
- Auto-Transcription: Automatically transcribes audio chunks using Google Gemini 2.0 Flash
- Progress Tracking: Real-time status updates for transcription progress
- Retry Logic: Automatic retries with exponential backoff on failures
- Separate Transcript View: Dedicated screen for viewing complete transcripts
- Intelligent Summarization: Generate comprehensive meeting summaries using Gemini AI
- Meeting Title: Auto-generate concise meeting titles
- Action Items: Extract and list action items from discussions
- Key Points: Identify and highlight important decisions and topics
- Separate Summary View: Dedicated screen for viewing summaries
- Progressive Generation: Watch summaries generate section by section
- Audio Sessions: Organize recordings by session
- Complete Audio: Access full audio recordings of entire sessions
- Chunk Viewing: View individual audio chunks
- Status Tracking: Track recording, transcription, and summary status
Before running the app, you MUST configure your Google Gemini API key!
The app requires a valid Google Gemini API key to function. Follow the setup instructions below to add your key.
- Android Studio Hedgehog (2023.1.1) or later
- JDK 11 or later
- Android SDK 24 (Android 7.0) or higher
- Google Gemini API key (Get one here)
-
Clone the repository
git clone <repository-url> cd TwinMind2
-
⚠️ Configure API Key - REQUIRED STEPDO THIS BEFORE BUILDING: You must add your Google Gemini API key to run the app!
Edit the file
app/src/main/java/com/example/twinmind2/di/NetworkModule.ktand replaceYOUR_GOOGLE_GEMINI_API_KEY_HEREwith your actual API key:fun getGeminiApiKey(context: android.content.Context): String { // Replace with your actual Google Gemini API key val hardcodedApiKey = "YOUR_GOOGLE_GEMINI_API_KEY_HERE" // ⬅️ CHANGE THIS! // Try to get from SharedPreferences first, fallback to hardcoded val prefs = context.getSharedPreferences("twinmind_prefs", android.content.Context.MODE_PRIVATE) val savedKey = prefs.getString("gemini_api_key", "")?.takeIf { it.isNotEmpty() } return savedKey ?: hardcodedApiKey }
Get your API key from: Google AI Studio
- Click "Create API Key"
- Copy the generated key
- Paste it in
NetworkModule.ktwhere indicated above
-
Build the project
./gradlew assembleDebug
-
Run the app
- Open the project in Android Studio
- Connect an Android device or start an emulator
- Click Run (Shift+F10)
- Language: Kotlin
- UI Framework: Jetpack Compose
- Architecture: MVVM with Hilt Dependency Injection
- Database: Room Database
- Network: Retrofit, OkHttp
- AI: Google Gemini 2.0 Flash
- Navigation: Jetpack Navigation Compose
- MainActivity: Main UI with recording controls and session navigation
- RecordingService: Foreground service handling audio recording and transcription
- RecordingViewModel: ViewModel managing recording state
- TranscriptionRepository: Handles Gemini API transcription calls
- SummaryRepository: Manages AI-powered summary generation
- RecordingRepository: Manages audio chunks and session data
- RecordingSession: Stores session metadata (start/end times, status, complete audio path)
- AudioChunk: Individual 30-second audio segments with overlap for continuity
- Transcript: Transcribed text for each chunk
- Summary: AI-generated meeting summaries with title, summary, action items, and key points
- Launch the app
- Tap Record to start recording
- Use Pause during breaks or Resume to continue
- Tap Stop when the meeting ends
- View transcripts and summaries automatically
- Tap on any session to expand it
- Click View Transcript button
- See real-time transcription progress
- Read the complete transcript
- Navigate to a session
- Click View Summary button
- If not generated, tap Generate Summary
- Watch as sections generate:
- Meeting Title
- Summary
- Action Items
- Key Points
The app automatically handles Google Gemini API rate limits:
- Automatic Retries: Up to 5 retries with exponential backoff
- Wait Times: 2s, 4s, 8s, 16s, 32s between retries
- User Feedback: Clear error messages if retries fail
- Retry Logic: Built-in retry mechanisms for failed API calls
- Progress Tracking: Real-time status updates during failures
- Offline Capability: Audio chunks saved locally for processing when online
If you encounter API key errors:
- Verify your API key is valid at Google AI Studio
- Check that API is enabled in Google Cloud Console
- Ensure billing is enabled for your Google Cloud project
- Update the key in
NetworkModule.kt
The app requires the following permissions:
RECORD_AUDIO: Capture audio from microphoneREAD_PHONE_STATE: Detect incoming calls to pause recordingFOREGROUND_SERVICE: Run background recording serviceFOREGROUND_SERVICE_MICROPHONE: Foreground microphone accessPOST_NOTIFICATIONS: Show recording status notificationsINTERNET: Connect to Gemini APIACCESS_NETWORK_STATE: Check network connectivity
Audio files are stored in the app's internal storage:
- Location:
/data/data/com.example.twinmind2/files/recordings/{sessionId}/ - Format: WAV files (16-bit PCM, 16kHz, mono)
- Chunk files:
chunk_XXXX.wav(30-second segments with 2-second overlap) - Complete audio:
complete_audio.wav(full session concatenated)
- Recording Duration: Limited by device storage
- API Limits: Subject to Google Gemini API quotas
- Storage: Audio files can consume significant storage space
- Network: Requires internet for transcription and summarization
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is licensed under the MIT License.
- Google Gemini AI: For transcription and summarization capabilities
- Android Architecture Components: For modern app architecture
- Jetpack Compose: For declarative UI framework
Current Version: 1.0