Issue
Endomondo or similar Sport tracker applications randomly losing – dropping GPS signal during the workout, when used on Android 5.x Lollipop or 6.x Marshmallow with the screen turned off. Sometimes Endomondo app uses all the available RAM and forces the phone to reboot. This happens even if the “app optimization” in battery menu is turned off. Hard reset of the phone or clean install of Endomondo (tried different versions) also didn’t help.
The workaround described below works with Endomondo for Android, but should also work with other fitness tracking apps if adjusted properly. Disclaimer: It has some negative impact on the phones battery life during the workout, since the screen is not turned off.
Requirements:
- Android 5.x Lollipop or 6.x Marshmallow with root privilege
- Endomondo or similar sport tracker app
- Tasker (can be found on Google Play)
Workaround
Automatically change display timeout to 10 hours when Endomondo is running to prevent screen going off during the workout, change screen brightness to 0, (Only for AMOLED screens: force grayscale mode) to preserve battery life. When Endomondo stops running, return everything back to default.
Step 1: Set variable value to 1 when Endomondo starts and to 0 when it stops.
After installing Tasker, open it and go to Profiles. Click on the + sign and select Application. Make sure “App” and “Services” is selected below. Find Endomondo icon from the list, click on it and click on “back” arrow. Click on “New task” and set a name for the task, “SetEndomondoState1” for example. Under “Select Action Category” find “Variables” -> “Variable Set”. “Name” should be %EndomondoState (remember or write down this variable name, you will need it in the next step, also variable name is case sensitive) and “To” should hold value 1. Now go back to Profiles, click and hold the “SetEndomondoState1” (with the green arrow in front) and select the option “Add Exit Task”. Click on the “New task” and give it a name “SetEndomondoState0” for example. Under “Select Action Category” find “Variables” -> “Variable Set”. “Name” should be %EndomondoState and “To” should hold value 0.
Step 2: Prevent display turning off when Endomondo is running, also turn off screen brightness (OPTIONAL: and put phone to grayscale mode; helps preserve even more battery life on AMOLED displays) to preserve battery.
Go back to profiles and create another profile (click the + sign on the bottom). Choose “Event” -> “Variables” -> “Variable Set” and under the “Variable” write the variable name from the previous step (the one I told you to remember or write down) in my case %EndomondoState, “Value” should be 1. Press on the back arrow and on the “New Task”, name should be something semantic, for example “ScreenOn”. Under the “Select Action Category” click on the “Display” -> “Display Timeout”. Under “Hours” write or select the value which is longer than your workouts, in my case I selected 10. Press the back arrow. Click on the + sign below to add another action. Select “Display” -> “Auto Brightness” and under “Set” select Off. Press the back arrow. Click on the + sign below to add another action. Select “Display” -> “Display Brightness” and under “Level” select 0 or a low value. Put a checkmark on the “Disable safeguard” and “Ignore Current Level” options. Press the back arrow. OPTIONAL (activate grayscale mode): Click on the + sign below to add another action. Select “Code” -> “Run Shell” and under the “Command” write this: settings put secure accessibility_display_daltonizer_enabled 1. Put the checkmark on the “Use root option”.
Step 3: When Endomondo stops running, return everything back to default.
Go back to profiles and create another profile (click the + sign on the bottom). Choose “Event” -> “Variables” -> “Variable Set” and under the “Variable” write the variable name from the previous step (the one I told you to remember or write down) in my case %EndomondoState, “Value” should be 0. Press on the back arrow and on the “New Task”, name should be something semantic, for example “BackToDefault”. Under the “Select Action Category” click on the “Display” -> “Display Timeout”. Under “Seconds” write or select the default value which is 15. Press the back arrow. Click on the + sign below to add another action. Select “Display” -> “Auto Brightness” and under “Set” select On. Press the back arrow. ONLY IF YOU ACTIVATED THE GRAYSCALE MODE IN STEP 2: Click on the + sign below to add another action. Select “Code” -> “Run Shell” and under the “Command” write this: settings put secure accessibility_display_daltonizer_enabled 0. Put the checkmark on the “Use root option”.
If you have found this blog post useful and would like to buy me a cup of coffee, please click here :)