A complete Flutter auto call recorder app with AdMob monetization and local storage. Automatically records incoming calls with comprehensive features and no backend/cloud services required.
- ✅ Automatically detect and record all incoming phone calls
- ✅ Start recording when call is answered, stop when call ends
- ✅ Save recordings with metadata (contact name, phone number, date, time, duration)
- ✅ Show real-time recording status notification during calls
- ✅ All recordings and data stored in local device storage only
- ✅ Home Screen: List of all recorded calls in reverse chronological order
- ✅ Search & Filter: Search functionality and filter options (All calls, specific contacts, date range)
- ✅ Pull-to-refresh: Update list with pull-to-refresh
- ✅ Storage Usage: Indicator showing storage usage
- ✅ Banner Ads: Bottom banner ads on all screens
- ✅ Audio Player: Play recordings with audio player (play/pause, seek, speed control)
- ✅ Delete Recordings: Delete individual recordings with confirmation dialog
- ✅ Share Recordings: Share recordings via WhatsApp, email, Bluetooth, etc.
- ✅ Rename Recordings: Rename recordings
- ✅ Add Notes: Add notes to recordings
- ✅ Bulk Delete: Bulk delete option
- ✅ Sort Options: Sort by Date, Duration, Contact name, File size
- ✅ Interstitial Ads: After every 3-5 recording playbacks
- ✅ Rewarded Ads: Option to unlock premium features temporarily
- ✅ Full Audio Player: Recording player with waveform visualization
- ✅ Metadata Display: Contact, number, date, time, duration, file size
- ✅ Actions: Share, delete, rename, add notes
- ✅ Banner Ad: Bottom banner ad
- ✅ Auto Recording: Enable/disable auto-recording toggle
- ✅ Audio Quality: Settings (low/medium/high - 64kbps/128kbps/256kbps)
- ✅ Storage Location: Internal storage/SD card selection
- ✅ Auto Delete: Old recordings (never/7/30/60/90 days)
- ✅ File Format: Recording file format selection (MP3/WAV/M4A)
- ✅ Low Storage Alert: Alert when storage < 100MB
- ✅ Theme: Dark/Light theme toggle
- ✅ Ad-Free: Remove ads option via rewarded video (24 hours ad-free)
- ✅ Privacy Policy: Link to privacy policy
- ✅ About: App version and information
- ✅ Total Recordings: Count of all recordings
- ✅ Total Storage: Storage used (MB/GB)
- ✅ Total Duration: Total recording duration
- ✅ Average Duration: Average call duration
- ✅ Most Recorded: Most recorded contacts (top 5)
- ✅ Monthly/Weekly: Recordings this month/week
- ✅ Banner Ad: Bottom banner ad
- ✅ SQLite/Hive: Metadata storage with Hive
- ✅ File System: Local file system for audio files
- ✅ Storage Management: Calculate total storage used
- ✅ Auto Cleanup: Feature for old recordings
- ✅ Export/Import: Manual backup option (export all as ZIP)
- ✅ Banner Ads: Bottom of all screens
- ✅ Interstitial Ads: After every 3-5 recording playbacks
- ✅ Rewarded Video Ads: Watch to unlock premium features
- ✅ GDPR Compliance: Consent dialog for EU users
- ✅ Ad Frequency: Smart frequency (not annoying)
- State Management: Provider
- Local Database: Hive
- Audio Recording: record package
- Call Detection: phone_state package
- Permission Handling: permission_handler
- File Management: path_provider, file_picker
- Audio Playback: just_audio
- AdMob: google_mobile_ads
- Sharing: share_plus
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>lib/
├── main.dart
├── models/
│ ├── recording_model.dart
│ ├── recording_model.g.dart
│ ├── settings_model.dart
│ └── settings_model.g.dart
├── services/
│ ├── call_detection_service.dart
│ ├── recording_service.dart
│ ├── database_service.dart
│ ├── storage_service.dart
│ ├── permission_service.dart
│ └── ad_manager_service.dart
├── screens/
│ ├── home_screen.dart
│ ├── recording_details_screen.dart
│ ├── statistics_screen.dart
│ └── settings_screen.dart
├── widgets/
│ ├── recording_list_item.dart
│ ├── audio_player_widget.dart
│ ├── banner_ad_widget.dart
│ ├── empty_state_widget.dart
│ └── gdpr_consent_dialog.dart
├── utils/
│ ├── constants.dart
│ ├── helpers.dart
│ └── theme.dart
└── providers/
├── recording_provider.dart
└── settings_provider.dart
- Flutter SDK (>=3.0.0)
- Android Studio / VS Code
- Android device or emulator (API 21+)
# Clone the repository
git clone <repository-url>
cd CallRecorder
# Install dependencies
flutter pub get
# Generate Hive adapters
flutter packages pub run build_runner buildIn lib/utils/constants.dart, replace the test ad unit IDs with your real AdMob ad unit IDs:
// Replace these with your real AdMob ad unit IDs
static const String bannerAdUnitId = 'ca-app-pub-XXXXXXXXXX/XXXXXXXXXX';
static const String interstitialAdUnitId = 'ca-app-pub-XXXXXXXXXX/XXXXXXXXXX';
static const String rewardedAdUnitId = 'ca-app-pub-XXXXXXXXXX/XXXXXXXXXX';
static const String nativeAdUnitId = 'ca-app-pub-XXXXXXXXXX/XXXXXXXXXX';In android/app/src/main/AndroidManifest.xml, replace the test app ID:
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-XXXXXXXXXX~XXXXXXXXXX"/># Run on Android device/emulator
flutter run
# Build APK
flutter build apk --release
# Build App Bundle
flutter build appbundle --release- Uses
phone_statepackage to detect incoming calls - Automatically starts recording when call is answered
- Stops recording when call ends
- Saves recording with metadata
- All data stored locally using Hive database
- Audio files stored in app-specific directory
- No cloud storage or backend required
- Complete data privacy
- Banner ads on all screens
- Interstitial ads after playback
- Rewarded video ads for premium features
- GDPR compliant consent dialog
- Multiple audio formats (MP3, WAV, M4A)
- Configurable audio quality
- Audio player with playback controls
- File sharing capabilities
- Material Design 3
- Dark/Light theme support
- Responsive design
- Smooth animations
- Local Storage Only: All data stored on device
- No Cloud Services: No data sent to external servers
- User Control: Complete control over recordings
- GDPR Compliant: Privacy consent dialog
- Secure Storage: Encrypted local storage
- Banner Ads: Non-intrusive bottom banners
- Interstitial Ads: After every 3-5 playbacks
- Rewarded Ads: Premium features unlock
- Ad-Free Experience: 24-hour ad-free via rewarded video
-
Permission Denied
- Ensure all required permissions are granted
- Check Android manifest permissions
-
Recording Not Working
- Verify microphone permission
- Check call detection service
-
Ads Not Showing
- Verify AdMob configuration
- Check internet connection
- Ensure test device is added
-
Storage Issues
- Check available storage space
- Verify file permissions
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Check the troubleshooting section
- Review the documentation
- Initial release
- Auto call recording
- AdMob integration
- Local storage
- Complete UI implementation
- GDPR compliance
- Export/import functionality
Note: This app is designed for Android only. iOS call recording is not supported due to platform restrictions.