Skip to content

Repository files navigation

AutoCall

AutoCall is a robust Android application that empowers users to schedule phone calls to any contact or phone number at a specific date and time. It operates directly on the device, ensuring calls are placed automatically (or readied via the dialer) even if the application is closed.

Whether it's ensuring you don't miss an important daily standup, reminding an elderly family member to take their medication, or scheduling business outreach calls, AutoCall handles the heavy lifting by automating the initiation of the call.

Screenshots



Features

  • Precise Scheduling & Recurring Calls:

    • Schedule calls for an exact date and time.
    • Set repeating schedules (Daily, Weekly, Monthly, or None).
  • Automated Call Initiation (Auto-Dial):

    • Bypasses standard interaction lockscreens securely to perform direct auto-dial using Android's TelecomManager.
    • Intelligently falls back to the native dialer intent (ACTION_DIAL) or call intent (ACTION_CALL) if primary methods fail or permissions change.
  • Unified Contact Integration:

    • Pick a contact directly from your address book, or simply input the required phone number manually.
  • Local First & Privacy Respected:

    • Completely offline-only operations using local Room Database persistence (No external servers are used to store your contact or scheduling data).
  • History Tracking & Redialing:

    • Maintains a comprehensive history of the background job execution. Check if a call was COMPLETED, CANCELLED, or FAILED.
    • Instantly re-schedule a failed or missed call with a single click from the history tab.
  • System Resource Friendly:

    • Uses exact Android AlarmManager APIs effectively, ensuring background tasks are awoken precisely at the scheduled moment without continuously draining your battery.

Architecture & Tech Stack

This project is built using modern Android development practices, ensuring high maintainability and performance.

Core Technologies

  • Kotlin: Primary programming language.
  • Jetpack Compose: Modern, declarative UI framework with Material Design 3 guidelines.
  • Room Database: Local SQLite abstraction for persisting schedule settings and call logs.
  • AlarmManager / BroadcastReceivers: System-level scheduling of future operations to ensure calls execute correctly.
  • TelecomManager: Android API to seamlessly route calls directly.

Project Structure (Key Folders)

app/src/main/java/com/example/
 ├── background/    # Alarm Receivers, Notification Helpers, and the Call Execution Activity
 ├── data/          # Room Database logic, Entities (CallSchedule, CallLogEntry), and Repository
 ├── ui/            # Jetpack Compose UI Screens (Home, History, Create) & ViewModels
 ├── ui/theme/      # Custom Typography (Josefin Sans) and Color Theme declarations
 └── MainActivity   # Main Entry Point with Navigation Graph and Permission Requests

Getting Started

Permissions Explained

Due to the nature of the application acting as an automated dialer, the following permissions are required to operate gracefully:

  1. READ_CONTACTS: Optional but recommended. Allows users to select names and numbers directly from the device's address book.
  2. CALL_PHONE: Mandatory for enabling the direct "Auto-Call" feature. If omitted, the app will gracefully fallback to pre-filling the phone dialer instead of calling directly.
  3. POST_NOTIFICATIONS: Recommended (required on Android 13+) to alert the user regarding the background status of the scheduled auto-calls.
  4. SCHEDULE_EXACT_ALARM: Mandatory. Enables the app to trigger events efficiently at precise specified times. (The app will navigate users to system settings if this is disabled by the OS on Android 12+).

Disposing of Lock Screen Hurdles

AutoCall is configured with Keyguard and Window dismissal flags. If the phone's screen is locked when a scheduled call triggers, Android will securely open standard intents allowing the outgoing call UI to present over the lock screen.

Building & Exporting

This applet is configured to build standalone and doesn't rely on remote APIs. You can run this project locally on Android Studio:

  1. Ensure your version of Android Studio is reasonably up to date (Koala / Ladybug or later).
  2. Sync the Gradle files to generate the local Room persistence dependencies (ksp).
  3. Compile and launch onto either Emulator or Physical Device.
  4. If testing directly, grant "Call Phone" permissions for the complete automated dialer experience.

Theme & Styling

The application utilizes Material 3 Dynamic Color support for Android 12+, falling back to an elegant teal-driven theme for older configurations. The primary typeface utilized across the UI is Josefin Sans, giving the app a distinct, recognizable typographic identity.

Offline First

No API Keys or Cloud databases are connected to this application. All information is securely retained on your Android device inside the Application Sandbox space.

License

Provided as an open Android repository structure. Use at your own discretion.

About

CueCall is a lightweight Android app for scheduling phone calls ahead of time. Calls are automatically initiated at the exact time you choose, even in the background.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages