Modern flashlight app with dim functionality on Android 13+

Overview

FlashDim

API release license last commit Codacy Badge

flashdim


Read Medium article


About this project

Starting with Android 13, it's possible to control multiple brightness levels of the flashlight.
To be able to use this new feature I've developed this app.

Inspired by polodarb/Flashlight-Tiramisu ๐Ÿ’›
Custom SeekBar built with code from massoudss/waveformSeekBar ๐Ÿ’›

Features

  • ๐Ÿ”ฆ dimming your flashlight level by level
  • ๐ŸŽš shortcut buttons for different brightness levels
  • ๐Ÿ†˜ SOS flash button
  • ๐Ÿ“ซ morse code flash mode
  • โšก quick settings tile for fast access
  • ๐Ÿ”’ private, no ads, no internet connection
  • ๐Ÿ’ฏ modern Material You (M3) design elements
  • ๐ŸŽจ app colors adapt to device's system colors

Download

Get it on Google Play Get it on F-Droid

Supported Devices

The full functionalizy of this app is ONLY AVAILABLE for devices which support the dim functionality of the flashlight (hardware limited).
Here's a list of devices I know of which do work FOR SURE. If you've used a device that works too please let me know so I can add it here.

  • Google Pixel 6 series
  • Google Pixel 7 series
  • Samsung Galaxy S21 series
  • Samsung Galaxy S22 series
  • Samsung Galaxy S23 series

Screenshots

Contribute

Of course I'm happy about any kind of contribution.

For creating issues there's no real guideline you should follow. If you create pull requests please try to use the syntax I use. Using a unified code format makes it much easier for me and for everyone else.

Used Icons

๐Ÿ’›
Flashlight icons created by Freepik - Flaticon
Github icons created by Laisa Islam Ani - Flaticon
Information icons created by Freepik - Flaticon
Knob icons created by Debi Alpa Nugraha - Flaticon
Morse code icons created by Freepik - Flaticon
Restart icons created by AlternativeStd - Flaticon
Settings icons created by Freepik - Flaticon
Start button icons created by Freepik - Flaticon
Vibrate icons created by Bombasticon Studio - Flaticon
Volume icons created by Freepik - Flaticon

License

Copyright 2022, Cyb3rKo

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Light level 1 looks like 0

    Light level 1 looks like 0

    Google Pixel 6

    The first bar should be filled in. Because the light is so dim you may not notice it's on and just close the app.

    May be an issue after unlocking a device and if the app is open it will show the bar is empty. And you have to check the counter or the back of the phone.

    bug 
    opened by max-ishere 33
  • Quick settings tile options

    Quick settings tile options

    Would be nice if you could assign either of:

    • Always Flash On
    • Toggle Flash
    • Open the App (if open don't change flash state)

    For:

    • App first start
    • App reopened
    • Quick Tile

    A sensible default:

    • Quick Tile: Toggle Flash
    • App first start: Always Flash On
    • App reopen: No action, wait for UI controls.

    Use case for tile toggle

    Idk if it's possible to differenciate between a tile press and app open. However when pressing the tile while the phone is locked it will ask for password AND activate flashlight. So being able to toggle and not unlock the phone would be great.

    enhancement 
    opened by max-ishere 12
  • Quick Start activation ignores initial light level

    Quick Start activation ignores initial light level

    When activating the flashlight through a short tap on the Quick Start tile, it goes full brightness. After opening the app, the light level drops to the initial light level. If I open the app through a long press on the Quick Start tile, it works like intended.

    enhancement 
    opened by philipkbh 6
  • Light level keeps resetting to maximum

    Light level keeps resetting to maximum

    Firstly, thank you for developing and providing us this wonderful app.

    Potential bug:

    • If you start the app with the FlashDim Quick Settings tile, change the light level, go to the home screen without closing the app and then going back in, the light level resets to maximum.
    • The same happens when you put your device in standby / locking it.
      • Sometimes awaking it is enough, but sometimes it only happens after unlocking it.
    • Crucial is that the FlashDim app need to be open (not in the background) before locking the device.
    • If you do this while the app is active in the background, the light level resets only after opening the app again.

    This bug only occurs when opening through the Quick Settings tile. I tried to reproduce the issue with opening the app through the app drawer, but all works as intended.

    bug 
    opened by philipkbh 4
  • On tile click doesn't update the UI

    On tile click doesn't update the UI

    Steps to reproduce

    1. Open the app.
    2. Set the light level to any value (e.g. 22).
    3. Open notifications while the app is open and click the tile to turn the flash off. Close the notifications.

    Actual result

    The level in app is the same value (e.g. 22) and the bar is filled, but the light is physically off and the tile is in the off state.

    Expected result

    The app shows the current flash state (e.g. off).

    Notes

    If you click the tile again and it sets the level to something different (e.g. default is 10) the app will show 22 (from example above), but the actual level is 10.

    Importance

    Honestly not that important, since you can press home (swipe up on buttonless devices) and open the app again (not a full restart) and it will get the current state correctly.

    Notes

    The tile updates correctly if the flashlight level or state (on/off) is changed in the app.

    enhancement wontfix 
    opened by max-ishere 3
  • Add button launch shortcut

    Add button launch shortcut

    Hi! Thanks for the app.

    Would you consider adding the ability to launch the flashlight from lock screen with buttons only? It is very convenient. I see four options:

    • Put a hook on volume buttons, the same way Torchie [1] does it through accessibility service.
    • Register your app as an assistant app, and trigger it through long-press of power button, but only for enabling flashlight.
    • The same but with camera
    • Do background polling the same way KeyMapper [2] does. Not very convenient as it drains the battery.

    What do you think?

    [1] https://github.com/anselm94/Torchie-Android [2]: https://github.com/keymapperorg/KeyMapper

    enhancement 
    opened by Omrigan 1
  • "This device only supports 1 light level." - Phone not supporting dim feature

    โš ๏ธ BEFORE opening a new issue if this message appears in the app read this:


    "This device only supports 1 light level. Dim feature deactivated."

    This message is shown when your device does not support dimming your flashlight. You can still use basic flashlight features of the app, but all dim features are hidden.
    I can not do anything about this as the limitation is hardware related.

    If your device is not supported opening a new issue for this will unfortunately not change anything about this problem.
    You can check HERE for device support.

    opened by cyb3rko 0
Releases(v1.3.5)
  • v1.3.5(Dec 31, 2022)

    Fixes:

    • incorrect progress bar level shown [#9] (e9161a6a90c35be716b65c68dc2e5baf6f77f247)

    Additions:

    • About section (d3f851ade70c9f05cd4e63f22498b70c0c39130f)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.4(Dec 4, 2022)

    Fixes:

    • empty light level view (de5dcfe34a2c70956af4e761b36453ae006a7474)

    Additions:

    • option to link initial level to quick settings tile [#11] (b5f9ee6b60f4603c5188f67ae19ab7495a0669d1)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.3(Nov 29, 2022)

    Fixes:

    • wrong morse code for 'K' [#6] (5eb177929d29f0db0cd5b864862408872d040078)

    Enhancements:

    • change behaviour of quick settings tile [#10] (0ea2438c66543475cbd726edb9355f29a06ad377)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.2(Nov 9, 2022)

    Additions:

    • setting to change initial light level [#5] (ab40076c7cb00303c952c6059ded406bdfb1a193, f398fa0d3a89c8bf3fa16e0dd3bc3b6507a8d81c)
    • setting to activate flashlight every time the app is opened [#4] (03bf622a69d4190e0e2d35e4459366f5e0f4071a)

    Enhancements:

    • update icons (45821fdd806f61364a21650596188bb066bf3d95, be76b00baf65fd6eeeddd2816397bdf0dfac0801)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Nov 7, 2022)

    Quick fix for previous release:

    Fixes:

    • wrong settings on first app start (02e92b4e9720e96acfba418bc387a400234a7a8e)
    • lint error for release versions (f41272848b082e90419ac6c633576fa599e137b7)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Nov 7, 2022)

    Additions:

    • Settings page (3a13570e58b424dff945de4bda83e94b1a63fea2, 7891e91b55cea9c50a4f9e3470bf759fc513867e, 82d4db163e9dee19b868c5e285d0b5eded4be277, 61f33ca3cc2cb99a988936d2270020cd674163f6)

    Changes:

    • beautified dialogs (e8ce9c22f00ec4853813827d91f0b224eaa62546)

    Enhancements:

    • compressed icons (31797ac9eb39a08b500c9d126ac6efc05bacabfc)
    • small code refactoring (a7832adc01ec18ed30c7e3c09237a6cdb0ec9f77)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.2(Nov 6, 2022)

    Additions:

    • themed icon (68f597b3f5bc8c199860cc22c012147cc598685c)

    Changes:

    • clear intent on Quick tile click (13660c6d3071c8db16f37276b5c07312cbb8adb4)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.1(Nov 2, 2022)

    Fixes:

    • fixed vibration for unrealistic dim levels (7d40be6e41e69c5842d0551b7387c779eb9e68dc)

    Changes:

    • make important dialog non cancelable (825a5ed75798ca405680cb77a430aa7aa81add94)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Oct 31, 2022)

    Additions:

    • morse input feature (b1f9ddfe2a273822e39fce2277879de4cd4679ef, 0a5f30e84d623087a2802943c1f27427be484dad, a801ae043535b549ce4a5b9d48e9cbf8b76fe177, 4de43fc88df79f6d5466914ce0143ae48bef38a9)
    • vibration feedback (a0825a7e1b0cf1fbfbacf89a7b00c6b1f9975ada)

    Changes:

    • simplified seekbar calculation and optimized change listener output (a15847aa28de79b7db7ce5f3f00f64321026f22a)

    Enhancements:

    • moved logic from java to kotlin package (50c0c1b93b7975c46d5d003906bf3b285689e7b9)
    • simplified code (b89bee1018b6cf52564387f0628cbb83865e1dc5)
    • gradle updates (0a8147945c9ac0849835db26a56d814e49564e3c, 9908d4b290e34304c52de074962bbbf6c30fff0c, f46bbfb987f1dac6b95bcf63df9198a9049ddc5c)
    Source code(tar.gz)
    Source code(zip)
  • v1.1.2(Oct 28, 2022)

  • v1.1.1(Oct 28, 2022)

    Some updates for the F-Droid build:

    • move package declaration from manifest to gradle (da23b1848dd5276e3441baddaffbb6f1549b2446)
    • remove -release suffix for regular release builds (4d539a922f5ff68913c7d6ca566349759ed5587e)
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Oct 22, 2022)

    Additions:

    • Quick Settings tile (50aa2eb3b167c5a9dd9ba485708b28563df0e87d)

    Changes:

    • disable ability to store app archive (MORE INFO) (6c0141f3950e5a701e5541a0cd5962f6139f24b1)

    Enhancements:

    • some code refactoring (3a477d415886c9824b9d0d5651a943cd33c82022)
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Oct 22, 2022)

Owner
Niko Diamadis
Student & Freetime Android developer Mail: niko (at) cyb3rko.de
Niko Diamadis
Library to generalize functionality between several projects

libreforge libreforge is a library to generalize functionality between several projects, notably EcoArmor, EcoWeapons, and Reforges. Get from JitPack:

Auxilor 20 Dec 20, 2022
PokeDexApi is a simple version of PokeApi with search functionality.

PokeDex Api PokeDexApi is a simple version of PokeApi with search functionality based on KTOR. Documentation Base Url https://poki-dex.herokuapp.com E

Rohit Sharma 1 Jan 15, 2022
Kotter - aims to be a relatively thin, declarative, Kotlin-idiomatic API that provides useful functionality for writing delightful console applications.

Kotter (a KOTlin TERminal library) aims to be a relatively thin, declarative, Kotlin-idiomatic API that provides useful functionality for writing delightful console applications.

Varabyte 348 Dec 21, 2022
A basic Kotlin implementation of Facebook's memcache lease functionality.

Liftgate Lease A basic Kotlin implementation of Facebook's memcache lease functionality. How it works If the cache key is empty or has been invalidate

null 6 Nov 10, 2022
FirestoreCleanArchitectureApp is an app built with Kotlin and Firestore that displays data in real-time using the MVVM Architecture Pattern. For the UI it uses Jetpack Compose, Android's modern toolkit for building native UI.

FirestoreCleanArchitectureApp FirestoreCleanArchitectureApp is an app built with Kotlin and Cloud Firestore that displays data in real-time using Andr

Alex 66 Dec 15, 2022
ToDo App based on Modern Android Application tech-stacks and MVVM architecture.

ToDo App Task Management App based on Modern Android Application tech-stacks and MVVM architecture. Techs Used ?? Kotlin - First class and official pr

Rohit Sharma 12 Jul 22, 2022
๐Ÿ›’ Mercado Libre App Clone using modern Android development with Hilt, Coroutines, Jetpack (Room, ViewModel), and Jetpack Compose based on MVVM architecture.

Meli Clone ?? Mercado Libre App Clone using modern Android development with Hilt, Coroutines, Jetpack (Room, ViewModel), and Jetpack Compose based on

Esteban Aragon 7 Sep 22, 2022
Build with Jetpack Compose & all modern techniques and architecture of android app development

IMDB Movie App Build with Jetpack Compose & all modern techniques and architecture of android app development ScreenShots ?? Built With ?? Kotlin - Fi

Jayant Kumar 7 Dec 17, 2022
๐Ÿ“’ NotyKT is a complete ๐Ÿ’ŽKotlin-stack (Backend + Android) ๐Ÿ“ฑ application built to demonstrate the use of Modern development tools with best practices implementation๐Ÿฆธ.

NotyKT ??๏ธ NotyKT is the complete Kotlin-stack note taking ??๏ธ application ?? built to demonstrate a use of Kotlin programming language in server-side

Shreyas Patil 1.4k Dec 26, 2022
A project that showcases best practices for MAD (Modern Android Development).

MAD Dictionary Is this dictionary mad? Well yes, but actually no. MAD = Modern Android Development, this app is built using the very new and very awes

Abhishek Choudhary 11 Mar 12, 2022
Futurama Quotes demonstrates modern Android development implements MVVM architecture

This application allows you to see futurama quotes. You can search quotes according to the character that said it as well. Futurama Quotes demonstrates modern Android development implements MVVM architecture.

Soumik 2 Apr 28, 2022
๐Ÿ—ก๏ธ Deddit demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack, and Material Design based on MVVM architecture

Deddit demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack (ViewModel,Paging3), and Material Design based on MVVM

Krish Parekh 9 Sep 2, 2022
Jetpack Compose for Desktop and Web, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable.

Jetpack Compose for Desktop and Web, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable.

JetBrains 10k Jan 7, 2023
A Modern Kotlin-Ktor RESTful API example. Connects to a PostgreSQL database and uses Exposed framework for database operations.

kotlin-ktor-rest-api A Modern Kotlin-Ktor RESTful API example. Connects to a PostgreSQL database and uses Exposed framework for database operations. F

Selim Atasoy 32 Dec 20, 2022
Almost all modern mobile consumer apps are constructed from the same 4 components

?? Why? Almost all modern mobile consumer apps are constructed from the same 4 components. A component to communicate to the backend server A way to o

AT 0 Nov 10, 2021
Template for a modern spring web service.

Spring Service Scaffold A scaffold for a web service operating with a Spring Framework backend, reactjs as frontend and a continuous testing and build

null 0 Nov 15, 2021
Spring Boot API for Modern Warfare 2 Dedicated Servers

Spring Boot API for Modern Warfare 2 Dedicated Servers

Kai o((>ฯ‰< ))o 1 Apr 24, 2022
KVision allows you to build modern web applications with the Kotlin language

KVision allows you to build modern web applications with the Kotlin language, without any use of HTML, CSS or JavaScript. It gives you a rich hierarchy of ready to use GUI components, which can be used as builder blocks for the application UI.

Robert Jaros 985 Jan 1, 2023