From 989b61384930b6d1b4c5704f54f163043e385085 Mon Sep 17 00:00:00 2001 From: Matt Hills Date: Fri, 13 Jun 2025 17:01:29 -0400 Subject: [PATCH] adding md --- README.md | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..d8a5a66 --- /dev/null +++ b/README.md @@ -0,0 +1,170 @@ +# Android Test App + +A demonstration Android application designed for testing device stress scenarios and app behavior under various conditions. This app provides three main testing features: battery draining, intentional bad behavior (crashes/ANRs), and download scheduling. + +## Features + +### 1. Battery Drainer +Tests battery consumption through intensive use of device hardware components: + +- **CPU Operations**: Mathematical calculations and intensive loops +- **Display**: Maximum brightness with screen always on +- **Flashlight**: Continuous or strobe patterns +- **GPS**: High-accuracy location updates +- **Bluetooth**: Continuous BLE scanning +- **WiFi**: Network scanning +- **Sensors**: Accelerometer, gyroscope, magnetometer continuous reading +- **Camera**: Preview without recording +- **Audio**: Silent playback to keep audio subsystem active +- **Vibration**: Continuous patterns + +**Presets Available:** +- Maximum Drain (all features enabled) +- CPU & GPU Focus +- Radio Focus (GPS, BLE, WiFi) +- Sensor Focus + +### 2. Bad Behavior Simulator +Intentionally triggers app crashes and ANRs for testing crash reporting and monitoring systems: + +**Crash Types:** +- Division by zero +- Null pointer exception +- Out of memory error +- Stack overflow +- Array index out of bounds + +**ANR Triggers:** +- UI thread blocking +- Broadcast receiver timeout +- Service timeout + +**Configuration Options:** +- Manual or automatic triggering +- Random intervals +- Auto-restart after crash + +### 3. Download Manager +Schedules and executes file downloads with configurable parameters: + +- Custom or preset download URLs +- File size options (1MB, 10MB, 100MB, custom) +- Scheduling: one-time, repeating, or specific times +- Network preferences (WiFi only, cellular only, any) +- Concurrent download support (1-10 simultaneous) +- Background download capability +- Download history tracking + +## Requirements + +- Android 12+ (API level 32) +- Target SDK: Android 15 (API level 35) + +## Permissions + +The app requires the following permissions (automatically requested on launch): +- Camera +- Location (Fine and Coarse) +- Bluetooth (Scan and Connect) +- Internet and Network State +- WiFi State +- Vibrate +- Wake Lock +- Foreground Service +- External Storage (for downloads) +- High Sampling Rate Sensors + +## Building the Project + +### Prerequisites +- Android Studio (latest stable version recommended) +- JDK 17 or higher +- Android SDK with API level 35 + +### Build Commands + +```bash +# Clean build artifacts +./gradlew clean + +# Build debug APK +./gradlew assembleDebug + +# Build release APK +./gradlew assembleRelease + +# Run unit tests +./gradlew test + +# Run instrumented tests (requires connected device/emulator) +./gradlew connectedAndroidTest + +# Check for lint issues +./gradlew lint + +# Install debug APK on connected device +./gradlew installDebug +``` + +## Project Structure + +``` +AndroidTestApp/ +├── app/ +│ ├── src/ +│ │ ├── main/ +│ │ │ ├── java/com/mattintech/androidtestapp/ +│ │ │ ├── res/ +│ │ │ └── AndroidManifest.xml +│ │ ├── test/ +│ │ └── androidTest/ +│ └── build.gradle.kts +├── gradle/ +│ ├── wrapper/ +│ └── libs.versions.toml +├── build.gradle.kts +└── settings.gradle.kts +``` + +## Architecture + +- **MainActivity**: Launch screen with navigation to three feature activities +- **BatteryDrainActivity**: Configure and run battery drain tests +- **BadBehaviorActivity**: Configure and trigger crashes/ANRs +- **DownloaderActivity**: Configure and manage downloads +- **Background Services**: Handle battery drain and download operations +- **Permission Manager**: Handles runtime permission requests + +## Usage + +1. Launch the app +2. Grant requested permissions +3. Select one of the three testing features from the main menu +4. Configure test parameters as needed +5. Start the test and monitor results + +## Development + +This project uses: +- Kotlin as the primary language +- Gradle with Kotlin DSL for build configuration +- AndroidX libraries +- Version catalog for dependency management + +## Warning + +⚠️ **This app is designed for testing purposes only!** It intentionally: +- Drains battery rapidly +- Causes app crashes and system stress +- Consumes network bandwidth +- Uses device resources intensively + +Use responsibly and only on test devices or when specifically needed for development/testing purposes. + +## License + +This is a test application for development purposes. + +## Contributing + +This is a demonstration project. Feel free to fork and modify for your testing needs. \ No newline at end of file