Skip to content

rajit2004/DeepSeekWidget

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐳 DeepSeekWidget β€” One-Tap AI Access

An open-source Android home screen widget that gives you instant access to DeepSeek β€” chat, voice input, and camera capture, without unlocking the app.

GitHub Release GitHub Sponsors Android Kotlin License


πŸ“± Download & Install

Download APK

βœ… v1.1 is live! A debug-signed app-debug.apk (~1.4 MB) is available on the Releases page.

Installation steps:

  1. Download app-debug.apk from the Releases page
  2. On your Android device, go to Settings β†’ Security and enable "Install from unknown sources"
  3. Open the downloaded APK and install it
  4. 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.


πŸš€ Features

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

🧠 How It Works

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 AppWidgetProvider using RemoteViews
  • PendingIntents are attached to the chat, mic, and camera buttons
  • A transparent trampoline Activity handles 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 single Constants.kt to avoid duplication

πŸ› οΈ Tech Stack

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)

πŸ“‚ Project Structure

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

⚑ Build Locally

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 assembleRelease

To generate a production-signed release APK in Android Studio:

  1. Build β†’ Generate Signed Bundle / APK β†’ APK
  2. Create a new keystore (or use an existing one)
  3. Fill in the alias, passwords, and certificate details
  4. Select the release build variant and finish

πŸ“‹ Changelog

v1.1 β€” Bug Fix & Stability Release (Latest)

  • βœ… Runtime CAMERA and RECORD_AUDIO permissions 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 startActivityForResult to ActivityResultContracts
  • βœ… 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_PACKAGE constant deduplicated into Constants.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

v1.0 β€” First Release (Pre-release)

  • βœ… 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

🀝 Contributing

Contributions, issues, and feature requests are welcome! To get started:

  1. Fork the repository
  2. Create a feature branch β€” git checkout -b feature/your-idea
  3. Commit your changes β€” git commit -m "Add: your feature"
  4. Push to your branch β€” git push origin feature/your-idea
  5. Open a Pull Request against main

Please open an issue first for major changes so we can discuss the approach before you build it.


πŸ’– Support This Project

Everything here is free and open source. If DeepSeekWidget saved you time or inspired your own project:

Sponsor


πŸ‘¨β€πŸ’» Author

Ranesh Rajit β€” B.Tech Computer Science Student, India

GitHub LinkedIn


πŸ“„ License

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.

About

🐳 Android home screen widget for one-tap DeepSeek access β€” voice input, camera capture & Material You design. No app unlock needed.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors

Languages