Skip to content

cvsuhail/CallKeep

Repository files navigation

Call Recorder - Flutter Auto Call Recorder App

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.

Features

Core Functionality

  • ✅ 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

App Features

  • 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

Recording Management

  • 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

Recording Details Screen

  • 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

Settings Screen

  • 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

Statistics Screen

  • 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

Local Storage Implementation

  • 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)

AdMob Integration

  • 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)

Technical Requirements

Dependencies

  • 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

Permissions (Android)

<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"/>

Project Structure

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

Setup Instructions

1. Prerequisites

  • Flutter SDK (>=3.0.0)
  • Android Studio / VS Code
  • Android device or emulator (API 21+)

2. Installation

# Clone the repository
git clone <repository-url>
cd CallRecorder

# Install dependencies
flutter pub get

# Generate Hive adapters
flutter packages pub run build_runner build

3. AdMob Configuration

Replace Test Ad Unit IDs

In 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';

Update AndroidManifest.xml

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"/>

4. Build and Run

# Run on Android device/emulator
flutter run

# Build APK
flutter build apk --release

# Build App Bundle
flutter build appbundle --release

Key Features Implementation

1. Auto Call Recording

  • Uses phone_state package to detect incoming calls
  • Automatically starts recording when call is answered
  • Stops recording when call ends
  • Saves recording with metadata

2. Local Storage

  • All data stored locally using Hive database
  • Audio files stored in app-specific directory
  • No cloud storage or backend required
  • Complete data privacy

3. AdMob Monetization

  • Banner ads on all screens
  • Interstitial ads after playback
  • Rewarded video ads for premium features
  • GDPR compliant consent dialog

4. Audio Management

  • Multiple audio formats (MP3, WAV, M4A)
  • Configurable audio quality
  • Audio player with playback controls
  • File sharing capabilities

5. User Interface

  • Material Design 3
  • Dark/Light theme support
  • Responsive design
  • Smooth animations

Privacy & Security

  • 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

Monetization Strategy

  1. Banner Ads: Non-intrusive bottom banners
  2. Interstitial Ads: After every 3-5 playbacks
  3. Rewarded Ads: Premium features unlock
  4. Ad-Free Experience: 24-hour ad-free via rewarded video

Troubleshooting

Common Issues

  1. Permission Denied

    • Ensure all required permissions are granted
    • Check Android manifest permissions
  2. Recording Not Working

    • Verify microphone permission
    • Check call detection service
  3. Ads Not Showing

    • Verify AdMob configuration
    • Check internet connection
    • Ensure test device is added
  4. Storage Issues

    • Check available storage space
    • Verify file permissions

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For support and questions:

  • Create an issue in the repository
  • Check the troubleshooting section
  • Review the documentation

Changelog

Version 1.0.0

  • 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published