Android screen filter app for night time phone use.

Overview

Low Maintenance Mode

Red Moon is currently maintained to the level of "works on my device". Pull Requests are still accepted and if you're interested in becoming a co-maintainer, I'm willing to spend time walking you through the code base. Read More


Red Moon Icon

Red Moon
Translation status License Commits (since latest release)

Blue light may suppress the production of melatonin, the sleep hormone. Red Moon filters out blue light and dims your screen below the normal minimum, so you can use your phone comfortably at night.

  • Schedule Red Moon to run from sunset to sunrise, or at custom times.
  • Use the default color profiles, or set custom color, intensity, and dim levels.
  • Automatically pause in apps secured against overlays, or those you choose.
  • Quickly start, stop, and switch profiles via notification, tile (Android 7.0+), or widget.

Get it on F-Droid Direct download

Do your part — participate in the community

Communities keep software projects alive. Without them, projects usually fade into obscurity when the primary developer loses interest or becomes busy in other parts of their life. That's where you come in! You can:

  • Read through the issues and give a 👍 to the ones you care about most.
  • Open new issues with feedback, feature requests, or bug reports.
  • Help translate using Weblate.
  • Come chat at Matrix, IRC, or Gitter
Translation status

Screenshots

Screenshots are slightly out of date.

Development Build Status

Building

To build the app on GNU+Linux, clone the repository, then, from the root directory, run

./gradlew build

To install the app on a connected device or running emulator, run

./gradlew installDebug

Pull requests

  • We're happy to answer questions if you reach out via an issue, the chat room(s), or email.
  • If your change makes the UI more complicated, we suggest checking if we're interested before you implement it.
  • Please keep code and translations in separate PRs.

Style

Prioritize legibility over dogmatism. That said, consistency is nice, so here's a short list of what I've been doing.

  • 100 characters per line; 80 if you can.
  • Indent 4 spaces, or 8 spaces if the previous line ends with =.
  • CONSTANTS and ENUMS use all caps, variableNames use camelCase.
  • Form suggests function: Group and align similar actions, and don't align dissimilar ones, even if you could.
  • Good comments explain why something is done; if you find yourself describing what the code does, consider:
    • Refactoring into smaller functions with descriptive names
    • Converting comments to logs. Code that requires comments probably also requires good logs to debug.
  • Always use curly braces with if (except short val/var one-liners: val x = if (a) b else c)

License

GNU GPLv3 Image

Red Moon is licensed under the GNU General Public License version 3 or (at your option) any later version by the contributors. It is a derivative of Shades by Chris Nguyen, used under the MIT License.

All used artwork is released into the public domain. Some of the icons use clip art from openclipart.org, which are all released in the public domain, namely:


* Google Play and the Google Play logo are trademarks of Google Inc.

Comments
  • UX changes

    UX changes

    List of changes to consider this ticket closed:

    • [x] Bump to v2.7.0 :smiley:
    • [x] Snack bar when top switch is disabled
      • [x] More contrast with dark theme.
    • [x] Remove all drop-down actions in notification except pause/resume.
      • Tapping the text will still open the app.
      • Alternative: replace the 'close' button with "pause for X minutes"
        • There's probably a good way to show this with an icon; I'm not sure what that should look like.
        • When the filter is temporarily paused, the notification text should read "Paused for [X] minutes"
        • If there are 15 or fewer seconds left, "Paused for [X] seconds."
        • Hitting "Pause for X minutes" while the filter is paused will reset the pause time to X minutes.
    • [x] Add FAB that toggles pause/resume.
      • [x] The FAB should not be visible when the app bar switch is off
      • [x] Animate the FAB appearing and disappearing like this.
    • APP BAR SWITCH
      • [x] When it's off, all settings except "Dark theme", "Visit the project page", and "Email me..." are grayed out and inaccessible.
        • [x] The ADD button should also gray out to reflect that it is not clickable.
        • [x] The three moons should all gray out.
      • [x] When it's off, the notification should not appear.
      • [x] Pausing or resuming the filter via notification or FAB does not change the position.
      • [x] When switched on, the filter should start paused.
        • For this release; the end goal is more nuanced behavior; see #34.
    • [x] Add "Location" setting below "turn off time"
      • Grayed out unless "Toggle filter automatically" is set to "sun"
      • Secondary text reads "Lat: ##.## Long: ##.##"
        • If location has never been set, Secondary text reads "Not set"
      • Tapping the setting attempts to update the location.
        • Updates toggle times if location update is successful.
        • [x] If it fails, it shows an error message "Enable location services to update location"
          (Replace the current message starting with "location service isn't enabled...")
    • [x] In "sun" mode, secondary text for "Turn filter off" and "Turn filter on" shows in-use (not custom) times.
      • The custom times should still be saved & restored if the user returns to using the custom times.
    • [x] Setting "Toggle filter automatically" to "sun" immediately sets toggle times to a reasonable default
      • One suggestion in #5 is approximating sunset/sunrise times based on time zone.
      • [x] In "sun" mode, each time the filter is automatically toggled, Red Moon attempts to update location.
        • This attempt fails or succeeds silently.
        • If it succeeds, updates toggle times, too.
        • No change if it fails.
    • [x] Remove "Keep running after reboot" setting
      • The service, if enabled, should always stay running after reboot.
    • [x] Remove "Contact" header (move these settings under "Other")

    The rest of this comment is out of date. It may still be useful for context.


    Some of this (anything quoted) is pulling from the Material guidelines (settings and selection controls). The rest is from my experience as a UX designer (in training).


    1. Clarify the how users interact with the app

    Add a FAB & change notification, the top-level switch, startup settings, & the automatic filter backend.

    I wrote out a bunch of reasons why the current behavior is confusing, but they're cluttering this section so I moved them down to the bottom of this post 0 so here we can focus on solutions.

    The user doesn't distinguish between the service and the filter. They only care about 3 questions:

    • Am I interested in using Red Moon? Probably yes, but this setting should exist so the app can easily be completely disabled without uninstalling it. It's changed so infrequently that it doesn't need to exist outside the app.
      • Do I want Red Moon running right now? Ie, they want to be able to manually stop the service.
        • What parameters should it run under? Both filter parameters and timing. The user configures these (in a profile) and then forgets about it. Maybe occasionally they'll switch profiles. If they're constantly tweaking profile settings, we're doing something wrong or there's a feature we're lacking.

    So here's a state hierarchy:

    1. Red Moon disabled
    2. Red Moon enabled
      1. Filter paused
      2. Filter on
        1. Profile a
        2. Profile b
        3. etc

    Each indentation level is a layer of abstraction, and we have controls at each layer. If you mix layers, you'll end up with settings in places that don't make sense1.

    The user doesn't care if Red Moon is able to turn off the service in the background, nor if the service starts on boot or if service is able to restart across reboots -- they only care what state the app is in. So the question becomes, where do we control elements of each state, and which states should persist across reboot? Here are my conclusions:

    Remove both 'Startup' settings. They both have to do with implementation details that users don't care about.

    • If a user wants a filter that they have to manually enable and disable that's on after every reboot, they'll already be using a profile where the filter is always on and just pause it manually.

    The top-level switch should enable/disable Red Moon. Its state should persist across reboot.

    • The only way to toggle this setting is tapping the slider in the app.
      • control via intent can happen at a higher level
      • Remove the 'close' button from the notification. It would be too easy for a user to disable Red Moon when they intended to turn off the filter. If you want to keep this button, repurpose it. See the 2nd comment in this thread.

    Add a FAB that pauses and resumes the filter. Its state should not persist across reboot.

    • If Red Moon is disabled, the FAB will enable it as well as resuming the filter.
    • The 'pause' button in the drop-down notification will have identical behavior, except it'll never be shown while Red Moon is disabled.
    • If you use this button while Red Moon is disabled (state 1), it will enable red moon and turn the filter on.

    Changes to the filter settings get their own section at the bottom.


    2. Change "Dark theme" to a switch and remove the secondary text.

    Secondary text is optional. If the label is sufficient on its own, don't add a secondary text description. [...] If you have a single option, avoid using a checkbox and use an on/off switch instead.

    "Dark theme" is pretty universally understood.

    Switches are pretty overrated; they're often more confusing than a checkbox would be. That said, they have their place on lone settings or when changing the setting has an immediate effect (like toggling wifi or switching theme). Dark theme is both.


    3. Shuffle around settings under the 'automatic filter' header

    For non-switch settings, secondary text should show the current status of a setting only.

    The first 3 lines mimic Twilight's interface. 'Location' should be smaller than Twilight's and only show the coordinates in its secondary text.

    ~~Automatic filter~~ Filter times

    • {Always | Sun | Custom}
      [slider bar for viewing current times or setting them if 'custom' is selected]
    • Location
      [coordinates]

    'Location' opens up a new activity that guides you through the process of picking your location. That screen has 4 options:

    • Automatic (accurate)
      Requires location services
    • Automatic (approximate)
      Estimate location from system date/time
    • Enter coordinates
    • Search by city

    0: It should be possible to understand how all settings will affect behavior without actually testing out different combinations of settings. It boils down to whether there a difference between a filter that's on but paused and a disabled filter. Ie, can the service be running and the filter be disabled? Related questions that follow:

    • Does the notification showing mean the service is running or that the filter is on?
    • If I have I have automatic filter times set but I pause the filter, will the filter turn on at sunset or be paused indefinitely?
    • Does the top level switch start and stop the filter or the service?
    • Does the 'automatic filter' setting start and stop the filter or the service?
    • Does the stop button in the notification stop the service or filter?

    My best guesses for the answers are:

    • The notification tells whether the service is running or not, as does the switch.
    • The filter turns on when the service starts, but can be paused through the notification.
    • Automatic filter toggles the service on and off.

    Could you explain what the actual relationship between filter and service is? If it's different enough from my guess that implementing my suggestions would be difficult, I'll make some modifications.

    1: It's pretty clear that the team behind Twilight did their homework for the design, but they got lost in the details. They decided "always on" should be at the manual-intervention level; I think it's a profile setting. They also decided "filter times" should be a global setting, when I think it's also a profile setting. Changing it is larger-scope than this ticket, though. I am only including changes here that I think should be uncontroversial.

    opened by smichel17 31
  • Kotlin and a bunch of other stuff

    Kotlin and a bunch of other stuff

    This is the continuation of #88. It fixes some or all of #36, #70, #88, #90, #94.

    This has become a really big PR, but it should be clear what I've changed if you look at it commit by commit (with the exception of ed27961, because android studio added the new kotlin files to git without asking).

    TODO:

    • [x] Bugfix: Crashes when trying to get location permission on emulator, api 21.
      • This turned out to maybe just be an emulator bug. The emulator didn't have a network location provider. Keeping the fix in, just in case, and because it includes better logging.
    • [x] Bugfix: toggling the theme scrolls back to the top of the activity instead of maintaining scroll position.
    • [x] Re-add a pref just for updating the location. I tried to find a way to replace it with a toggle entirely, but there's just no way. If you give a prominent notice that you're updating the location, it feels too invasive ("Why does Red Moon need to know my location right now?) but if you don't give a prominent notice, the app feels like it's missing a way to update the location.
      • We can probably fix this when we add a way to manually set the location, in another sub-screen. But that's more work than I want to do right now.
    • [x] Re-enable location; pull location updating out into its own service so the app doesn't need to stay in the foreground while the location updates.
    • [x] Re-enable ShadesPresenter (the fragment approach plus null safety breaks it) / replace it with eventbus
    • [x] Better interface for ScreenFilterService
    • [x] Bug: Turning on Secure Suspend always pauses. Introduced in 8d97285
    • [x] Bug: Preview doesn't work if you start changing setting while filter is turning off.
      • [x] And other weirdness with turning the filter on and off the first time you open the app
    • [x] Bug: Changing settings doesn't cause the profile spinner to change to 'custom'
    • [x] Allow turning the filter back on while it's in the middle of turning off
      • There is a more elegant fix to this that doesn't cause it to flash completely off, which involves moving openScreenFilter() and closeScreenFilter() into ScreenFilterView. I just want to get this merged, though, so I'll do the easy/brittle fix for now.
    • [x] Bug: Timer doesn't go on
      • ScheduleNextCommand seems to work correctly, but onRecieve never gets called. The receiver had accidentally been removed from the manifest during the rename.
    • [x] Bug: Sometimes two screen filters can get started.
      • This can also be reproduced by repeatedly using the toggle widget, with amusing results.
        • Toggle on works, but toggle off does not (although Red Moon thinks it does), so the next time you turn it on, now you've got two filters running.
        • If you put a phone in developer mode, you can see that when started this way, the filter does not show up as a service, but as a background process. When you swipe it away in the app history, the filter will turn off.
      • Toggling on seems to work fine. Toggling off is not actually turning the filter off.
    • [x] Clean up android studio warnings and remove unused imports
    • [x] Add my name to copyright notice in modified files

    Not going to do these now:

    • show the on & off times in the Automatic toggle summary
      • We'll need to add additional strings.
      • I'm unsure what's needed to work with RTL locales.
      • If we end up doing #106, not sure how we'd display that.
      • How big of a deal is it that we don't display them?
    • Bug: crashes when turning on filter if permission to draw over other apps is not granted:
      • This is also present in the live app (#85) so I'm going to say it's not in scope of this MR.
      • Solution will be to do the checks for permission in the screenfilterpresenter. If the check fails, post a message to the event bus. That way, if the app is open, it'll receive the event and can launch a dialog asking for permissions; if the app isn't open, it'll fail silently. We can use this approach for other permissions, too, if appropriate.
    • Make getting a new location more reliable.
      • This is also present on live (#102).
    • Clean up compilation warnings / add eventbus subscriber index / modify Lint for kotlin
      • These are nice-to-haves, but they don't prevent the application from running. I'd like to do them before the next release, but I just want to get merged to master so I don't have to keep maintaining what's essentially a fork. Plus when I know I'm making individual MRs and not working on one big one, my commits are much cleaner.
    • Bugfix: Secure Suspend doesn't work on Galaxy S6, api 23
      • The current app monitoring thread fails to recognize the package installer as secured.
      • Suspect this is a Samsung problem, as it works on an api 23 emulated device.
      • Verified that this also happens on the live app, so this is not a regression -> wontfix
    opened by smichel17 30
  • Crash on start on v3.2.0

    Crash on start on v3.2.0

    First, thanks for the great work in this app!

    After updating to 3.1.1 the redmoon-tile in the "swipe down drawer" stopped working. After the update to 3.1.2 I cannot launch the app at all.

    How could retrieve the relevant crash logs for you?

    Moto Z, Android 7.1.1, kernel 3.18.31

    bug duplicate 
    opened by noerw 27
  • Timer is not active in idle (Doze) mode on newer devices

    Timer is not active in idle (Doze) mode on newer devices

    LineageOS 14.1. Android 7.1.2. Red Moon (F-Droid) 2.10.2.

    When the device is idle for a long time, the timer does not work. The filter does not "start" and "stop".

    To test this, force the device in idle (Doze) mode and wait for the "start" or "stop" event:

    adb shell dumpsys deviceidle force-idle
    

    Possible fix: allow the timer's alarm also to operate in idle mode for newer devices (by calling alarmManager.setExactAndAllowWhileIdle(), SDK API 23):

    File TimeToggleChangeReceiver.kt
    
    if (atLeastAPI(23)) {
        alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC, calendar.timeInMillis, pendingIntent)
    } else if (atLeastAPI(19)) {
        alarmManager.setExact(AlarmManager.RTC, calendar.timeInMillis, pendingIntent)
    

    This seems to work after some quick testing.

    bug 
    opened by willemw12 27
  • updated dependencies, gradles, and a bit of code

    updated dependencies, gradles, and a bit of code

    successfully built all four different apk variants (fdroid and playstore, both debug and release) with these changes

    i can provide them if you wish to test them

    opened by TacoTheDank 25
  • No automated function at all

    No automated function at all

    App Version: 2.10.2 from F-droid. Android Version: Android 6.0 in Huawei P8 Lite with EMUI 4.0.

    I don't know if i'm doing something wrong.

    I can switch on/off the red filter with the general button in the app, but i can't make it work automaticly with the time function. It's activated and i put manual and automatic time (it picks the right time for my time zone) but the red filter only works with the general button, and the time function doesn't matter, the red filter has never activates or deactivates with the times configured.

    My phone has default function to don't keep alive apps, but Red Moon is configured as protected app and this shouldn't be a problem.

    And, well, i know is not the same, but Twilight App works with automatic switch on/off, but i think the red filter in Red Moon fits better in my phone. Only for pointing that.

    Thanks in advance.

    bug 
    opened by LukasThyWalls 24
  • [Enhancement] Option to turn off status bar notification

    [Enhancement] Option to turn off status bar notification

    Adding an option to turn off status bar notifications would be a welcome improvement, so that once Red Moon is set up, it can be left alone to run in the background.

    opened by Coehill 24
  • Master on/off not working

    Master on/off not working

    Hi there, Maybe related to #128 (also began with 2.10.0 on Fairphone 1 (although Android 4.2.2), but not resolved with 2.10.1 update)

    The timer is switching the filter on and off successfully but the master switch does not turn the filter on or deactivate it when the timer has activated it. Peculiar is that adjustment of the filter settings temporarily adds the overlay until the slider is released, whether the master switch is on or off.

    Reinstalling hasn't solved this.

    Great app and thank you

    bug 
    opened by leoauri 23
  • Collaboration between screen filter app devs

    Collaboration between screen filter app devs

    On f-droid, there are 3 screen filter apps that all do more or less the same thing:

    And some apps that have partial overlap:

    It seems like a waste of effort to have so many of us working independently on the same kinds of issues. Are any of you interested in merging our apps, or collaborating in some other way (eg, refactoring some functionality into libraries we could share)?

    edit: We're all GPLv3 (or GPLv3+), so we can freely combine our code.

    needsinfo 
    opened by smichel17 22
  • Automatic turn-on/turn off does not work

    Automatic turn-on/turn off does not work

    Hi there !

    I happily discovered Red Moon as an alternative to Twilight on F-Droid.

    However, automatic turn-on/turn at custom times does not seem to work : I set it to run between 20:00 and 06:00, but it did not stop at 06:00.

    Also, I'm not quite sure what the two startup options do ("Keep running after reboot" and "Alway open on startup") : do they mean that Red Moon doesn't normally start at boot to monitor automatic turn on/off times, and that reboot behaves differently than normal boot ?

    bug 
    opened by breversa 20
  • Make it optional to disable button backlight

    Make it optional to disable button backlight

    The feature disabling button backlight is fine, but it has as a side-effect: it disables keyboard backlight on devices with a physical QWERTY keyboard, which renders the keyboard almost unusable (it is hard to touch type on a mobile keyboard).

    Please make this function optional.

    opened by di72nn 18
  • Unistalling led to dm-verity file corruption

    Unistalling led to dm-verity file corruption

    Steps To Reproduce

    1. Grant the app root privileges
    2. Enable the filter
    3. Unistall the app
    4. Enable system blue light filter
    5. Reboot
    6. Your device is now bricked (dm-verity device corrupted force dump kernel_restart)

    Additional description/details (optional) Add any other context about the problem here.

    It may be a very peculiar situation but, really, who might expected such a thing?! I had to wipe all my data and reinstall a clean version of Android.

    Maybe a warning could have been useful.

    Device info:

    • Red Moon version (under Red Moon settings): 8.1
    • Android version (under Settings > About device): 12.1
    • Device: OnePlus 8T
    bug 
    opened by federicodilo 2
  • Spatially Varying Filter for Leveling Brightness

    Spatially Varying Filter for Leveling Brightness

    The problem: With astigmatism, bright things bloom out, blur, and glow, obscuring neighboring elements that are darker. When the entire screen is darkened the effect seems to worsen.

    Concept for solution: Darken the brighter things more.

    As I understand it, the darkening is an overlayed red image rather than adjusting the color settings of the display, which should allow for different values at different regions of the screen.

    If the current screen content can be captured by a program and detect areas that are brighter than their surroundings, then perhaps the overlayed red image could be modified to be darker or more opaque in that area to even out the brightness of the screen. Like tonemapping. With some degree of smoothing between values, either by lerping the current overlay to the new overlay a little bit each time the screen is captured, or something more reactive that works faster to darken and slower to lighten, or the other way around.

    I don't know what Android will actually allow though, but I'm pretty sure it's a pipe dream.

    enhancement 
    opened by torridgristle 1
  • Impossible to interact with KeePassXD when Red-Moon filter is enable

    Impossible to interact with KeePassXD when Red-Moon filter is enable

    Steps To Reproduce

    1. Install KeePassXD and Red Moon
    2. Enable Red Moon filter
    3. Open KeePassXD

    Expected behavior:

    Interaction with KeePassXD interface is possible

    Actual behavior

    KeePassXD look like freeze because no touchscreen interaction is possible when application is on screen. Keyboard interaction is still possible. If Red Moon filter is disable, interaction is back.

    Device info:

    bug 
    opened by LoHub 1
  • Crash When try to chamge settings

    Crash When try to chamge settings

    Steps To Reproduce

    1. Open Einstellungen
    2. press on Anfangszeit or Endzeit

    Expected behavior: Posibility to change time

    Actual behavior: Red moon dies

    Additional description/details (optional) Add any other context about the problem here.

    Device info:

    • Red Moon version (under Red Moon settings): v4.0.0
    • Android version (under Settings > About device): 6.0.1
    • Device: SM-A300FU
    bug 
    opened by Itsalltext 0
  • Paused filter systematically resumes on border cross

    Paused filter systematically resumes on border cross

    Actual behavior: [What actually happened.]

    With red moon turned on and paused, the filter resumes every time I cross the border between two countries (in my case from France to Belgium to the Netherlands to Germany)

    Expected behavior: [What you expected to happen.]

    The filter should have remained paused.

    Additional details

    • Filter: Custom
    • Schedule: None
    • Lower system brightness: unchecked
    • Pause in excluded apps: off
    • Hardware button back light: turn off

    Device info:

    • Red Moon version (under Red Moon settings): [v3.5.0]
    • Android version (under Settings > About device): [10]
    • Device: [Lenovo P2a42]
    bug 
    opened by kirisakow 0
  • Accessibility Service Overlay MVP

    Accessibility Service Overlay MVP

    I'm not going to pretend that this is the finest code I've written, but this should be daily-usable and I want to prevent as much eye-searing as possible among our Android 12 users. This should be in a reasonable state to build upon as well.

    It adds a link in the settings to the accessibility services page, and will always use the accessibility service instead of a standard overlay when said service is enabled. It all goes through the existing FilterService, so it should work with all the possible ways one can toggle and set filters.

    Good news:

    • Covers up everything (home screen, notifications, navigation, incl. notches/cutouts) on every API level tested 7/11/12L/13 + 11 IRL device
    • Appears to work with the scheduling thing (not very extensively tested)
    • Miraculously fixed the busted vibration motor on my phone (not kidding)

    Bad news:

    • Is not animated (I think this can be added though)
    • Probably doesn't work with the privileged app monitor (can also probably be added later)
    • Some stuff is hardcoded b/c I can't seem to get info about cutouts or screen size on the newer API levels (ScreenManager uses a bunch of deprecated stuff)
    • Didn't bother to make it particularly discoverable; maybe we should add this to the welcome slideshow if we detect you're running Android 12+ at some later point

    Resolves #309 Resolves #253 Resolves #252 Resolves #312 Resolves #236 (repro'd + confirmed fixed on Android 11) Probably Resolves #234 Probably Resolves #277

    opened by AdamNiederer 0
Releases(v4.0.0)
  • v4.0.0(Aug 14, 2022)

    Added

    • Root Mode BETA (@notjuliee). BETA means it is not tested on many devices. Make sure you can reboot your phone without looking at the screen, just in case.
    • Initial/incomplete support for Android 12 (@AdamNiederer).
    • Start/stop times can be set to sunset/sunrise individually
    • Settings screen with all non-profile preferences
    • Hebrew translation (@Shopimisrel)

    Changed

    • All non-filter preferences moved to their own screen
    • Revert top switch toggle back to a floating button
    • Prevent changing filter preferences until overlay permission is granted

    Fixed

    • Time preference summary now displays in proper locale
    • Fixed crash when toggling via the tile (@gilbsgilbs and @automaton82)
    • Maybe fixed filter sometimes not turning on the very first time after installation

    Removed

    • Removed "Sunrise to Sunset" preference, since you can set them individually
    • Removed separate Google Play version (which included a prompt to rate the app)
    • Removed Red Moon from the Google Play Store
    Source code(tar.gz)
    Source code(zip)
  • v3.5.0(Mar 3, 2020)

    Added

    • Filter toggles when the schedule is updated

    Changed

    • Update translations

    Fixed

    • Fix alignment in on/off switch at the top of schedule/exclude screens

    Removed

    • Remove prompt to rate the app from the Google Play version
    Source code(tar.gz)
    Source code(zip)
  • v3.4.0(Feb 3, 2019)

    Added

    • Preliminary support for devices running Android Oreo (8.0) and newer — @AdamNiederer
    • Support for devices running Android versions going back to Ice Cream Sandwitch (4.0). Previous minimum was Jelly Bean (4.2.x).
    • Added Spanish (American) translation — @mvelizbravo
    • Added Spanish (Argentina) translation — @Andy-thor
    • Added Telagu translation — @veeven

    Changed

    • More intuitive behavior when saving filters with the same name — @david-hil
    • Updated slider labels
    • New changelog format
    • Updated Arabic translation — Ammar
    • Updated Basque translation Dabid — Martinez
    • Updated Chinese (Simplified) translation — @gensitu, @Therhokar
    • Updated Chinese (Traditional) translation — @gensitu, @louies0623
    • Updated Dutch translation — @ltGuillaume, @wb9688
    • Updated French translation — @dmaulat, @wellinkstein
    • Updated German translation — Andreas Kleinert, @Atalanttore, @elumbella, @JoKeyser
    • Updated Greek translation — @AndLydakis
    • Updated Hungarian translation — @notramo
    • Updated Italian translation — random r
    • Updated Japanese translation — librada, @naofum
    • Updated Lithuanian translation — @mobtechpd, @welaq
    • Updated Norwegian translation Bokmål — @comradekingu
    • Updated Persian translation — @ahangarha
    • Updated Polish translation — @verdulo
    • Updated Portuguese (Brazil) translation — @elchevive, @mv-santos
    • Updated Russian translation — @mesnevi
    • Updated Spanish translation — Alberto, ChemaBautista, @larjona, @mvelizbravo, @wakutiteo
    • Updated Turkish translation — @emintufan, @monolifed
    • Updated Ukrainian translation — Володимир Бриняк

    Fixed

    • Schedule now updates correctly when changing time zones — @SeonD
    • Notification no longer can become out of date while filter is paused — @david-hil
    • Changelog works with the dark theme
    Source code(tar.gz)
    Source code(zip)
  • v3.3.2(Oct 9, 2017)

  • v3.3.1(Oct 2, 2017)

  • v3.3.0(Sep 29, 2017)

    • Pause in excluded apps: you can now control this feature via the notification
    • Added Romanian translation (Ervin Bolat).
    • Fixed a bug where backlight brightness was not restored
    • Fixed a crash when the filter was turned on.
    • Updated translations: Chinese (Therhokar), Dutch (wb9688), Turkish (mission712), Russian (antonv6), Norwegian Bokmal (Tale Haukbjørk, comradekingu)
    Source code(tar.gz)
    Source code(zip)
  • v3.2.0(Sep 14, 2017)

    Changes:

    • Pause in secure apps: fix crashes and bugs, reduce battery use (note: added logging which may increase battery use this release; next release will remove the logging if no bugs are found).
    • Show a warning toast in apps where some features will not work when the filter is running (proton mail).
    • Automatic pauses behave identically to manual pauses.
    • Rename timer to schedule and show the times on the main screen.
    • Add translation link and translator credit on the about screen. Note to translators: Add your name or handle to the new string if you'd like to be included.
    • Fix a bug where the filter would not start as scheduled on Android 6.0+
    • Don't restore the backlight brightness if has been changed.
    • Fix crash when upgrading between 3.1.x versions.
    • Fix a bug where profiles would not be saved until Red Moon was closed and re-opened.
    • Created irc/matrix chat room, see the project page for links.
    Source code(tar.gz)
    Source code(zip)
    redmoon-v3.2.0.apk(4.01 MB)
  • v3.1.2(Sep 7, 2017)

  • v3.1.1(Sep 5, 2017)

  • v3.1.0(Sep 2, 2017)

    Changes:

    • Fix a bug where the top switch did not toggle the filter
    • Fix a bug where the fade transition would not play if the filter was toggled mid-transition.
    • Turn the timer on by default
    • Long press on quick settings tile opens Red Moon
    • Fix bugs when Red Moon is killed through Android
    • Lots of code cleanup (preparation for root mode)
    • Updated translations: Italian (@matteocoder), Japanese (@naofum), Turkish (@monolifed, @oguz-ismail), French (@gwenhael-le-moine, @swalladge, Remy J), Russian (@antonv6), Esperanto (@Reedych) Chinese/simplified (@frankzheng43), Serbian (@pejakm), Ukrainian (Володимир Бриняк), Norwegian/Bokmål (Tale Haukbjørk)
    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Apr 23, 2017)

    This release features a massive improvement in how Red Moon handles profiles, thanks to @smichel17

    Changes:

    • Lower brightness applies per filter
    • Custom (unsaved) filter remembers last used values
    • Switch to custom filter in the notification
    • Default filters can be deleted
    • Default filters can be restored
    • Basic fade in support, so the automatic transitions are smooth
    • Bug fixed where sunrise and sunset times wouldn't be updated
    • Big cleanup of the code
    • Lots of smaller bug fixes
    • New translations thanks to all the contributors
    • Hopefully in the alpha client of F-Droid in this release
    • The notification is no longer automatically dismissed if you turn the filter off
    Source code(tar.gz)
    Source code(zip)
    red-moon-v3.0.0.apk(3.87 MB)
  • v2.10.2(Mar 28, 2017)

    Changes:

    • Add changelog in the app
    • Remove location preference
    • When enabled, update location automatically
    • More accurate and prominent location update messages
    • Use GPS if network location provider is disabled
    • Move dark theme preference to three dot menu
    • Fix a bug where changes to 'Pause in secure apps' did not apply until Red Moon was killed
    • Small performance improvements
    • Update the intro to fix overflow on small screens
    Source code(tar.gz)
    Source code(zip)
  • v2.10.1(Mar 12, 2017)

    Lots of (small) changes by @smichel17 and targeting the newest API thanks to @Jawnnypoo.

    Changes:

    • Add a new preference to choose how the hardware buttons should be dimmed
    • Fix bug where the filter wouldn't automatically turn on/off (#126)
    • Updated icons
    • The service is now cleaned up when it isn't needed
    • Let the notifications show it when Red Moon is paused in a secure app
    • Improve logging
    • Target new Android API
    • Updated translations
    Source code(tar.gz)
    Source code(zip)
    red-moon-v2.10.1.apk(3.85 MB)
  • v2.10.0(Mar 2, 2017)

    With 144 commits since the last, this is a big release. It has a lot of under the hood changes as well as UI and UX improvements, done by @smichel17.

    Changes:

    • Code converted from Java to Kotlin
    • Lots of changes under the hood, fixing a lot of small bugs
    • Changes to the UI and UX, for example splitting the settings up in subscreens
    • A new about page
    • Fix a bug where the location wasn't found
    • Send public intents when the filter toggles
    • Improvements to the notification
    • Add a few apps to the secure apps list
    • Use of EventBus to streamline events under the hood
    • New translations
    Source code(tar.gz)
    Source code(zip)
    red-moon-v2.10.0.apk(3.66 MB)
  • v2.9.2(Nov 22, 2016)

    Changes:

    • Fix automatic turn on/off bug on Android Nougat thanks to @boconnell (#87)
      • Add ownCloud to the list of secured apps
      • Add various translations
    Source code(tar.gz)
    Source code(zip)
  • v2.9.1(Aug 23, 2016)

    Changes:

    • Remove unnecessary warnings when automatic suspend is enabled
    • Add support for Android N app settings (#78)
    • Add various translations
    Source code(tar.gz)
    Source code(zip)
  • v2.9.0(Aug 12, 2016)

    Changes:

    • Add an option to automatically suspend the filter in secured apps, like the package installer, permission or root prompt. (Fixes #64).
    • Rename toggle to "Filter toggle" to be more clear
    • Update / add various translations
    • Remove unnecessary log calls
    Source code(tar.gz)
    Source code(zip)
    red-moon-v2.9.0.apk(3.20 MB)
  • v2.8.2(Jul 29, 2016)

    Changes:

    • Fix a bug where the short cut would open the activity when the activity hadn't been destroyed
    • Change the tilte of the toggle to be more descriptive
    • Update translations in several languages
    • Translate to Portuguese (Brazilian), English (Australia) and English (United Kingdom)
    Source code(tar.gz)
    Source code(zip)
    red-moon-v2.8.2.apk(3.18 MB)
  • v2.8.1(Jul 28, 2016)

  • v2.8.0(Jul 3, 2016)

    Changes:

    • Add a button in the notification to cycle through the available profiles
    • Add an intro to help new users understand the app
    • Fix a bug where the notification would be active when Red Moon was disabled
    • Optimize the colour calculations when rendering the filter
    • Update a few translations
    Source code(tar.gz)
    Source code(zip)
    red-moon-v2.8.0.apk(3.16 MB)
  • v2.7.4(May 29, 2016)

    Changes:

    • Mirror icons in RTL layouts
    • Update translations
    • Add Norwegian and Russian translation
    • Dismiss the notification automatically when Red Moon is automatically paused
    • Make the shortcut toggle activity transparent, so it isn't visible when toggling anymore
    • Fix a bug that turned Red Moon on after reboot even though it was off and in manual mode sometimes
    • Remember the old brightness state across reboots
    • Add a label to the notification actions (to support Android N)
    Source code(tar.gz)
    Source code(zip)
    red-moon-v2.7.4.apk(1.73 MB)
  • v2.7.3(Apr 17, 2016)

  • v2.7.2(Apr 13, 2016)

  • v2.7.1(Apr 9, 2016)

  • v2.7.0(Apr 8, 2016)

  • v2.6.2(Mar 31, 2016)

  • v2.6.1(Mar 30, 2016)

    Changes:

    • The user can now choose times at which the filter automatically turns on or off
    • The user can choose to turn the filter on and off at sunset and sunrise
    • Red Moon now has a new launcher and notification icon
    • Red Moon now has a shortcut to toggle the filter, this allows Tasker support
    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(Mar 25, 2016)

    Changes:

    • Add option to automatically lower the screen brightness as long as the filter is running
    • Fix bug where the warning toast was shown too often on Android 6.0+ (API 23+)
    Source code(tar.gz)
    Source code(zip)
  • v2.4.0(Mar 25, 2016)

  • v2.3.0(Mar 23, 2016)

Owner
null
Proof of concept of custom widgets and apps running on the Z Flip3 cover screen. Adds a widget to Z Flip3 cover screen that lets you launch a web browser-like app on the cover.

SubUI-browser Proof of concept of custom widgets and apps running on the Z Flip3 cover screen. Adds a widget to Z Flip3 cover screen that lets you lau

null 35 Dec 24, 2022
Restaurants - A simple app which displays a list of restaurants from a stored JSON, ordered by opening status, favorites and filter chosen from the dropdown

Restaurants - A simple app which displays a list of restaurants from a stored JSON, ordered by opening status, favorites and filter chosen from the dropdown

Prafulla Thottasseri 1 Jan 17, 2022
Android-splash-screen-demo - Sample application to demo the various features provided in android-splash-screen

Android Splash screen API demo This is a sample application used to demonstrate the various features provided in android-splash-screen. More details c

Sridhar 1 Jan 3, 2022
TMDbHub - Listing movies using the TMDb API. You can filter results, view details, and save them to a collection

TMDb Hub Listing movies using the TMDb API. You can filter results, view details

David Varga 4 Dec 30, 2021
Android-basics-kotlin-tip-time-app - Tip Time app from Android Basics in Kotlin

Tip Time Tip Time app from Android Basics in Kotlin at developers.google.com. It

Ramon Lima e Meira 0 Jan 2, 2022
Episodie is a TV show time tracker app with unusual design written in kotlin and clean architecture approach. Get to know how much time you spent watching tv shows.

Episodie Episodie is a TV show time tracker app with unusual design. Get to know how much time you spent watching tv shows. Track easily overall progr

Przemek 126 Dec 7, 2022
Java/Kotlin lightweight implementation of RFC-6238 and RFC-4226 to generate and validate time-based one-time passwords (TOTP).

1time Java/Kotlin lightweight implementation of RFC-6238 and RFC-4226 to generate and validate time-based one-time passwords (TOTP). Maven / gradle de

Atlassian Labs 31 Dec 21, 2022
STxMobile is a proof of concept of an Android app for remotely controlling the Raymarine ST2000+ tiller pilot from an Android phone.

STxMobile STxMobile is a proof of concept of an Android app for remotely controlling the Raymarine ST2000+ tiller pilot from an Android phone. The app

Marco 8 Sep 1, 2022
⏺ A simple android app to browse your phone call recordings

⏺ Reky A simple android app to browse your phone call recordings [Under Construction] ✅ TODO Support more file name formats ?? Built-with MVVM with Si

theapache64 12 Feb 8, 2022
An Android app to watch anime on your phone without ads.

Anime X Stream An Android app to watch anime on your phone without ads. WARNING: THIS IS A BETA VERSION of application, THEREFORE YOU MAY ENCOUNTER BU

Mukul Banga 2.2k Jan 4, 2023
Candash - A simple Android app that turns your phone into an instrument cluster for your Tesla Model 3 and Y

What is CANdash? CANdash is an Android app that turns your Android device into a

Nick Nguyen 31 Nov 5, 2022
Just a phone app.

Koler ** An update, im currently working on a massive code redesign from scratch, will probably take some time, but will be better A uniquely stylized

null 633 Jan 2, 2023
Secret Codes is an Open Source application that allows you to browse through hidden codes of your Android phone.

####Secret Codes is an Open Source application that allows you to browse through hidden codes of your Android phone. This application will scan throug

Simon Marquis 251 Jan 6, 2023
Initiate immediate phone call for React Native on iOS and Android.

react-native-immediate-call-library Initiate immediate phone call for React Native on iOS and Android. Getting started Using npm: npm install react-na

null 7 Sep 7, 2022
Sync DND state between Android phone and watch

DNDSync This App was developed to enable Do Not Disturb (DND) synchronization between my Pixel phone and the Galaxy Watch 4 since this option was only

rhaeus 57 Jan 5, 2023
A handy phone call manager with phonebook, number blocking and multi-SIM support

Simple Dialer A lightweight app for handling your calls, no matter where are you. Comes with a handy call log for easy call initiation. There is a qui

Simple Mobile Tools 443 Jan 6, 2023
Application that shows a store's phone inventory

PhoneInventory Application that shows a store's phone inventory The Basics A basic inventory application that shows a store's inventory. Tech Kotlin 1

Ayana Bando 0 Nov 3, 2021
Phone booking system with kotlin

phone-booking-system Too lazy to introspect openapi? No worries, basic CURLs below; however, one needs to start the docker-compose file located in the

Dan Zaru 0 Nov 7, 2021
An application to find out the weather according to the current location of the phone

Weather App An application to find out the weather according to the current loca

Heba Elsaid 2 Jan 1, 2022