b04f197ec2936d35a2834460067aa8b92aa13380
Countdown Timer
A minimal Android application that demonstrates a simple countdown functionality with an audible alert.
Description
The Countdown Timer app is a lightweight utility that launches a modal dialog to count down from a user-selected duration (5s, 10s, 15s, or 30s). Once the timer reaches zero, the app plays a confirmation tone and vibration, then shows a dismiss button. This project serves as a basic example of using CountDownTimer, ToneGenerator, and custom Dialog implementation in Android.
Key Features
- Selectable Duration: A main screen with a duration picker (chip group) and a start button.
- Modal Countdown: A full-screen dialog with circular progress ring, stop/restart buttons, and a confirmation tone during the final 3 seconds.
- Haptic Feedback: Vibration on the last 3 seconds and on completion (configurable via shared preferences).
- Real-time Updates: UI updates every second to reflect the remaining time.
Getting Started
Prerequisites
- Android Studio (Ladybug or newer recommended)
- JDK 17
- An Android device or emulator running API level 24 or higher.
Building the App
To build the debug APK from the command line:
./gradlew assembleDebug
Running the App
Via Android Studio
- Open the project in Android Studio.
- Select your target device/emulator.
- Click the Run button or press
Shift + F10.
Via ADB
First, ensure your device or emulator is connected (adb devices). Then install the debug APK and launch the app:
# Install the debug APK
adb install -r app/build/outputs/apk/debug/app-debug.apk
# Launch the app
adb shell am start -n com.example.countdowntimer.debug/com.example.countdowntimer.MainActivity
Taking a Screenshot via ADB
To capture a screenshot of the app from your host machine:
# Take the screenshot on the device
adb shell screencap -p /sdcard/screenshot.png
# Pull it to your host machine
adb pull /sdcard/screenshot.png screenshots/
Project Structure
app/
├── src/
│ └── main/
│ ├── java/com/example/countdowntimer/
│ │ ├── MainActivity.kt # Main entry point; duration picker and timer trigger
│ │ ├── CountdownDialog.kt # Countdown logic, tone, and vibration
│ │ └── CountdownCanvasView.kt # Custom circular progress ring view
│ ├── res/layout/ # UI layouts
│ │ ├── activity_main.xml
│ │ └── dialog_countdown.xml
│ └── AndroidManifest.xml # Application manifest
└── build.gradle # App-level build configuration
Languages
Kotlin
93.9%
Dockerfile
6.1%