An open-source Android home screen widget that gives you instant access to DeepSeek β chat, voice input, and camera capture, without unlocking the app.
β v1.1 is live! A debug-signed
app-debug.apk(~1.4 MB) is available on the Releases page.
Installation steps:
- Download
app-debug.apkfrom the Releases page - On your Android device, go to Settings β Security and enable "Install from unknown sources"
- Open the downloaded APK and install it
- Long-press your home screen β Widgets β DeepSeek Widget
β οΈ This is a debug-signed APK intended for sideloading and local testing. Full source code is available in this repository for building a production-signed release yourself.
| Feature | Description |
|---|---|
| π One-tap chat | Opens the DeepSeek app or falls back to DeepSeek web if the app isn't installed |
| π€ Voice input | Tap the mic, speak your query β DeepSeek opens with your transcribed text |
| π· Camera capture | Snap a photo directly from the widget and send it to DeepSeek |
| π¨ Material You design | Adapts to your system light/dark theme with DeepSeek's teal accent |
| π¦ Lightweight | Zero background services, minimal permissions, ~1.4 MB APK |
| ποΈ Open source | MIT licensed β free to fork, modify, and build upon |
User taps widget on home screen
β
PendingIntent fires
β
DeepSeek app launches ββββ (fallback) βββββ DeepSeek web chat opens
Mic button β runtime RECORD_AUDIO permission β voice recognition β text sent to DeepSeek
Camera button β runtime CAMERA permission β photo captured via FileProvider β sent to DeepSeek
Widget Logic:
- The widget is a standard
AppWidgetProviderusingRemoteViews PendingIntents are attached to the chat, mic, and camera buttons- A transparent trampoline
Activityhandles voice recognition and camera capture, then redirects to DeepSeek - Runtime permissions (microphone, camera) are requested correctly on Android 6+
- Shared constants (e.g.
DEEPSEEK_PACKAGE) live in a singleConstants.ktto avoid duplication
| Layer | Technology |
|---|---|
| Language | Kotlin 1.9+ |
| UI | XML (RemoteViews) |
| Build System | Gradle with Kotlin DSL (KTS) |
| AGP | 8.7.3 |
| Minimum SDK | Android 8.0 (API 26) |
| Target / Compile SDK | Android 15 (API 35) |
| Shrinking | R8 enabled (APK ~1.4 MB) |
DeepSeekWidget/
βββ app/
β βββ build.gradle.kts
β βββ src/main/
β βββ java/com/yourdomain/deepseekwidget/
β β βββ Constants.kt β Shared constants (package names, etc.)
β β βββ DeepSeekWidgetProvider.kt β AppWidgetProvider: widget logic & PendingIntents
β β βββ VoiceInputActivity.kt β Trampoline: voice recognition & camera capture
β βββ res/
β β βββ drawable/
β β β βββ ic_deepseek_whale.xml
β β β βββ ic_mic.xml
β β β βββ widget_background.xml
β β βββ layout/
β β β βββ deepseek_widget.xml
β β βββ values/
β β β βββ colors.xml
β β β βββ strings.xml
β β β βββ themes.xml
β β βββ xml/
β β βββ deepseek_widget_info.xml
β βββ AndroidManifest.xml
βββ gradle/
β βββ wrapper/
β βββ gradle-wrapper.jar
β βββ gradle-wrapper.properties
βββ build.gradle.kts β Project-level build file
βββ settings.gradle.kts
βββ gradle.properties
βββ gradlew
βββ gradlew.bat
βββ .gitignore
βββ LICENSE
βββ README.md
Prerequisites: Android Studio (Hedgehog or later) or a JDK 17+ environment with the Android SDK.
# 1. Clone the repository
git clone https://github.com/rajit2004/DeepSeekWidget.git
cd DeepSeekWidget
# 2. Open in Android Studio and let Gradle sync automatically
# β OR β build from the command line:
# Debug APK
./gradlew assembleDebug
# Output: app/build/outputs/apk/debug/app-debug.apk
# Release APK (requires a keystore)
./gradlew assembleReleaseTo generate a production-signed release APK in Android Studio:
- Build β Generate Signed Bundle / APK β APK
- Create a new keystore (or use an existing one)
- Fill in the alias, passwords, and certificate details
- Select the
releasebuild variant and finish
- β
Runtime
CAMERAandRECORD_AUDIOpermissions now requested correctly on Android 6+ - β Camera screen no longer freezes if image file creation fails
- β Photo path now persists across process death during camera capture
- β Double padding on widget layout removed β icons no longer cramped
- β
Migrated from deprecated
startActivityForResulttoActivityResultContracts - β URI permission now granted only to the resolved camera app (not all apps)
- β Temp image file deleted after sharing to avoid storage bloat
- β
Specific exception handling replacing generic
catch (Exception) - β User-facing toasts added for all failure states
- β
DEEPSEEK_PACKAGEconstant deduplicated intoConstants.kt - β
Dead code (
isPackageInstalled) removed - β AGP bumped to 8.7.3, compileSdk/targetSdk bumped to 35
- β R8 shrinking enabled β APK reduced from ~4.5 MB to ~1.4 MB
- β One-tap home screen widget to open DeepSeek (app or web fallback)
- β Voice input button with trampoline activity for voice recognition
- β Material You design with DeepSeek teal accent
- β Supports Android 8.0 (API 26) and above
Contributions, issues, and feature requests are welcome! To get started:
- Fork the repository
- Create a feature branch β
git checkout -b feature/your-idea - Commit your changes β
git commit -m "Add: your feature" - Push to your branch β
git push origin feature/your-idea - Open a Pull Request against
main
Please open an issue first for major changes so we can discuss the approach before you build it.
Everything here is free and open source. If DeepSeekWidget saved you time or inspired your own project:
Ranesh Rajit β B.Tech Computer Science Student, India
This project is licensed under the MIT License β see the LICENSE file for full details.
Free to use, modify, and distribute with attribution.
This is an independent open-source project and is not officially affiliated with or endorsed by DeepSeek.