ale 21467bf243 README.md
Signed-off-by: ale <ale@manalejandro.com>
2026-03-01 14:18:34 +01:00
2026-03-01 14:08:01 +01:00
2026-03-01 14:08:01 +01:00
2026-03-01 14:08:01 +01:00
2026-03-01 14:08:01 +01:00
2026-03-01 14:08:01 +01:00
2026-03-01 14:08:01 +01:00
2026-03-01 14:08:01 +01:00
2026-03-01 14:08:01 +01:00
2026-03-01 14:08:01 +01:00
2026-03-01 14:18:34 +01:00
2026-03-01 14:08:01 +01:00
2026-03-01 14:18:34 +01:00

URLFinder

URLFinder logo

A free, open-source Android app that detects URLs and QR codes in real time using your device camera.

Latest release MIT License Android Min SDK 24


Features

  • 📷 Real-time camera scanning — live camera preview powered by CameraX
  • 🔤 Text URL detection — recognizes URLs in any visible text using ML Kit Text Recognition
  • 📲 QR code scanning — decodes QR codes that contain URLs with ML Kit Barcode Scanning
  • 🔗 Clickable URLs — tap any detected URL to open it in your browser (with a safety warning)
  • Flash / torch toggle — turn on the camera torch for scanning in low-light conditions
  • 🗂️ Local history — all detected URLs are saved locally and can be browsed and cleared from Settings
  • ⚠️ Safety warning dialog — a confirmation dialog reminds you that URLs may be dangerous before opening
  • 🆓 Free & open source — MIT licensed, no ads, no tracking, no analytics

Screenshots

Camera screen


Requirements

Android version 7.0 (API 24) or higher
Permissions CAMERA, INTERNET
Hardware Rear camera with autofocus recommended

Installation

Download APK

Download the latest release APK from the Releases page and install it on your device.

You may need to enable Install from unknown sources in your device settings.

Build from source

  1. Clone the repository

    git clone https://github.com/manalejandro/URLFinder.git
    cd URLFinder
    
  2. Open in Android Studio

    • File → Open → select the URLFinder folder
    • Let Gradle sync finish
  3. Run or build

    ./gradlew assembleDebug
    # APK → app/build/outputs/apk/debug/app-debug.apk
    

Architecture

MainActivity
└── CameraScreen (Jetpack Compose)
    ├── CameraViewModel
    │   ├── CameraX  (Preview + ImageAnalysis)
    │   ├── ML Kit Text Recognition  → extracts URLs from plain text
    │   └── ML Kit Barcode Scanner   → decodes QR codes
    ├── UrlResultsPanel  (LazyColumn of detected URLs)
    └── SettingsScreen
        ├── History tab  (UrlHistoryRepository — SharedPreferences)
        └── About tab    (open-source info + GitHub link)

Key design decisions:

  • Frame analysis is throttled to 800 ms to reduce CPU/battery usage.
  • ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST drops frames that arrive while the previous one is still being processed.
  • Both text and barcode analyzers run concurrently on the same frame, results are merged.
  • URLs are deduplicated per session; the history avoids duplicate entries too.
  • The history is stored as JSON in SharedPreferences (no external DB dependency).

Tech stack

Library Version Purpose
Kotlin 2.0.21 Programming language
Jetpack Compose (BOM) 2024.09.00 UI toolkit
Material 3 Design system
CameraX 1.4.2 Camera access and analysis
ML Kit Text Recognition 16.0.1 URL detection in text
ML Kit Barcode Scanning 17.3.0 QR code decoding
Accompanist Permissions 0.37.0 Runtime camera permission
Lifecycle ViewModel Compose 2.10.0 State management

Permissions

Permission Reason
CAMERA Required to capture and analyze camera frames for URLs and QR codes
INTERNET Required to open detected URLs in the browser

Contributing

Contributions are welcome! Feel free to:

  • Open an issue to report a bug or suggest a feature
  • Fork the repo and submit a pull request

Please follow the existing code style (Kotlin + Compose conventions) and add documentation to public APIs.


License

MIT License

Copyright (c) 2026 Manuel Alejandro

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Made with ❤️ using Kotlin, Jetpack Compose, CameraX and ML Kit
https://github.com/manalejandro/URLFinder

Descripción
A free, open-source Android app that detects URLs and QR codes in real time using your device camera
Readme MIT 304 KiB
Languages
Kotlin 100%