[APP][ROOT] zTorch Adjustable and extremely bright Flashlight - Verizon Samsung Galaxy S 4

EDIT: 11/15/2014
This post features version 2.x.x. It is a complete rewrite using Android Studio because importing the project from Eclipse didn't go too well.
For information on version 1.x.x , go to post #28
Downloads for both versions are at the bottom of this page.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
ZTORCH Features:
The goal of ZTorch is to be a extremely quick and lightweight app that does one thing and does it well without extra bloat or ridiculous permissions. ZTorch can vary the brightness of your phones LED and allow you to set brightness levels higher than possible anywhere else.
The Galaxy S4 is capable of 16 different levels of brightness (0-15). Compared to other Apps:
The stock "Assistive Light" that is featured with the phone only sets the level to 1.
The brightest AppStore Apps, such as TeslaLED, are able to set the brightness to a little less than half brightness, level 6.
Typically, flashlight apps take about a second to switch on the LED
ZTorch can adjust the LED in mere milliseconds.
ZTorch stays on when the screen is off and doesn't flicker when the screen switches off.
ZTorch works with the camera. Ever wanted to use the flashlight LED while recording a video or taking a picture? Now you can.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
ZTorch should work across all phones with root if the proper system file is on the phone. ZTorch scans for the following binaries below. If your device isn't supported and you know the path to the proper file, you can set that path in the apps preferences. This app has only ever been tested on the Galaxy S4, if you try it on a different phone, PLEASE let me know how it is!
Code:
"/sys/class/camera/flash/rear_flash", - For Galaxy s4
"/sys/class/camera/rear/rear_flash", - For Galaxy Note and maybe s3
"/sys/class/leds/flashlight/brightness," - HTC devices
"/sys/devices/platform/flashlight.0/leds/flashlight/brightness" - HTC devices
" /sys/class/leds/spotlight/brightness" - Motorolla Droid Devices
"/sys/class/leds/torch-flash/flash_light" - Motorolla Droid 2
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Screenshots from ZTORCH-beta-2.0.0.26.apk:
Main Activity as popup with widget shown in background.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Notification:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Permissions:
ACCESS_SUPERUSER - To set the LED
RECEIVE_BOOT_COMPLETED - Sets LED to 0, allows for persistent notification, notification on bootup.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Version Information:
Download attached at bottom of post.
LATEST: Version 2.0.3.50: (Feb 24, 2015)
Notification now appears on boot if that setting is enabled
Separated BootReceiver from main broadcast receiver so disabling the boot receiver won't break the rest of the app.
Notification icon changed to support Lollipop.
Renamed some app refs.
Somehow cut 50kb from the app, it's now 100.6Kb. Considering the Icons take up 89.5Kb I'm kinda amazed.
I haven't got around to making an actual Settings activity. So features are the same from prior version.
Version 1.2.2: (Mar 3, 2014) All the features work but is less refined.
Version 1.3.0: (June 16,2014) Added TorchPlayer to act similar to PWM. All Features work.
Version 1.4.0 (June 20,2014) Switching speed was the priority in this version; the brightness can be changed in <3ms. I abandoned the very comprehensive and powerful Stericson RootTools library in favor of a purpose built class that toggles the flashlight. Warning: The notification doesn't work on API-19 Android 4.4+. Clicking it does nothing. I need to build a new version sometime.
For more info on version 1.x.x such as the screenshots, see post #28
ZTORCH-beta-2.0.0.28: (November 15,2014) Beta version does not yet have a settings or preference activity implemented as well as other nonessentials. To change settings in this version, see below. Changes include:
Entirely new MainActivity that's now in a Popup window
Entirely New and Fully Working Notification
Widget now fills the entire 1x1 grid. (Let me know if there's problems, I set the left and right margins to -23dp to do this)
Added Warn feature and Torch Fireball icon for when the brightness is higher than the Warn value.
Slider no longer lags while trying to effectively "make a strobe light" by not sending broadcasts, updating views, or saving the brightness until after you take your finger off.
Slider changes color based on level.
ZTORCH-beta-2.0.0.33optimized: Technically should be: 2.0.2.33(November 16,2014) Changes:
Adds RECEIVE_BOOT_COMPLETE permission.
Ongoing Notification is available in AppPrefs.xml
TapGuard enabled by default. (Widget ignores first tap to prevent accidental taps)
ZTORCH-optimizedbeta-2.0.3.41: (November 17,2014) Changes:
New Notification AppPrefs.
ongoingNotif (Can't swipe away, Persistent).
onPriority and offPriority (levels: -2, -1, 0, 1, 2 where 2 is PRIORITY_MAX)
Shell Command Text and Toggle Button updated instantly while slider moves.
ZTorchReceiver enables you to send commands from other apps such as Tasker. Available broadcasts listed further down.
Fixed Force Close if the Main Toggle button is pressed and root was denied or the device is unsupported. (Not like you can use the app like this anyway, but still)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
BETA Version Settings
I'm still trying to figure out how android implements preferences and preference fragments. So in the beta, there is none! To change a setting, get a file browser with root access such as ES File Explorer, then navigate to the location below and edit the file "LEDPrefs.xml"
Code:
/data/data/derekziemba.ztorch/shared_prefs/
Additionally there is another file, "AppPrefs.xml" where you will find app specific settings and be able to configure the Notification.
"LEDPrefs.xml" will look like this on ZTORCH-beta-2.0.0.28. Later versions will be slightly different. I recommend uninstalling the app before installing a new beta.
default - The value the torch will turn on at when Toggled or Enabled.
inc - increment. Value the notifications "+" and "-" will increase or decrease by and the Widget will increase at if multitap = true;
multitap - If true, on successive widget taps the brightness will increase by the inc value. If false, brightness will toggle to default value;
wait - For multitap and tapguard. Time in milliseconds between successive widget taps to increase brightness. If more time than this has passed, the LED will shut off.
tapguard - To prevent accidental widget taps turning on the LED. If true, the widget ignores the first tap and waits for a second tap, unless the LED is already on.
min - just leave at 0, this is the "off" value, it is here in case some phones are reversed
max - maximum value on slider and the max value you can increment to. Only the first 3 digits of this will ever be used, giving a max possible value of 999.
warn - value at which the torch turns from yellow to a fireball and the slider begins changing colors from blue to yellow to red.
lvl - Current Brightness. There is no way to retrieve the current LED level, so the last value is stored here
sys - the system binary that controls the LED;
mask - bitmask. The brightness level is bitwise AND'ed with this value before executing the shell command to prevent invalid values. If you need help configuring this, use windows calculator and set it to programmer mode on Integer then click the bits you want to use, then use the integer value given.
"AppPrefs.xml" settings:
enableTorchOnAppLaunch - If true, opening the app will automatically set the brightness to the default value listed in "LEDPrefs.xml". Default is "false"
persistentNotif - If true, the notification will be persistent and it cannot be swiped away. Default is "false"
showNotifOnBootComplete - Posts the notification when BOOT_COMPLETE is received for easy access. Use with persistentNotif to prevent swiping away. Default is "true"
Notification Priorities. There are 5: MIN(-2), LOW(-1), DEFAULT(0), HIGH(1), and MAX(2). More info here: http://developer.android.com/design/patterns/notifications.html#guidelines
notifPriorityTorchON - Notification Priority when the LED is on. Default is "2"
notifPriorityTorchOFF - Notification Priority when the LED is off. Default is "-1". Versions before 2.0.3.41 including 1.x.x are hardcoded at "-2"
Important: Before changing any settings, be sure to kill ZTorch with a task manager. Otherwise the settings will not take effect and they will be overwritten when the app gets sent to the background.
If you mess up the settings ZTorch will force close on launch. Delete the XML file to restore defaults.
Strobe Light:
You can get some pretty cool stobbing effects by changing the "mask" and "max" settings.
If you set the "max" value to something like 200 with the mask set to 15 (0000-1111), when sliding the slidebar from 0 to 200, the actual brightness set will repeat 0-15 over and over.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Setting Brightness from other apps such as Tasker, using ZTorch's BroadcastReceiver
I still have to test if this works, but in theory it should. The ZTorchReceiver supports the actions below.
Code:
"derekziemba.ztorch.UPDATE_LEVEL"; //Service will check for extra Integer under the key "lvl" and set that brightness if it is valid.
"derekziemba.ztorch.WIDGET_TAP"; //Behave as if the widget was just tapped. MultiTap, TapGuard, and Wait apply.
"derekziemba.ztorch.STEP_UP"; //Increment Brightness by increment value
"derekziemba.ztorch.STEP_DOWN"; //Decrement Brightness by increment value
"derekziemba.ztorch.INCREASE"; //Increase Brightness by 1
"derekziemba.ztorch.DECREASE"; //Decrease Brightness by 1
"derekziemba.ztorch.ENABLE"; //Turn on torch at default level
"derekziemba.ztorch.DISABLE"; //Turn off torch
"derekziemba.ztorch.TOGGLE"; //Toggle the torch opposite its current state.
---------------------------------Internal---------------------------
"derekziemba.ztorch.UPDATE_FROM_MAIN"; //From main activity, prevents service from broadcasting UPDATE_FROM_SERVICE and cause an endless loop. Contains extra Integer under key "lvl"
"derekziemba.ztorch.UPDATE_FROM_SERVICE"; //Sent from the Service to Main, this one is Unregistered when Main is not visible. It is still sent by the service.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Important Note Regarding Brightness:
For default settings I have the max LED value set to 13 because I've experienced flicker. Values higher than 10 change the color of the slider to red and the widget and notification flame from yellow to fireball. Flicker occurs when your battery voltage is to low to support the current level of brightness.
To avoid LED flicker:
>3800+mV or ~50% is needed for Levels >=13.
> 3750mV or ~30% is needed for Levels > 9.
> 3600mV or ~10% is needed for Levels > 7.
I have used my app to work several hours in an attic at brightness 11. I used my phone because it's actually significantly brighter than every flashlight I own. That includes a flashlight with a 6V cell, a 3 LED headlamp, and a 4 battery AAA LED flashlight. My only light that beat it was my spotlight, but the spotlight's beam is too focused whereas the phone lights up everything.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Note: Android displays the build version as 1 higher than the file name. So Android will show version 2.0.3.41 as 2.0.3.42. This is caused by some Gradle Build Config bug.

I use the torch a lot so I just downloaded this and I'll definitely let you know how it goes. Thanks!
Verizon S4
Liquid Smooth 4.4
Sprint S4
Negalite 4.4

Great app. Been using it for a few days with no issues. Love the incremental increases/decreases.
Anyway to get this to stay in the notification drop down?
Sent from my SCH-I545 using Tapatalk 2

rahilkalim said:
Great app. Been using it for a few days with no issues. Love the incremental increases/decreases.
Anyway to get this to stay in the notification drop down?
Sent from my SCH-I545 using Tapatalk 2
Click to expand...
Click to collapse
I might be able to implement that as a setting quick when I get home. And maybe add an option to make it half height too if it's going to be persistent.

DerekZ10 said:
I might be able to implement that as a setting quick when I get home. And maybe add an option to make it half height too if it's going to be persistent.
Click to expand...
Click to collapse
That would be great. Thanks.
Sent from my SCH-I545 using Tapatalk 2

rahilkalim said:
That would be great. Thanks.
Sent from my SCH-I545 using Tapatalk 2
Click to expand...
Click to collapse
Just updated it. Here's what's new:
Settings Activity has had a makeover. The question mark on the side will explain what the settings do. The image on the left shows what it looks like if the Persistent Notification and the Minimizing Notification toggles are enabled. The right shows what it looks like with the Minimizing Notification toggle off. Notice that when the Minimizing Notification toggle is disabled, zTorch's icon is in the notification bar.
Here is what zTorch looks like in the notification drop down with minimization enabled. The left screenshot is with zTorch minimized. In this state the icon is not in the notification bar. The screenshot ion the right shows the notification expanded with the minimize option enabled, In this state the icon will show up in the notification bar.
Disabling Notification minimization but keeping Persistent notification enabled will cause the notification to appear like the left and middle screenshots. When the Torch is off, only an Activate LED button is present. If there are a large number of other notification, the notification will shrink up. With the Torch on more buttons become available as seen in the middle screenshot. The rightmost screenshot is the notification with both the persistent notification and notification minimization disabled.
Note: This version 1.2.0 has some rough edges. I'll polish it when I have more time. In the future the Settings activity will also be changed to an actual Android Settings layout instead of a generic layout.
EDIT: Version 1.2.1 rounds out those edges.

Now that school is out, I'll be updating and posting the source code on github soon

DerekZ10 said:
Now that school is out, I'll be updating and posting the source code on github soon
Click to expand...
Click to collapse
Great job, works great!

This looks great. Do you have any plans to update this for nc5 4.4.2 compatibility?
Sent from my SCH-I545 using Tapatalk

klabit87 said:
This looks great. Do you have any plans to update this for nc5 4.4.2 compatibility?
Sent from my SCH-I545 using Tapatalk
Click to expand...
Click to collapse
This is why I wanna get the source code up. So others can compile it for their versions. I'm running Android 4.2.2 Eclipse 2.0 Rom. It's all customized and set up the way I like, and it's been very reliable. I'm not sure when I will get around to upgrading. Every rom I have tried as a replacement has had problems.
I haven't got around to posting the source code because there was suddenly some issues with the build? I opened the project the other day and was told I needed to upgrade things, I did and now every object and include directive is underlined in red. I looked at it for about a minute before deciding I'll figure it out some other day. Haven't got around to it since.

Oh ok. I was just wondering. Looking forward to the source so we can have it work for updated android versions someday.
Thanks.
Sent from my SCH-I545 using Tapatalk

klabit87 said:
Oh ok. I was just wondering. Looking forward to the source so we can have it work for updated android versions someday.
Thanks.
Sent from my SCH-I545 using Tapatalk
Click to expand...
Click to collapse
Here's the Source Code Everyone, Good Luck! Everything for the project should be on GitHub including external libraries and the .psd files for the icons.
https://github.com/DerekZiemba/zTorch
I haven't been able to build this or other projects since upgrading the SDK and the Eclipse ADT. I'm not getting any errors, I just get "export build failed." Not sure what to do, maybe reinstall everything. Hopefully someone here can get it working. I just really don't have enough time. In fact the whole project was born out of procrastinating a huge report I didn't want to do for school.

I have everything working again and the source code should build the most stable recent version. The 1.3 beta version is on my dropbox now. This version is a work in progress and the new TorchPlayer feature is not in a working state, but everything else works as usual.
I'm releasing this build before this new feature is working so people with newer versions of android can use the apps pre-existing features.
Here is basically what TorchPlayer is and how it will effect the app in future versions:
Once working properly it will be used to define increment steps for things such as rapid-tap and consecutive-tap (currently double-tap). The time element of these steps will define the max time the LED will stay lit before (likely) dropping down a step. It will be a way to prevent the LED being lit in your pocket all day and limiting the max LED brightness to a defined time.
TorchPlayer will eventually allow you to name and save sequences and have a repeat mode so you can use it as a strobe light. I'm not sure yet how fast the LED can be switched on and off. I might also look into having the sequence controlled by Morse code using dots and dashes.
For this to work I have to figure out, basically, multi-threading(handlers, runnables, threads) and a few other things such as Gson or SQLite.
NOTE: Installing this version messed up my widget. If it happens to you just delete it and re add it to fix.

Shown below is version 1.3 beta 4. I've found that I can strobe the led light ridiculously fast. I haven't encountered the limit yet at even the 5 millisecond intervals. At 5millis the LED is flashing so fast that it is almost becoming steady. With this it may be possible to set custom "LightTones" for certain things like you do with ring tones.
EDIT:
Beta 5 added ability to duplicate several values to save on typing as seen below: Also note, the parenthesis and spaces don't actually matter and are only there to make it easier on me to read. The input is sanitized using: String scheme = behavior.replaceAll("[^0-9/sm,.*&]+",""); So only numbers, the letters s and m, and the symbols / , . * & matter. If a brightness value is out of range that command is ignored.
Here is a video of what the above TorchPlayer string yields.
https://www.youtube.com/watch?v=c1lwTHZwr-M&feature=youtu.be

DerekZ10 said:
I have everything working again and the source code should build the most stable recent version. The 1.3 beta version is on my dropbox now. This version is a work in progress and the new TorchPlayer feature is not in a working state, but everything else works as usual.
I'm releasing this build before this new feature is working so people with newer versions of android can use the apps pre-existing features.
Here is basically what TorchPlayer is and how it will effect the app in future versions:
Once working properly it will be used to define increment steps for things such as rapid-tap and consecutive-tap (currently double-tap). The time element of these steps will define the max time the LED will stay lit before (likely) dropping down a step. It will be a way to prevent the LED being lit in your pocket all day and limiting the max LED brightness to a defined time.
TorchPlayer will eventually allow you to name and save sequences and have a repeat mode so you can use it as a strobe light. I'm not sure yet how fast the LED can be switched on and off. I might also look into having the sequence controlled by Morse code using dots and dashes.
For this to work I have to figure out, basically, multi-threading(handlers, runnables, threads) and a few other things such as Gson or SQLite.
NOTE: Installing this version messed up my widget. If it happens to you just delete it and re add it to fix.
Click to expand...
Click to collapse
For some reason the toggle doesn't show in my drop down now, any ideas?

shindiggity said:
For some reason the toggle doesn't show in my drop down now, any ideas?
Click to expand...
Click to collapse
Just confirmed it is a bug. To get the notification to show you need to switch the torch on once. It'll stay in the dropdown after.
I'll try to get a new build together soon. I learned a few things about Android the other day that made me realize my code was overly complicated and difficult to work with, much more so than it ever needed to be. So I actually started a total rewrite since that version that I want to get perfect.
The new version is a different app all together, the system and launcher will see it as zTorch-L. The L stands for it really being the "Lite" version, in app it will refer to it self as zTorch-Lightning. I decided that the TorchPlayer feature went against the whole purpose of making my own app in the first place. I created it to be fast, simple, no-bs or bugs, do one thing and do it well. What I wanted out of TorchPlayer would cause the app to loose focus of its goal, so I started this new version that would be just that.
Because I want it to be totally finished before releasing, I'm not going to post a link to it here. The code wouldn't even compile if I tried. But if you really rely on the notification being in the dropdown PM me. I have an alpha version I compiled before going to far in to rewriting the code. Everything works great AFTER some tweaking first.
Initially it is inoperable unless, starting from the root directory, you navigate to the following file:
Code:
/data/data/derekziemba.ztorchL/shared_prefs/derekziemba.ztorchL_preferences.xml
Open it, delete what ever is in it, then paste the below text :
Code:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="flash_current_value" value="0" />
<int name="tap_time" value="900" />
<int name="brightness_increment_steps" value="3" />
<int name="default_value" value="8" />
<int name="flash_limit_value" value="13" />
<boolean name="rapid_tap" value="true" />
<boolean name="persistent_notif" value="true" />
<boolean name="mini_notif" value="true" />
</map>

I sent you a PM, be happy too.
DerekZ10 said:
Just confirmed it is a bug. To get the notification to show you need to switch the torch on once. It'll stay in the dropdown after.
I'll try to get a new build together soon. I learned a few things about Android the other day that made me realize my code was overly complicated and difficult to work with, much more so than it ever needed to be. So I actually started a total rewrite since that version that I want to get perfect.
The new version is a different app all together, the system and launcher will see it as zTorch-L. The L stands for it really being the "Lite" version, in app it will refer to it self as zTorch-Lightning. I decided that the TorchPlayer feature went against the whole purpose of making my own app in the first place. I created it to be fast, simple, no-bs or bugs, do one thing and do it well. What I wanted out of TorchPlayer would cause the app to loose focus of its goal, so I started this new version that would be just that.
Because I want it to be totally finished before releasing, I'm not going to post a link to it here. The code wouldn't even compile if I tried. But if you really rely on the notification being in the dropdown PM me. I have an alpha version I compiled before going to far in to rewriting the code. Everything works great AFTER some tweaking first.
Initially it is inoperable unless, starting from the root directory, you navigate to the following file:
Code:
/data/data/derekziemba.ztorchL/shared_prefs/derekziemba.ztorchL_preferences.xml
Open it, delete what ever is in it, then paste the below text :
Code:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="flash_current_value" value="0" />
<int name="tap_time" value="900" />
<int name="brightness_increment_steps" value="3" />
<int name="default_value" value="8" />
<int name="flash_limit_value" value="13" />
<boolean name="rapid_tap" value="true" />
<boolean name="persistent_notif" value="true" />
<boolean name="mini_notif" value="true" />
</map>
Click to expand...
Click to collapse

shindiggity said:
I sent you a PM, be happy too.
Click to expand...
Click to collapse
So you guys don't have to keep using that version if you don't want to, try the zTorch-Lightning_v1.Alpha2 . There's a lot of stuff to do yet, but all the basics are working.
You'll notice the notification is way more responsive and that it no longer does that thing "refresh flash" when switching to different notification styles. It responds instantly to setting changes now too.
When tapping the 1x1 incremental widget, the LED is now set to turn on before the system broadcast and before the on screen widget lights up instead of the other way around.
http://db.orangedox.com/FBzt4wNNfVu1xIMc0W/zTorch-Lightning_v1.Alpha2.apk

This is just what i have been looking for!! So what kind of licensing is your code on git under?
Adjustable flash brightness is just what i want to look adding to my Camera app. I need something lower intensity than the stock.
Unfortunately, I am unable to test this app as my rooted devices don't have flash.

hotspot_volcano said:
This is just what i have been looking for!! So what kind of licensing is your code on git under?
Adjustable flash brightness is just what i want to look adding to my Camera app. I need something lower intensity than the stock.
Unfortunately, I am unable to test this app as my rooted devices don't have flash.
Click to expand...
Click to collapse
Free to use as long as you don't repackage it as is but with ads or put a price on the app. However if you are creating your own app and just want to use the flashlight feature, you can use the below code however you want. I think the git code is way out of date, I worked on it a bit a while ago and I don't think I comited it. I've gotten busy and haven't had a chance to work on it in months.
Here is the code for directly changing the brightness. Free to Use however you wish.
Here is the Shell Class. The Static Methods create and maintain the superuser shell. Therefor a command can be executed app wide on a single shell instead of creating multiple Shell instances.
Code:
package derekziemba.misc;
import java.io.*;
public class Shell {
private static Shell rootShell = null;
private final Process proc;
private final OutputStreamWriter writer;
private Shell() throws IOException {//Open with Root Privileges
this.proc = new ProcessBuilder("su").redirectErrorStream(true).start();
this.writer = new OutputStreamWriter(this.proc.getOutputStream(), "UTF-8");
}
private void cmd(String command) {
try{ writer.write(command+'\n'); writer.flush();}
catch(IOException e) { }
}
public void close() {
try {
if (writer != null) { writer.close();
if(proc != null) { proc.destroy(); }
}
} catch (IOException ignore) {}
}
public static void exec(String command) { Shell.get().cmd(command); }
public static Shell get() {
if (rootShell == null) {
while (rootShell == null) {
try { rootShell = new Shell(); }
catch (IOException e) { }
}
}
return rootShell;
}
}
}
Here is what is used for setting the flash brightness. I stripped out all the app logic. SetLevelCovertly is the actual method used for setting the brightness. It is what the TorchPlayer uses to directly change the brightness in just milliseconds. The stripped away normal SetLevel method records the brightness, triggers the broadcasts, sets the widgets, and fires the notification. There is no way of getting the current flashlevel brightness since my Shell implementation is just for blasting commands at the terminal. Anything more will slow it down.
The listOfFlashFiles is a bunch of different files different phones may use. I've only ever tested the samsung file.
Code:
import java.io.File;
import derekziemba.misc.Shell;
public class Torch
{
private static String FLASH_FILE = null;
private static final String[] listOfFlashFiles = {
"/sys/class/camera/flash/rear_flash",
"/sys/class/camera/rear/rear_flash",
"/sys/class/leds/flashlight/brightness",
"/sys/devices/platform/flashlight.0/leds/flashlight/brightness",
"/sys/class/leds/spotlight/brightness",
"/sys/class/leds/torch-flash/flash_light"
};
/**
* Bypasses all checks and settings and just sets the value. The app will not know what the level is because it is not recorded.
* Will not trigger broadcast, widget views, notification
*/
public static void setLevelCovertly(int value) { Shell.exec("echo " + value + " > "+ getSysFsFile()); }
public static String getSysFsFile() {
if (FLASH_FILE != null) return FLASH_FILE;
for (String filePath : listOfFlashFiles) {
File flashFile = new File(filePath);
if (flashFile.exists()) { FLASH_FILE = filePath; }
}
return FLASH_FILE;
}

Related

[UTILITY] Battery calibration tools

This thread is for those following the battery calibration thread that would like to help build tools to read and set some advanced battery values, and ultimately recalibrate in learning mode.
It takes its inspiration from this forum thread over at precentral :
http://forums.precentral.net/palm-pre/256967-find-out-how-good-bad-your-battery.html
See HOW-TO in post 3 below, or in-thread post from mtw4991, for instructions on using app to calibrate
reference material
battery manufacturer technical info
DS2784 data sheet - http://datasheets.maxim-ic.com/en/ds/DS2784.pdf
Storing Fuel Gauge Parameters in the DS2784 - http://pdfserv.maxim-ic.com/en/an/AN4043.pdf
Lithium-Ion Cell Fuel Gauging with Maxim Battery Monitor ICs - http://pdfserv.maxim-ic.com/en/an/AN131.pdf
code
cyanogenmod github repository / kanged HTC code - http://github.com/CyanogenMod/cm-kernel/blob/android-msm-2.6.34/drivers/power/ds2784_battery.c
HTC Desire - http://developer.htc.com/ (use HTC Desire kernel source code download)
edit 2010/11/17: source code for battery driver mods - http://github.com/thelogin/n1batcal/
edit 2010/12/15: source code for app -
app availability
available from the Android Marketplace
link: https://market.android.com/details?id=net.jonrichards.batterycalibrator.ui (thanks, McFroger3!)
reference info
thread at precentral which was the inspiration for this thread - http://forums.precentral.net/palm-pre/256967-find-out-how-good-bad-your-battery.html
spreadsheet of registers - https://spreadsheets.google.com/ccc...VNzdXpqWVdFejNGM1pLWmc&hl=en&authkey=CJ_ItagO
related apps
Dr. Battery on the Pre - http://discussion.treocentral.com/homebrew-apps/260947-dr-battery.html
specific code references
(with reference to the manufacturer battery info above)
1 - CONTROL REGISTER FORMAT - page 12 - UVEN—Undervoltage Enable
1 - CAPACITY ESTIMATION ALGORITHM - page 21 - Figure 3: Top-Level Algorithm Diagram
1 - page 24
from Active Empty Voltage (VAE) - includes Aging Capacity (AC) and Age Scalar (AS)
CAPACITY ESTIMATION OPERATION - Learn Function ("A continuous charge from empty to full results in a learn cycle." then "First, the active empty point must be detected."!!)
1 - page 25 - STATUS REGISTER FORMAT
(to be completed)
with thanks to RogerPodacter for his help in compiling this list
progress status and useable findings
status
we have made mods to the kernel code (based on 2.6.35.x) to
make any register writable
make the following registers readable: AGE, Vae (ACTIVE_EMPTY_VOLT), and Status Reg (STS)
allow read/write of these registers via virtual files
remove pseudo-extended battery charging
edit 2010/11/17: created a "dumpreg" file to show all registers and their current values
edit 2010/11/17:
work is being done on a GUI app with the following initial functionality:
show when learn mode is hit
save age when learn mode is complete
the following functionality may be in:
option to restore age when app launched
HOW-TO
mtw4991 said:
How to calibrate your battery using the Battery Calibrator App....
(original text: http://forum.xda-developers.com/showpost.php?p=9583271&postcount=340)
1. Use the battery calibrator app v.1.3.0 to do the following:
a. Open the app and go to menu>settings and check all boxes. Auto-on airplane mode is optional
b. set your age to 100 using the battery app under the Learn Prep tab and press Save
c. set your full40 to 1452mAh in the same tab if using the stock capacity OEM battery and press Save
NOTE: set your full40 to 1650mAh or higher if using an aftermarket battery and save
2. In the Learn Prep tab:
a. set your aEvolts to 3201 (type on each line: Register:0x 66 Value: a4 and press save)
b. set your stop charging current to <20mA (Register:0x 65 Value: 06 and press save)
c. if Capacity/mAh drops to near empty prior to 3201mV being reached, the app will automatically raise capacity by 200mAh so phone doesn't auto-shutdown prior to reaching 3201mV
3. Achieving Learn Mode with the app:
a. turn learn mode on in Learn Mode tab
NOTE: to hit learn mode you must keep your current mA above -200mA draw at the empty point! The app will automatically enable GPS polling to keep you above the required minimum current draw.
b. wait for mV to drop to 3201mV (the learn mode pop-up box will appear & learnf button will light up)
c. insert charger IMMEDIATELY! (You will see a pop-up message saying Learn Mode is active.)
d. turn off and close any open apps you have running, but leave Battery Calibrator open.
e. put phone into airplane mode so that you don’t get unexpected current draw near the full point.
f. set SetCPU profile to disable overclocking. (set min/max to the same value, ie. 998\998max)
g. charge for a full 4 hrs with stock battery and screen off, 5 hrs for larger capacity batterys.
NOTE: if you want to, you can actually use your phone until the charge reaches 80-90%, then use airplane mode and DO NOT touch the phone, peek, turn on the screen....DO NOTHING but walk away til time is up.
h. unplug and reboot, your new age should be set automatically. Learn is now complete and your phone should now charge to 100% and die at 0-1%. Also, some have reported having to manually power down/power up with the new app to have age reset by the application. If age isn’t change upon reboot, try power off/power on.
4. Learn Failure:
If your new age shows 94% upon rebooting, then learn mode failed and you need to do it again, paying close attention as charging nears 80% and above. This is where learn mode can be lost by rogue apps, auto-updates, calls, etc pulling the current down below the minimum prematurely.
Note1: As current gets close to <50-60mA don't touch the phone or you may artifically increase the current draw pulling it below 20mA and it will end the learn cycle prematurely. Airplane mode helps prevent that.
Note2: Learn mode cannot be achieve with the phone off. Leave the phone on until learn is complete and the battery status register shows 0x81. Done!
How to perform a Capacity Test for your battery. Credit goes to the infamous Temasek!
Prepare for another learn cycle
This time we will do what I call a capacity test.
Perform another learn cycle.
Once cycle completed do not reboot. Check your battery log using an app like OS Monitor. See your highest achieved capacity at 99-100% before it completed its charge. The capacity should drop below your full40. Read the log properly. The highest achieved capacity before it drop below your full40 will be your new full40 value.
With your new full40 value, perform yet another learn cycle.
Enjoy your new calibrated battery!
Click to expand...
Click to collapse
HOW-TO2:
http://forum.xda-developers.com/showpost.php?p=24599586&postcount=284 (as requested by St4hli)
Initial investigation and analysis
OK, so I'm going to try and use the following repositories in github and in this order:
AOSP > pershoot > CyanogenMod > others
as I'd like it as generic as possible and ideally integrate any patches at the highest level.
Not being an expert in github, you'll have to excuse any obvious noobness! I couldn't see any of the 2784 battery stuff in AOSP so I'm guessing the CM team used the Desire kernel source from developer.htc.com to integrate the files. Actual code here:
http://member.america.htc.com/download/RomCode/Source_and_Binaries/bravo_54b7033a.tar.gz
------
At:
http://github.com/CyanogenMod/cm-kernel/blob/android-msm-2.6.34/drivers/power/ds2784_battery.c
we see device info struct as:
Code:
char raw[DS2784_DATA_SIZE]; /* raw DS2784 data */
struct battery_status status;
struct power_supply bat;
struct workqueue_struct *monitor_wqueue;
struct work_struct monitor_work;
struct alarm alarm;
struct wake_lock work_wake_lock;
with battery_status struct as:
Code:
u8 percentage; /* battery percentage */
u8 charge_source;
u8 status_reg;
u8 battery_full; /* battery full (don't charge) */
i.e. not many properties.
However, from the corresponding include file at:
http://github.com/CyanogenMod/cm-kernel/blob/android-msm-2.6.34/drivers/power/w1_ds2784.h
there are lots of defined registers, including several AGE and FULL_40.
Our 2784 code has both read and write functions (w1_ds2784_read/write), which are used in function ds2784_battery_read_status.
** Objective 1**
title:
to read some additional values such as AGE and FULL_40 and output them.
suggested implementation:
add in some other properties corresponding to AGE and FULL_40 values, populate these in the read function, parse them in the parse_data function, then output them at line 325 of the ds2784_battery.c file. Yes there will be lots of repetition, but the code is easily and quick to modify.
ideal implementation:
write a new app that outputs these but also outputs the status_reg value too. We can then use this to determine if and when our batteries go into "learning" mode. More below.
code-level:
1) modify struct battery_status, adding:
Code:
u16 age;
u16 full_40;
etc, with any other interesting ones too. Might as well grab all of them and output so we can hand-pick the ones that are useful.
2) from line 244 in parse_data, add something like:
Code:
s->age = raw[DS2784_REG_AGE_SCALAR];
etc
may have to convert from hex.
*****************
THEN I opened the HTC ds2784_battery.c and was amazed at what I saw!
*****************
*their* battery_info struct contains:
Code:
u8 level; /* formula */
u8 level_last;
u32 full_bat; /* Full capacity of battery (mAh) */
u32 full_level; /* Full level for battery control */
u8 guage_status_reg;/* guage status*/
u32 acr;
u32 active_empty;
their ds2784_device_info struct:
Code:
int guage_status_reg; /* battery status register offset=01h*/
int full_mah; /* battery full mah */
long full_charge_count; /* Full charge counter */
int acr;
int active_empty;
int full_level; /* Full level for battery control */
OK nothing earthshattering so far, BUT their Calculate_Full_mAh function uses the FULL_40 stuff.
** Objective 2 **
title: write values to registers
implementation: to be discussed once we have the values from Objective 1 and we still need it (i.e. learning mode does not exist or work to recalibrate).
Wrap-up:
The HTC charging code (from line 854) uses the following logic:
Code:
percent < 95, batt full = false
if status_reg = full and current <= 80 and percent = 100
then *IF IT HAS BEEN ONE HOUR OR MORE ON FULL CHARGE*!!!
then stop charging
WOW.
Nice thread. I'll give you a hand with this. Do you still need help getting your kernel compiling set up?
dvgrhl said:
Nice thread. I'll give you a hand with this. Do you still need help getting your kernel compiling set up?
Click to expand...
Click to collapse
yeah - how best to do this? what about gtalk? <mylogin>@gmail.com if you are OK with that. Will be online in two mins
loginwithnoname, very nice summary and overview. the HTC driver is what most interests me. i guess there would be zero chance of using the HTC code and logic, since it seems they A) use the better values of full_capacity, etc rather than the nexus "conservative" estimation. and B) theirs looks a little more straight forward than the nexus one.
where did you find the HTC driver? i cant seem to find it.
nice work!
just in case you still interested, here is the AOSP source code that pershoot used. well he used his code, then he posted this link in the other thread and said this is his current source he's using.
EDIT: sorry i meant this link
EDIT2: geez, still was cm code. i'll find it real quick.
finally:
http://android.git.kernel.org/?p=ke...54cfa3b22c61dd50eae;hb=android-msm-2.6.35-wip
RogerPodacter said:
the HTC driver is what most interests me. i guess there would be zero chance of using the HTC code and logic, since it seems they A) use the better values of full_capacity, etc rather than the nexus "conservative" estimation. and B) theirs looks a little more straight forward than the nexus one.
Click to expand...
Click to collapse
I think their code is old-hat given what we've done in the other thread, apart from the fact they wait an hour before deeming the battery "fully charged". I don't think as techies/devs we need that though.
thelogin said:
I couldn't see any of the 2784 battery stuff in AOSP so I'm guessing the CM team used the Desire kernel source from developer.htc.com to integrate the files. Actual code here:
http://member.america.htc.com/downlo...4b7033a.tar.gz
where did you find the HTC driver? i cant seem to find it.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
aw, come on Rog! that'll be http://developer.htc.com then click the download button for HTC Desire kernel source code
theloginwithnoname said:
I think their code is old-hat given what we've done in the other thread, apart from the fact they wait an hour before deeming the battery "fully charged". I don't think as techies/devs we need that though.
aw, come on Rog! that'll be http://developer.htc.com then click the download button for HTC Desire kernel source code
Click to expand...
Click to collapse
ha i found the HTC developer site, and grabbed the 74mb source kernel for the desire, but i'm at my work computer which i have no admin rights to do anything. how could i view that code? i was hoping for online repositories like github.
RogerPodacter said:
i'm at my work computer which i have no admin rights to do anything. how could i view that code? i was hoping for online repositories like github.
Click to expand...
Click to collapse
It's a .tar.gz so you need to unzip it then extract it. If you're on Windows, I'm told WinZip will unzip/extract it for you (I used 7-Zip); if you're on linux, tar -zxvf <file>.tar.gz will do it for you...
i wont clutter up this thread anymore, but winzip was the first thing i tried. its a strange winzip used here though, so its expected.
theloginwithnoname said:
** Objective 1**
title:
to read some additional values such as AGE and FULL_40 and output them.
suggested implementation:
add in some other properties corresponding to AGE and FULL_40 values, populate these in the read function, parse them in the parse_data function, then output them at line 325 of the ds2784_battery.c file. Yes there will be lots of repetition, but the code is easily and quick to modify.
ideal implementation:
write a new app that outputs these but also outputs the status_reg value too. We can then use this to determine if and when our batteries go into "learning" mode. More below.
Click to expand...
Click to collapse
rather than doing it at line 325, wouldnt it make more sense to modify lines 103-118:
PHP:
unsigned n;
mutex_lock(&battery_log_lock);
seq_printf(sf, "timestamp mV mA avg mA uAh dC %% src mode reg full\n");
for (n = battery_log_tail; n != battery_log_head; n = (n + 1) & BATTERY_LOG_MASK) {
struct battery_status *s = battery_log + n;
seq_printf(sf, "%9d %5d %6d %6d %8d %4d %3d %s %s 0x%02x %d\n",
s->timestamp, s->voltage_uV / 1000,
s->current_uA / 1000, s->current_avg_uA / 1000,
s->charge_uAh, s->temp_C,
s->percentage,
battery_source[s->charge_source],
battery_mode[s->charge_mode],
s->status_reg, s->battery_full);
}
mutex_unlock(&battery_log_lock);
return 0;
how easy would it be to just add on to this? i suck bad a code and talk out my arse, barely enough to see what's going on. i dont even know where to come up with
seq_printf(sf, "%9d %5d %6d %6d %8d %4d %3d %s %s 0x%02x %d\n",
which seems like where the actual data is coming from for each parameter being output. cant we just add our get_full40, scalar, etc onto that output string?
theloginwithnoname said:
code-level:
1) modify struct battery_status, adding:
Code:
u16 age;
u16 full_40;
etc, with any other interesting ones too. Might as well grab all of them and output so we can hand-pick the ones that are useful.
2) from line 244 in parse_data, add something like:
Code:
s->age = raw[DS2784_REG_AGE_SCALAR];
etc
may have to convert from hex.
Click to expand...
Click to collapse
I think the parse function is line 320, i dont see anything at line 244. so the parse and then pr_info is what is output when we see our dmesg log? for the simplest and quickest result, i think adding registers to the batt_log i posted up above would be the path of least resistence, no? (ignore if i make no sense, i'm noob with code).
then objective 2 would be writing back to the register...
this driver also talks about read/write the bits, which i dont know if we looked thru this one yet. its definitely part of all this i think.
cm-kernel / drivers / w1 / w1.h
http://github.com/CyanogenMod/cm-kernel/blob/android-msm-2.6.34/drivers/w1/w1.h
at least i hope it is relevant!
theloginwithnoname said:
yeah - how best to do this? what about gtalk? <mylogin>@gmail.com if you are OK with that. Will be online in two mins
Click to expand...
Click to collapse
Sorry man, I had a hell of a day at work and didn't even get on IM at all or check back on this thread. My IM is my name at gmail.com, so tomorrow I will make sure to be online if you want. I am PST. Have you tried following the guide here: http://wiki.cyanogenmod.com/index.p...m_source#Install_development_support_packages? I assume so. Where do you get stuck at?
Definitely looking forward to this
Something like the Desire one would be nice too,
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
I've been wanting to check the "health" of my battery like how they do on Thinkpads forever.
It shows values like "Design Capacity" & "Full Charge Capacity" to let you see how much your battery is worn. Sometimes I feel like my battery life issues is not with Cyanogen but with the actual battery itself (bought it 2 months used so i dunno how well the other person treated it, came in box and had all original stuff (sealed) tho no scratches!! ) I was thinking to buy another battery and see but might as well get a Seidio then if that's the case
So in that case, the main battery should be "1400 mAh" battery but maybe it's current charge capacity is only 1000mAh so that's why my talk/usage time is low.
Not sure this helps, but just to spark some thinking i grabbed this from page 25 of the spec sheet for the ds2784.
http://datasheets.maxim-ic.com/en/ds/DS2784.pdf
STATUS REGISTER FORMAT
The status register contains bits that report the device status. All bits are set internally. The CHGTF, AEF, SEF, and LEARNF bits are read only. The UVF and PORF bits can be cleared by writing a zero to the bit locations.
PHP:
ADDRESS 01h
BIT 7 - CHGTF
BIT 6 - AEF
BIT 5 - SEF
BIT 4 - LEARNF
BIT 3 - X
BIT 2 - UVF
BIT 1 - PORF
BIT 0 - X
CHGTF—Charge-Termination Flag. CHGTF is set to indicate that the voltage and average current register values have persisted above the VCHG and below the IMIN thresholds sufficiently long to detect a fully charged condition. CHGTF is cleared when RARC is less than 90%. CHGTF is read only.
AEF—Active-Empty Flag. AEF is set to indicate that the battery is at or below the active-empty point. AEF is set when the voltage register value is less than the VAE threshold. AEF is cleared when RARC is greater than 5%. AEF is read only.
Click to expand...
Click to collapse
good spot Rog - I might need to decompile all the tech info and add it as a technical analysis post here. Will be a few days before I can do this though.
I'll post these links here for completeness, it kinda wraps everything up with examples of everything. You really should read when you have a sec.
http://pdfserv.maxim-ic.com/en/an/AN3584.pdf
http://pdfserv.maxim-ic.com/en/an/AN131.pdf
http://pdfserv.maxim-ic.com/en/an/AN4043.pdf
http://pdfserv.maxim-ic.com/en/an/AN3463.pdf
been looking over the code, and i'm pretty sure for phase #1, step #1, to grab the info we need we'd have to add the following line 51, line 224-226, and line 325 and 331:
we need to define the additional variable:
PHP:
48 int current_avg_uA;
49 int charge_uAh;
51 int full40_uAh /*This variable added*/
We need to parse the additional data (MSB and LSB for full40):
PHP:
221 /* RAAC is in units of 1.6mAh */
222 s->charge_uAh = ((raw[DS2784_REG_RAAC_MSB] << 8) |
223 raw[DS2784_REG_RAAC_LSB]) * 1600;
224 /* full40 has same conversion units of 1.6mAh */
225 s->full40_uAh = ((raw[DS2784_REG_FULL_40_MSB] << 8) |
226 raw[DS2784_REG_FULL_40_LSB]) * 1600;
and finally, simplest way i see it is to just add it to the dmesg log (at least right now, later we can do whatever with it):
PHP:
ds2784_parse_data(di->raw, &di->status);
324
325 pr_info("batt: %3d%%, %d mV, %d mA (%d avg), %d.%d C, %d mAh, %d full40 mAh\n",
326 di->status.percentage,
327 di->status.voltage_uV / 1000, di->status.current_uA / 1000,
328 di->status.current_avg_uA / 1000,
329 di->status.temp_C / 10, di->status.temp_C % 10,
330 di->status.charge_uAh / 1000,
331 di->status.full40_uAh / 1000); /*added this output to dmesg log*/
332 return 0;
333 }
the only thing i am not sure on is the conversion units for full40, i cant find it yet. we could just not convert it at all and end up with a large raw value, but that would mess up the dmesg log readability. for above i just assumed it was the same conversion as charge capacity (very well could be the same).
next i'll attempt the same for age scalar.
besides, there is another way to find the full40 value, its the one that your dmesg log jumps to when you hit full charge, but you have to be at +40 C temperature (that's what full40 is, its the max our battery can hold at 40C since the higher the temp, the more capacity our battery can hold). in my case, my getfull40 is 1369 mAh.
should i post this in the battery thread and see if pershoot would compile a test kernel for me? i'd try this out.
EDIT: i'm almost positive this will work, so i'll see how to add in age scalar before posting it in the other thread for pershoot.

iManager - 3D Task Manager

Version: iManager 0.09.03b
Desc: Fast and tiny tap-oriented task manager.
Last update: 25.02.2011
Attention. Some people say that device works slower when iManager is in background. If you noticed that on your device please write about it with bug reports.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Video, illustrating its functionality:
System requirements:
1. WM >= 5.0 (not tested on WM7 yet)
2. Does not require .NET at all.
Usage:
1. Launch exe file or use your hardware button to activate it
2. Move finger to switch the tasks
3. Move window left or right to close it
4. Tap and hold your finger longer than 2 seconds to exit the app.
Memory usage:
1 MB per each window task for 16 bit devices and 480x800 resolution
Changes since 0.09.02b
Changes since 0.09.00b
Version 0.09.00b
Changes since 0.05.00a
Changes since 0.04.00a
Changes since 0.03.05.02a
Changes since 0.03.04.04a
Changes since 0.03.04a
Changes since 0.03.03a
Changes since 0.03.02a
Changes since 0.03.01a
Changes since 0.03.00a
Changes since 0.02.04.01a
Changes since 0.02.03.01a
Changes since 0.02.02a
INI-file description:
[Config]
BackSkin=Off - { Off | image.jpg } - background image, Off or filename without path. Location of image - the same that iManager.exe has.
BackSkinOpacity = 50 - (0-100) background screenshot opacity percent. It is layered above background image.
CloseOnDeactivate = Off - close iManager on the first app activation
HideWhileInactive = Off - hide iManager when in background mode
HighPriority = Off - { Off | On } when "On", iManager has high priority while active
Multithread = On - { On | Off } - toggle multithread Direct3D render
Render = OpenGL - { D3D | OpenGL | GDI | Realtime } - choose render engine
ScreenSkin = Off - { Off | image.jpg} window image, Off or filename without path. Location of image - the same that iManager.exe has.
ScreenSkinOpacity = 50 - (0-100) window screenshot opacity percent. It is layered about window image (image.jpg)
ShowProcInfo = Off - { Off | On } - show process info in window screenshot (window name, executable name, memory usage)
UpdateTime = 0 - (0-...) - texture update frequency in background mode in seconds (0 - disable)
NotifyUpdate = Off - { Off | On } - enable or disable offline screenshots capture when applications switch
VibroNum = 1 - vibration port number
RemoveClones = None - { None, SameWindowName, SameProcessName, SameWindowAndProcessName } - remove window clones (see description)
[Control]
RemoveSpeed = 700 - window speed while removing from list (pixels per second)
ScrollSpeed = 1200 - scroll speed (pixels per second)
[Debug]
Enum=Off - toggle advanced debug information while windows enumeration
KineticTest = Off - if kinetics don't work for you then switch KineticTest=On and Log=On and send me bug report
Log = Off - { Off | On } - toggle bug report creation
Profile = Off - { Off | On } - toggle profile creation (profile is used to test program performance)
Render=Off - toggle advanced debug information while render
[Exclude windows]
desktop = Exclude - exclude window "desktop" from the list (not case sencitive)
[Exclude executables]
shell32.exe = Exclude - exclude window of process "shell32.exe" from the list (not case sencitive)
[GDI]
BPP = Default - { Default | 16 | 24 | 32 } GDI screenshots bit depth. Default is bit depth default to your device
[On Remove] - action when remove program from list
manila.exe = No Action - no action. for example manila can't be deleted, so no action
shell32.exe = Hide - hide window instead of closing it, for example, shell32.exe soft resets the device when I try to close it
[Remove Action] - see this for more info
Left = Remove - { Remove | Close | Hide | No Action } - action to perform while sliding the screenshot to the left
Right = Remove - --"-- to the right
[Render]
Alpha = On - { On | Off } - toggle alpha transparency
BackColor = #80202020 - background rectangle color #AARRGGBB (AA - alpha in hex, RR - red, GG - green, BB - blue. (AA = 00 - disable)
BackTexture = On - { On | Off } - toggle background texture
BilinearFiltering = On - { On | Off } - toggle texture bilinear filtration
Opacity = 90 - (0-100) - window screenshots opacity percent
TextureHalf = On - { On | Off } - toggle half sized textures
[Scroll]
ZoomTime = 200 - zooming time in milliseconds
Type = Snap - { Snap | Kinetic | Continuous | KineticSnap } - scrolling type
Vibrate = 0 - (0-...) vibrate when window is near center (0 - disable), milliseconds
Freeze = 0 - (0-...) time to freeze scrolling when window is near center (0 - disable), milliseconds
SnapSpeed = 10 - Scroll speed in snap mode
[StartUp]
AutoStartUp = On - start iManager on Windows start. Start/restart iManager to take effect.
WaitApps = On - wait for apps from [WaitApps] list to start. Then start iManager
WaitAppsNum = 0 - find [WaitApps] apps in memory attempts count (0 - infinite)
WaitTimeout = 2 - program start timeout
[WaitApps]
manila.exe = Wait - exe file name (not case sensitive)
Performance tips:
1. Switch background texture off. More textures - more often texture switches while render - perfomance reduce. (BackTexture = Off)
2. Switch both BackSkin and ScreenSkin off.
3. Switch half sized textures on (reduce videomemory and processor consumption) (TextureHalf = On)
4. Switch logging off (Log = Off)
5. Switch profile off (Profile = Off)
Donate me at moneybookers.com, [email protected]
Installing now. Just to confirm for install on HD2 do I just create a folder (iManager) in Program Files and put the exe in there then shortcut, etc?
Also what software do you recommend for reassigning hardware buttons?
If you want to assign the program to hardware button you should put shortcut to the \Windows\Main menu\Programs folder
UPD: The folder for the program itself is on your own choice.
OK, so I've got it installed and shortcut made, etc. Does it automatically hijack the start menu hardkey? I pressed that hardkey to launch WinStart and it launched OK, then iManager launched over the top of it. Once open it is not showing images of all open screens, just dark grey panels, and is running painfully slow (doesn't scroll at all to touch, catches up eventually - 10-20 seconds later). I'm running the latest Elegancia ROM with Chainfire 3D so driver's are all good. Anything I can check?
antru said:
If you want to assign the program to hardware button you should put shortcut to the \Windows\Main menu\Programs folder
UPD: The folder for the program itself is on your own choice.
Click to expand...
Click to collapse
Yes, I've done that but in WinMo Settings>Personal>Buttons it is only possible to assign to Long Press Send Key and nothing else.
Anything I can check?
Click to expand...
Click to collapse
Can you attach report files from the program folder? Thanks.
UPD: If noone attach report files I will not understand the problem. Report files are common text file and does not contain any private data. You can make sure of it by opening them.
well...
ko on my sgh-i900, french ROM WM6.1
bythe way, this hasn't a 3D accelerator, so maybe...
in attachment the file.
failure on the hd2
here are my attempts to run imanager on my hd2 (ROM in my sig), tmous variety.
unzipped imanager.exe and put in a folder called imanager. Put the imanager folder in Device/Windows/Programs
Set it to long press of my send key (only setable button on hd2).
Pressed it several times, imanager appeared in the top left of my task mgr, but never opened to anything.
Here are the logs (4 attempts). I don't think I need any 3d drivers, pretty sure I already have them.
edit: I didn't have dunc's problem of it trying to open on top on WinStart. Dunc, did you download beta2?
tried after soft reset, still no dice. It pops up in my taskbar like it's opening, then nothing.
Corwin9S said:
well...
ko on my sgh-i900, french ROM WM6.1
bythe way, this hasn't a 3D accelerator, so maybe...
in attachment the file.
Click to expand...
Click to collapse
Thanks great for the report. The problem is not quite clear to me but I'll try to fix this situation.
nrfitchett4 said:
here are my attempts to run imanager on my hd2 (ROM in my sig), tmous variety.
unzipped imanager.exe and put in a folder called imanager. Put the imanager folder in Device/Windows/Programs
Set it to long press of my send key (only setable button on hd2).
Pressed it several times, imanager appeared in the top left of my task mgr, but never opened to anything.
Here are the logs (4 attempts). I don't think I need any 3d drivers, pretty sure I already have them.
edit: I didn't have dunc's problem of it trying to open on top on WinStart. Dunc, did you download beta2?
Click to expand...
Click to collapse
I've understood the problem with HD2. It has 32bit color and offscreen surface is 16 bit so thats the problem and I'll try to fix it soon.
antru said:
I've understood the problem with HD2. It has 32bit color and offscreen surface is 16 bit so thats the problem and I'll try to fix it soon.
Click to expand...
Click to collapse
no problem. Definitely willing to donate if you get this working for the hd2. Great program.
nrfitchett4 said:
no problem. Definitely willing to donate if you get this working for the hd2. Great program.
Click to expand...
Click to collapse
Thanks.
It's strange because HD2 devices in Russia have 16 bit screen mode.
antru said:
Thanks.
It's strange because HD2 devices in Russia have 16 bit screen mode.
Click to expand...
Click to collapse
ahh, interesting factoid I didn't know. I'll keep an eye on it.
nrfitchett4 said:
ahh, interesting factoid I didn't know. I'll keep an eye on it.
Click to expand...
Click to collapse
maybe not all of them, but only specific ROM versions (I don't have such information)
At first use on a TP2 (Rhodium), works pretty well!!
No lag at all for me.
In fact it almost scrolls tooo fast.
Some screen images did not show, or just displayed the open applications icon on a white screen.
But mostly for a first release Beta, it is working well on my device.
Just thought I would give my first impression, especially since others with devices no better then mine were reporting lag.
I also did not use any of the add on files, just the .exe
I can and will report back again with more detail at some point and upload logs for you as well.
Thanks for your efforts so far.
I don't know whether XPERIA X1 meets the requirements or not but when I run iManager, the screen is flipped vertical. Moreover, when I touch, the program moved opposite direct.
Thank you for your program :x.
Hope I can use this with my X1
OK, so figured out why I was getting a 'clash' with Winstart and I'm happy to report it was a false alarm and nothing to do with iManager! Basically in Winstart the shortcut for iManager and the shortcut for Settings folder were somehow in the same screen position so when I clicked on the settings icon it not only opened the Settings folder but also started iManager - sorted the layout issue in Winstart and now this is all OK.
Waiting for the 32 bit fix so I can see it working properly now! Like Santod I did notice that on the odd occasion that I did get any image at all on any of the scrolling panels all that showed was just the app shortcut icon right in the middle of the panel and nothing else.
Keep going - really looking forward to this
picionevn said:
I don't know whether XPERIA X1 meets the requirements or not but when I run iManager, the screen is flipped vertical. Moreover, when I touch, the program moved opposite direct.
Thank you for your program :x.
Hope I can use this with my X1
Click to expand...
Click to collapse
Thanks for testing. It would be very great to receive some reports from your device.
santod040 said:
At first use on a TP2 (Rhodium), works pretty well!!
No lag at all for me.
In fact it almost scrolls tooo fast.
Click to expand...
Click to collapse
Thanks for the testing results. Fast scroll is because I don't use timer for scroll yet, I developed it firstly for my device (Max 4G) and some things such as scrolling, tap sensivity, etc. are results of testing on it. I'll turn on timer in future and it will scroll on all devices at the same speed.
Your device is new to me and it would be very interesting to look reports from it. They contain Direct3D device information that I want to see. Thanks.

[ROM][5.1.1][NEW] Flyme OS 5.1.8.1R for Micromax Canvas Nitro A311/A310

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
FLYME OS 5.1.8.1R for Micromax Canvas Nitro A311/A310​
The Flyme OS 5 based on Android 5.1 Lollipop (Cyanogenmod) does come with refined user experience like redesigned transition animations, new icon pack and with tons of newly added features.
Disclaimer
Code:
include
/*
* Your warranty is now void.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*/
ROM Features
Flyme OS features are given in Post#2
Installation Instruction
- Use TWRP 2.8.6.0/TWRP 2.8.7.0
- Wipe system, cache, dalvik cache, data, internal storage
- Format data
- Unmount data (Go into Mount settings in TWRP, then remove checkmark from system, data, cache)
- Flash the zip file
- Flash gapps from given link below
- Flash Supersu zip
Youtube Review of FlymeOS v5.1.8.1R by @Prasad527
https://www.youtube.com/watch?v=vyYfWLl7xBU
Download Link
ROM LINK (v5.1.8.1R)
https://goo.gl/pkfRLO
ROM LINK (v5.1.7.25R)
https://goo.gl/NvTvQz
Gapps ONLY for FlymeOS v5.1.7.25R - DON'T USE IT ON ANY OTHER VERSION
https://goo.gl/1n1wOb
Alternate Link for Gapps for Flyme v5.1.7.25R
https://1drv.ms/f/s!Ap5ZzRIsABM_e2IUJN-bpk3xUsg
Important Note: Flash ROM then reboot. Don't flash any other zip along with ROM (i.e. gapps and other). First boot takes time (almost 10 minutes). So be patient. Set the device settings and reboot to recovery then flash Gapps and other patches. Also take note that Supersu and sound patch already merged in v5.1.7.25R.
ROM LINK (v5.1.6.24R)
https://goo.gl/IdKBRn
ROM LINK (v5.1.5.20R)
https://goo.gl/oQWqlv
Patch for A310 Users
https://goo.gl/nA0njL
TWRP RECOVERY 2.8.6.0
https://mega.nz/#!plUBWb6b!S4Mal6vqfufpvxe8nCklCvUn2B3ElYEWthAtnYdlQDk
TWRP RECOVER 2.8.7.0
https://goo.gl/mZpyPE
GAPPS Link
https://basketbuild.com/uploads/devs/osm0sis/gapps/tk_gapps-modular-pico-5.1.1-20150920-signed.zip
Sound Patch
https://goo.gl/PHQeol
Credits
@fire855
@Rohan Taneja
@addictz10
@Surajlad9
XDA : DevDB Information
Flyme OS 5.1.8.1R ROM for the Micromax Canvas Nitro A310/A311
Contributors
@bravonova
ROM OS Version: 5.1.1 Lollipop
ROM Kernel: Linux 3.4.67
Based On: CyanogenMod
Version Information
Status: Beta
Stable Release Date: 2015-05-27
Created 2015-05-27
Last Updated 2016-08-09
Flyme OS 5 full changelog:
Desktop:
Floating notice: supports floating inform, to avoid the operation is interrupted.
Multitasking: new card multitasking list, long press to lock individual applications.
Split-screen mode: Multi-screen mode to create a list of tasks while using two applications, you can adjust the window proportions (only part of the application).
Batch finishing icons: Long press the desktop select “sort icon ‘batch select the icon to move to a different desktop or folder.
Shake finishing the desktop: Go to “arrange icons” mode, shake your desktop tidy Fast Recovery.
Folders are automatically named: Create a folder, depending on the application type for the folder name is automatically.
Notification bar:
Optimize the layout: drop-down notification bar without notice Expand all default switch, when there is multiple notifications pull-down notification to view more.
Notify management: Settings – Notification and Status Bar – application notification management, support each application switching and priority setting for notification.
Lock screen:
Music Locker: New music lock screen, lock screen display directly covers and lyrics.
Lock screen notifications: Settings – notification and status bar, select whether to display the notification in the lock screen to notify whether the new bright screen.
Information:
Customer Service Assistant: New customer assistant accounts, support online chat.
Floating notice: Supports quick reply message and copy the code in the floating notification.
Smart SMS: Update Smart SMS service menu, more powerful.
Phone:
Floating notice: New calls Floating notice.
Dialpad: Suspended dial plate design, support slide switch contacts, call records, the Yellow Pages.
Online Yellow Pages: New independent online Yellow Pages, online services, one-touch access.
Yellow Correction: Yellow Pages for the online identification number, the error correction can take the initiative in the contact details.
Number Tags: against harassment calls, support for online marking the contact details.
Recording List: Telephone – setting “recorded message” and “call recording” can see the individual recordings.
Dialpad switch: to enter the phone – setting, open “dial pad input switching,” in the dial pad click on the lower left corner of the keyboard symbol to switch T9 and full keyboard dial pad.
Flyme communication:
Switching numbers: support is changing the network telephone number bind.
Set up:
The new design: for interaction and functional grouping adjustment.
Search: New search function, support for the use of text and voice search settings.
Volume Category: Settings – Sound and vibration – volume, the new volume category management.
Network Sharing: Settings – Wireless Network, click on the Wi-Fi hotspot to share Wi-Fi network through a two-dimensional code.
Preferred networks: Settings – Wireless Network, click on the Wi-Fi hotspots, set the priority for this network connection.
Energy management: Optimizing power ranking, classification display hardware power consumption.
Default Application: Settings – Application Management – default applications, support for different categories to set the default application.
Analog Color: Settings – Accessibility – Developer Options – simulation color space, color blindness or color weakness mode supported by the analog color space.
Search:
Plugin: New weather search 4 * 2 widget.
Home: New Search Home, updated in real time hot search words.
Card: search results by showing the card, the interface cleaner.
Input:
Candidate words: new candidate word dropdown, improve the speed choice of words.
Transcriber: New full-screen handwriting keyboard input more casual.
Symbol Keyboard: New independent symbols keyboard, keypad lock symbol support continuous input symbols and expression.
Vibration sense switch: to enter the input settings screen, select whether to open the key vibration.
Mobile butler:
Rights management: access rights management – setting, open “cutting each other to start the application” switch, wake each behavior tracking applications, a key force off wakeup path.
Harassment intercept: harassment interception to a safe center to support blocking unknown numbers and hidden numbers.
Garbage clean white list: application cache, redundant installation package, application uninstall remnants supports adding white list, to avoid false cleanup.
Regular cleaning: Regular cleaning new “scan and clean” option rubbish more peace of mind.
Notification bar traffic information: traffic management – setting, the new “Notification bar shows the flow of information” switch.
Mobile Acceleration: clean up the permanent background, to accelerate the speed of the phone.
Rapid examination and a key optimization: no need to wait to enter the interface will be able to know the phone health status, one-click fix all problems.
Applications whiten: support the cottage detection application, eliminate safety hazards.
Toolbox:
New “toolbox” App.
Flashlight: Support SOS mode and brightness adjustment third gear.
Mirror: Support normal, twist, rotate, mirror effect symmetrical four.
Compass: Support orientation and latitude and longitude display.
Level: Intuitive view levelness.
Measurement scale: Supports cm and inch two scales.
Magnifier: supports torch mode can also be used at night.
Shortcuts: frequently used tool to add support for the desktop shortcut.
Browser:
Home: Home new design.
Window: Window tag optimization show form.
Card: Added “micro letter headline” card.
Toolbar: new toolbar at the bottom, more intuitive operation.
Music:
Music Library: Access shrimp music, comprehensive music library rich resources.
Contents: Introduction of a single song shrimp, shrimp rankings, selection set, you may also like the daily recommended content.
Radio: New offline radio function, WLAN environment to automatically update the music library offline.
Song Roaming: For the love of singles, a key roams similar songs.
Singles Comments: New singles comment feature, data access shrimp music reviews.
Artist Collection: Artist Collection features new, easy to find your favorite artists.
Members receive: Music opened Thanksgiving activities, membership users can receive free two-month membership services, after the purchase of non-members can also receive free
Video:
Video Feed: New video feeds, support update reminders, chase drama easier.
Potatoes from Channel: New potatoes from channel content, rich video library.
Online seat selection: Adjust movie theaters interface, more convenient booking.
Dropzone: In video playback applications support floating window, the perfect realization of “picture in picture”; support suspension / full screen seamlessly switch playback, without cache.
Cache management: the same series of video automatic classification, by “cache more” direct cache with other video episodes, cache operations more convenient.
Camera:
Shooting GIF: GIF new shooting mode, easy homemade face pack.
Time Watermark: Camera – set new time watermark switch.
Voice Camera: Camera – setting new voice camera switch.
Flash: Flash memory setting status, avoid duplication.
Manual mode: increase saturation, contrast, and white balance adjustment option.
Gallery:
Map Mode: Gallery – set, display photos in a map, generate personal and exclusive travel map.
Pictures: Favorites favorite pictures quickly browse in the collection folder.
Custom Cover: Press folder covers, replace favorite picture as the cover.
Filter Small size: Gallery – setting, the new small-size image filter switch, gallery cleaner.
Silent backup: Gallery – setting new silent backup switch.
Is hidden: Press the folder displayed directly Hide unwanted folders?
Photo Week view: two-finger zoom, free to switch month and week views, more convenient management.
Photo Editor: Optimize photo editing features, free to adjust the level of the filter and mosaics.
Set Wallpaper: Set wallpaper function optimization, support for custom fuzzy level and overlay pattern.
Topic landscaping:
Font Replacement: support the replacement of system fonts without root and rebooting.
Variety lock screen: New Variety lock screen, unlocking is a pleasure.
App Store:
Best application: the most beautiful application and content collaboration, found a small but beautiful application.
Applications Tags: Applications New Applications tab shows details page for easy viewing similar applications.
Permissions Show: The new application details page showing detailed permissions entrance, detailed permissions can understand the application before installation.
Micro-channel sharing: sharing style micro-channel optimization.
Calculator:
Rates search: When Conversion Rates support direct search by country name.
Unit operation: When the unit converter supports direct operation.
Uppercase conversion: Press the calculated results can be directly converted to uppercase digital.
Clock:
Batch delete: Supports long press batch delete alarm and world clock.
Lock screen weather: it removes the lock screen clock weather animation, text display weather information.
Timescale: Timer setting to adjust the time scale style.
File:
Design: Optimizing directory structure, file classification provides entry.
Remote management: new FTP remote management capabilities, the same Wi-Fi environment, no data line management phone files directly on the computer.
Hidden folders: Documents – setting, the freedom to choose whether to display hidden folders / directories.
Storage space display: Docs display is remaining storage space.
Display: adjust the length of the file name is displayed, you can view more detailed filenames.
Find the phone:
Loss reporting mode: Added a key report the loss, report the loss will temporarily restore the phone to factory state, seal all private data (images, video, etc.), to ensure that the loss of phone, private data will not be disclosed.
On-line reminder: When the phone is lost without waiting for the phone line, on the line after reporting the loss as long as the message will immediately notify the owner.
Intelligent alerts Alert: When a lost handset without knowing the exact location in the vicinity of the time, intelligent alerts using the Alert feature, the phone automatically sound.
Send a message: Find mobile phone service built dialogue channel, even if the missing cell phone SIM card is not inserted, you can still carry on a dialogue with each other.
Intelligent Face capture: After reporting the loss will be smart, open face capture, Time Lapse mobile phone users do not face.
Notes:
Switching topics: new theme switching capabilities, built-in themes, and fonts four different plates.
Search Notes: Add notes searching for a more convenient.
Text Share: Add text form of sharing notes.
Graffiti: Graffiti support directly on the drawing board.
Automatic numbering: support number automatically created when editing notes.
Recording Animation: Animation recording new record is inserted.
Desktop plug-in: plug-in supports fast new recordings and photographs, support for displaying the contents of all notes.
Sketchpad:
Color: Add more preset color.
User Center:
New Independent User Center App.
User level: New user rating system, to enhance the level to get more privileges.
Supplementary Information: Support Extended user details.
Integral Center: new integration center to support exchange gifts, earn points, points sweepstakes.
Information:
Column Category: Home columns support the classification display, browsing more convenient.
Data Fusion: Fusion feeds data under the same section, read more peace of mind.
Interactive adjustment: Adjust Subscription Center, individual centers, the article details the interaction.
Weather:
Interface: The new weather interface, you can see more content in the home.
Share: A long way to share detailed weather information Screenshot.
Urban management: direct display of weather information in different cities in the urban management interface.
Weather warnings: New weather warning function to support and friends to share early warning information.
Domestic services:
Cinema Movies: online seat selection introduces the new movie and the upcoming movie details, the new movie stills View.
Travel: New hotels and airfare booking function.
Calendar:
Constellation almanac: Support Calendar Home View constellations and almanac information.
Event Suspension Ball: New event suspension ball, quick to create a new event.
Calendar projection device: New Calendar projections, supports date projections, interval estimation and public Lunar conversion.
Interval Display: Click on any date, the number of days in the calendar left corner Quick View.
Notification: Permanent cancellation notification bar notification, slide cancel.
Game Center:
Online content: the game details page to increase the game Raiders, evaluation, information, video, and other content packs.
Micro-channel sharing: sharing style micro-channel optimization.
Mail:
Account Settings: Press the mailbox type to add new accounts automatically configure account information.
Gestures Zoom: Theme card supports gestures to zoom, browse more relaxed details.
Attachment: New Attachment Manager functions, optimizing mail attachment display position.
Search: a substantial increase in search speed, highlight keyword.
YouTube HD Playback
Newer youtube app versions have broken video quality detection. For fixing that problem you need to use a older youtube version. This version is working: http://www.apkmirror.com/apk/google-inc/youtube/youtube-10-14-56-android-apk-download/
Second Method
To fix HD Videos on Youtube all we have to do is:
Thanks to : @Typhus_
Install Latest Youtube App
Open it and see any video (one you know it should be 1080p available but it's stuck at 360p)
Navigate to /data/data/com.google.android.youtube/shared_prefs (use any explorer with root permission)
Open youtube.xml
Find:
Code:
<boolean name="h264_main_profile_supported5.1.1" value="false" />
Replace to:
Code:
<boolean name="h264_main_profile_supported5.1.1" value="true" />
Save the file
Enjoy!
Screen Recording Workaround
Thanks to : Ajit Guraya (www.mtkroms.com)
You can also check it on --> http://www.mtkroms.com/2015/11/fix-bugs-in-all-cyanogenmod-12-roms-mtk.html
Follow the below steps:
1. Download Shou from play store.
2. Sign in/Sign up.
3. Allow root permissions
4. When a popup about allowing screen record comes, just press START and DO NOT CHECK "DO NOT SHOW AGAIN".
5. Click on the floating pink circle
6. Slect Record
7. Enter any file name.
8. Click on Settings.
9. In encoding engine : Select SOFTWARE instead of hardware.
10. Enjoy screen recording.
VPN
thanks to @nervehammer
Follow these step to enjoy VPN in cm builds ..
1. Go to psiphon and choose Browser-Only mode don't tunnel whole device.
2. Go to its logs tab and check the port of http proxy.
3. Now open WiFi setting and long press to your WiFi network (from which u are connected) go to modify tab and from check the advanced options.
4. Chosen manual proxy option and put host name as 127.0.0.1 and port as the no. which you noted in step 2 (eg. 8080) and click save .
Enjoy you have set up a VPN connection successfully.
You can open your browser and check your IP
Note: You have to undo this after you don't need VPN by changing manual proxy to none .
For those who want to use Orbot vpn
This is very similar to previous vpn workaround for psiphon
Just follow these step for Orbot
1. Open Orbot and long press to start orbot.
2. When all bootstrapped done go to check browser it will ask for normal browser or install Orweb .
3. Open Orweb and volla you r connected to tor but actually its not to tunnel your traffic to vpn go to Orweb settings.
4. Now note the proxy host and proxy port generally it is localhost(same as 127.0.0.1) and 8118 respectively but it may change so better to keep updated with port numbers.
5. Now go to wifi setting and long press the wifi (from which u r connected) and check advanced options.
6. Choose manual proxy option and put the host name 127.0.0.1 and port no. (e.g. 8118 ) which u noted in step 4
Now u can check https://check.torproject.org from any browser and volla Congo this browser is configured to use tor.
Sorry for long guide but it is detail enough so that anyone can easily setup tor in cm builds.
Note: You have to undo manual proxy option to none after you don't use vpn.
OBB on SD Card
Use following xposed module
Obb on SD
Module Obb on SD attempts to make it seamless - just enable module, reboot and move obb's to SD card (to same folder: Android/obb) - that's that. No need to enter any path or whitelist/blacklist any app. Do you want to only move Obb from Grand Theft Auto? Then only move that obb. Obb on SD will detect "obb on SD" and enable hooks only for this single game.
http://dl-xda.xposed.info/modules/com.smartmadsoft.xposed.obbonsd_v8_f16a1d.apk
Author(s):
moneytoo
Support/Discussion URL:
http://forum.xda-developers.com/xposed/modules/mod-obb-sd-v0-1-t2884004
Does it work auto rotation?
rantosp said:
Does it work auto rotation?
Click to expand...
Click to collapse
auto rotation working properly
What about GPS??
And 2g/3g switch working properly..?
Any specific bugs..?
stuck on boot (with picture of baloon and sign 'flyme').
i've try to flash it 3 times and 3 times i got stuck (with the instalation instructions).
mickiewicz said:
stuck on boot (with picture of baloon and sign 'flyme').
i've try to flash it 3 times and 3 times i got stuck (with the instalation instructions).
Click to expand...
Click to collapse
Same to me Coolpad f1
what about battery life
---------- Post added at 06:58 PM ---------- Previous post was at 06:57 PM ----------
its fully LP rom or just themed like LP
---------- Post added at 07:07 PM ---------- Previous post was at 06:58 PM ----------
from this thread i can expect miui 7 5.1.1 for a311 or any other custom rom like sony z3 , honnor ,lenovo etc
Or it's support cyanogen themes or not
Sent from my Nitro using XDA-Developers mobile app
mickiewicz said:
stuck on boot (with picture of baloon and sign 'flyme').
i've try to flash it 3 times and 3 times i got stuck (with the instalation instructions).
Click to expand...
Click to collapse
rantosp said:
Same to me Coolpad f1
Click to expand...
Click to collapse
I am looking into issue. It will be solved soon.
rahult2838 said:
Or it's support cyanogen themes or not
Sent from my Nitro using XDA-Developers mobile app
Click to expand...
Click to collapse
This ROM doesn't support CM themes.
stuck at boot screen :/ please provide fix!
Ali_Waris said:
What about GPS??
And 2g/3g switch working properly..?
Any specific bugs..?
Click to expand...
Click to collapse
GPS has no issues.... There is no 2g/3g switch issue on LP based ROMs
mickiewicz said:
stuck on boot (with picture of baloon and sign 'flyme').
i've try to flash it 3 times and 3 times i got stuck (with the instalation instructions).
Click to expand...
Click to collapse
rantosp said:
Same to me Coolpad f1
Click to expand...
Click to collapse
amy1193 said:
stuck at boot screen :/ please provide fix!
Click to expand...
Click to collapse
Links are updated in first post.... Stuck at Flyme logo issue solved now. First boot takes time to boot
bravonova said:
Links are updated in first post.... Stuck at Flyme logo issue solved now. First boot takes time to boot
Click to expand...
Click to collapse
hello I installed the rom but after lavvio crashes when you select the sim for text messages. shows the message (the application setting and locked abnormally) and cell and inutilizabile remains blocked in the configuration
ok, now it stucks at language selection ("unfortunately, setting has stopped' popup).
pitty.
mickiewicz said:
ok, now it stucks at language selection ("unfortunately, setting has stopped' popup).
pitty.
Click to expand...
Click to collapse
yeah, got same error here. Plz fix it:crying:
mickiewicz said:
ok, now it stucks at language selection ("unfortunately, setting has stopped' popup).
pitty.
Click to expand...
Click to collapse
kamathshreyas said:
yeah, got same error here. Plz fix it:crying:
Click to expand...
Click to collapse
I installed ROM multiple times but no such issue faced.... Wipe system, cache and data partition before flashing.....
it stucks when i use yours instalation guide.
after my usuall install sequence i managed to flash it.
now testing.

What is Motivation Description?

How to make your app accessible to users with vision impairment or other physical disabilities.
Your customer base probably includes many people with disabilities, whether you are aware of it or not. According to government figures, one person in five has some functional limitation, and eight percent of all users on the Web have disabilities. In the United States alone there are more than 30 million people with disabilities who can be affected by the design of computer software, and worldwide the number is much higher. Many countries/regions, including the United States, have laws that mandate accessibility at some level.
When it comes to reaching as wide a user base as possible, it's important to pay attention to accessibility in your Android application. Cues in your user interface that may work for a majority of users, such as a visible change in state when a button is pressed, can be less optimal if the user is visually impaired.
This post shows you how to make the most of the accessibility features built into the Android framework. It covers how to optimize your app for accessibility, leveraging platform features like focus navigation and content descriptions. It also covers how to build accessibility services, that can facilitate user interaction with any Android application, not just your own.
Techniques should be applied to solve them:
1. Developing Accessible Applications
Learn to make your Android application accessible. Allow for easy navigation with a keyboard or directional pad, set labels and fire events that can be interpreted by an accessibility service to facilitate a smooth user experience.
Add Content Descriptions
It's easy to add labels to UI elements in your application that can be read out loud to your user by a speech-based accessibility service like TalkBack . If you have a label that's likely not to change during the lifecycle of the application (such as "Pause" or "Purchase"), you can add it via the XML layout, by setting a UI element's android:contentDescription attribute, like in this example:
<Button
android:id=”@+id/pause_button”
android:src=”@drawable/pause”
android:contentDescription=”@string/pause”/>
However, there are plenty of situations where it's desirable to base the content description on some context, such as the state of a toggle button, or a piece selectable data like a list item. To edit the content description at runtime, use the setContentDescription() method, like this:
String contentDescription = "Select " + strValues[position];
label.setContentDescription(contentDescription);
Try to add content descriptions wherever there's useful information, but avoid the web-developer pitfall of labelling everything with useless information. For instance, don't set an application icon's content description to "app icon". That just increases the noise a user needs to navigate in order to pull useful information from your interface.
Try it out! Download TalkBack (an accessibility service published by Google) and enable it in Settings > Accessibility > TalkBack. Then navigate around your own application and listen for the audible cues provided by TalkBack.
Design for Focus Navigation
Your application should support more methods of navigation than the touch screen alone. Many Android devices come with navigation hardware other than the touchscreen, like a D-Pad, arrow keys, or a trackball. In addition, later Android releases also support connecting external devices like keyboards via USB or bluetooth.
In order to enable this form of navigation, all navigational elements that the user should be able to navigate to need to be set as focusable. This modification can be done at runtime using the View.setFocusable() method on that UI control, or by setting the android:focusable attrubute in your XML layout files.
Also, each UI control has 4 attributes, android:nextFocusUp, android:nextFocusDown, android:nextFocusLeft, and android:nextFocusRight, which you can use to designate the next view to receive focus when the user navigates in that direction. While the platform determines navigation sequences automatically based on layout proximity, you can use these attributes to override that sequence if it isn't appropriate in your application.
For instance, here's how you represent a button and label, both focusable, such that pressing down takes you from the button to the text view, and pressing up would take you back to the button.
<Button android:id="@+id/doSomething"
android:focusable="true"
android:nextFocusDown=”@id/label”
... />
<TextView android:id="@+id/label"
android:focusable=”true”
android:text="@string/labelText"
android:nextFocusUp=”@id/doSomething”
... />
Fire Accessibility Events
If you write a custom view, make sure it fires events at the appropriate times. Generate events by calling sendAccessibilityEvent(int), with a parameter representing the type of event that occurred. A complete list of the event types currently supported can be found in the AccessibilityEvent reference documentation.
As an example, if you want to extend an image view such that you can write captions by typing on the keyboard when it has focus, it makes sense to fire an TYPE_VIEW_TEXT_CHANGED event, even though that's not normally built into image views. The code to generate that event would look like this:
public void onTextChanged(String before, String after) {
...
if (AccessibilityManager.getInstance(mContext).isEnabled()) {
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED);
}
...
}
Test Your Application
Be sure to test the accessibility functionality as you add it to your application. In order to test the content descriptions and Accessibility events, install and enable an accessibility service. One option is Talkback , a free, open source screen reader available on Google Play. With the service enabled, test all the navigation flows through your application and listen to the spoken feedback.
2. Developing Accessibility Services
Develop an accessibility service that listens for accessibility events, mines those events for information like event type and content descriptions, and uses that information to communicate with the user. The example will use a text-to-speech engine to speak to the user.
Create Your Accessibility Service
An accessibility service can be bundled with a normal application, or created as a standalone Android project. The steps to creating the service are the same in either situation. Within your project, create a class that extends AccessibilityService.
package com.example.android.apis.accessibility;
import android.accessibilityservice.AccessibilityService;
public class MyAccessibilityService extends AccessibilityService {
...
@override
public void onAccessibilityEvent(AccessibilityEvent event) {
}
@override
public void onInterrupt() {
}
...
}
Like any other service, you also declare it in the manifest file. Remember to specify that it handles the android.accessibilityservice intent, so that the service is called when applications fire an AccessibilityEvent.
<application ...>
...
<service android:name=".MyAccessibilityService">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
. . .
</service>
...
</application>
If you created a new project for this service, and don't plan on having an application, you can remove the starter Activity class (usually called MainActivity.java) from your source. Remember to also remove the corresponding activity element from your manifest.
Configure Your Accessibility Service
You have two options for how to set these variables. The backwards-compatible option is to set them in code, using setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo). To do that, override the onServiceConnected() method and configure your service in there. @override
public void onServiceConnected() {
// Set the type of events that this service wants to listen to. Others
// won't be passed to this service.
info.eventTypes = AccessibilityEvent.TYPE_VIEW_CLICKED |
AccessibilityEvent.TYPE_VIEW_FOCUSED;
// If you only want this service to work with specific applications, set their
// package names here. Otherwise, when the service is activated, it will listen
// to events from all applications.
info.packageNames = new String[]
{"com.example.android.myFirstApp", "com.example.android.mySecondApp"};
// Set the type of feedback your service will provide.
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
// Default services are invoked only if no package-specific ones are present
// for the type of AccessibilityEvent generated. This service *is*
// application-specific, so the flag isn't necessary. If this was a
// general-purpose service, it would be worth considering setting the
// DEFAULT flag.
// info.flags = AccessibilityServiceInfo.DEFAULT;
info.notificationTimeout = 100;
this.setServiceInfo(info);
}
The second option is to configure the service using an XML file. Certain configuration options like canRetrieveWindowContent are only available if you configure your service using XML. The same configuration options above, defined using XML, would look like this:
<accessibility-service
android: accessibilityEventTypes="typeViewClicked|typeViewFocused"
android: packageNames="com.example.android.myFirstApp, com.example.android.mySecondApp"
android: accessibilityFeedbackType="feedbackSpoken"
android: notificationTimeout="100"
android: settingsActivity="com.example.android.apis.accessibility.TestBackActivity"
android: canRetrieveWindowContent="true"
/>
If you go the XML route, be sure to reference it in your manifest, by adding a <meta-data> tag to your service declaration, pointing at the XML file. If you stored your XML file in res/xml/serviceconfig.xml, the new tag would look like this:
<service android:name=".MyAccessibilityService">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data android:name="android.accessibilityservice"
android:resource="@xml/serviceconfig" />
</service>
Respond to AccessibilityEvents
Now that your service is set up to run and listen for events, write some code so it knows what to do when an AccessibilityEvent actually arrives! Start by overriding the onAccessibilityEvent(AccessibilityEvent) method. In that method, use getEventType() to determine the type of event, and getContentDescription() to extract any label text associated with the view that fired the event. @override
public void onAccessibilityEvent(AccessibilityEvent event) {
final int eventType = event.getEventType();
String eventText = null;
switch(eventType) {
case AccessibilityEvent.TYPE_VIEW_CLICKED:
eventText = "Focused: ";
break;
case AccessibilityEvent.TYPE_VIEW_FOCUSED:
eventText = "Focused: ";
break;
}
eventText = eventText + event.getContentDescription();
// Do something nifty with this text, like speak the composed string
// back to the user.
speakToUser(eventText);
...
}
Query the View Heirarchy for More Context
This step is optional, but highly useful. The Android platform provides the ability for an AccessibilityService to query the view hierarchy, collecting information about the UI component that generated an event, and its parent and children. In order to do this, make sure that you set the following line in your XML configuration:
android:canRetrieveWindowContent="true"
Once that's done, get an AccessibilityNodeInfo object using getSource(). This call only returns an object if the window where the event originated is still the active window. If not, it will return null, so behave accordingly. The following example is a snippet of code that, when it receives an event, does the following:
.Immediately grab the parent of the view where the event originated
.In that view, look for a label and a check box as children views
.If it finds them, create a string to report to the user, indicating the label and whether it was checked or not.
.If at any point a null value is returned while traversing the view hierarchy, the method quietly gives up.
// Alternative onAccessibilityEvent, that uses AccessibilityNodeInfo @override
public void onAccessibilityEvent(AccessibilityEvent event) {
AccessibilityNodeInfo source = event.getSource();
if (source == null) {
return;
}
// Grab the parent of the view that fired the event.
AccessibilityNodeInfo rowNode = getListItemNodeInfo(source);
if (rowNode == null) {
return;
}
// Using this parent, get references to both child nodes, the label and the checkbox.
AccessibilityNodeInfo labelNode = rowNode.getChild(0);
if (labelNode == null) {
rowNode.recycle();
return;
}
AccessibilityNodeInfo completeNode = rowNode.getChild(1);
if (completeNode == null) {
rowNode.recycle();
return;
}
// Determine what the task is and whether or not it's complete, based on
// the text inside the label, and the state of the check-box.
if (rowNode.getChildCount() < 2 || !rowNode.getChild(1).isCheckable()) {
rowNode.recycle();
return;
}
CharSequence taskLabel = labelNode.getText();
final boolean isComplete = completeNode.isChecked();
String completeStr = null;
if (isComplete) {
completeStr = getString(R.string.checked);
} else {
completeStr = getString(R.string.not_checked);
}
String reportStr = taskLabel + completeStr;
speakToUser(reportStr);
}
Now you have a complete, functioning accessibility service. Try configuring how it interacts with the user, by adding Android's text-to-speech engine, or using a Vibrator to provide haptic feedback!
3. Accessibility Checklist
Learn how to test your app for accessibility.
Testing Accessibility Features
Testing of accessibility features such as TalkBack, Explore by Touch and accessibility Gestures requires setup of your testing device. This section describes how to enable these features for accessibility testing.
Testing audible feedback
Audible accessibility feedback features on Android devices provide audio prompts that speaks the screen content as you move around an application. By enabling these features on an Android device, you can test the experience of users with blindness or low-vision using your application.
Audible feedback for users on Android is typically provided by TalkBack accessibility service and the Explore by Touch system feature. The TalkBack accessibility service comes preinstalled on most Android devices and can also be downloaded for free from Google Play.
Testing with TalkBack
The TalkBack accessibility service works by speaking the contents of user interface controls as the user moves focus onto controls. This service should be enabled as part of testing focus navigation and audible prompts.
To enable the TalkBack accessibility service:
Launch the Settings application.
Navigate to the Accessibility category and select it.
Select Accessibility to enable it.
Select TalkBack to enable it.
Note: While TalkBack is the most available Android accessibility service for users with disabilities, other accessibility services are available and may be installed by users.
Testing with Explore by Touch
The Explore by Touch system feature is available on devices running Android 4.0 and later, and works by enabling a special accessibility mode that allows users to drag a finger around the interface of an application and hear the contents of the screen spoken. This feature does not require screen elements to be focused using an directional controller, but listens for hover events over user interface controls.
To enable Explore by Touch:
Launch the Settings application.
Navigate to the Accessibility category and select it.
Select the TalkBack to enable it.
Note: On Android 4.1 (API Level 16) and higher, the system provides a popup message to enable Explore by Touch. On older versions, you must follow the step below.
Return to the Accessibility category and select Explore by Touch to enable it.
Note: You must turn on TalkBack first, otherwise this option is not available.
Testing focus navigation
Focus navigation is the use of directional controls to navigate between the individual user interface elements of an application in order to operate it. Users with limited vision or limited manual dexterity often use this mode of navigation instead of touch navigation. As part of accessibility testing, you should verify that your application can be operated using only directional controls.
You can test navigation of your application using only focus controls, even if your test devices does not have a directional controller. The Android Emulator provides a simulated directional controller that you can use to test navigation. You can also use a software-based directional controller, such as the one provided by the Eyes-Free Keyboard to simulate use of a D-pad on a test device that does not have a physical D-pad.
Testing gesture navigation
Gesture navigation is an accessibility navigation mode that allows users to navigate Android devices and applications using specific gestures. This navigation mode is available on Android 4.1 (API Level 16) and higher.
Note: Accessibility gestures provide a different navigation path than keyboards and D-pads. While gestures allow users to focus on nearly any on-screen content, keyboard and D-pad navigation only allow focus on input fields and buttons.
To enable gesture navigation:
Enable both TalkBack and the Explore by Touch feature as described in the Testing with Explore by Touch. When both of these features are enabled, accessibility gestures are automatically enabled.
You can change gesture settings using Settings > Accessibility > TalkBack > Settings > Manage shortcut gestures.
Note: Accessibility services other than TalkBack may map accessibility gestures to different user actions. If gestures are not producing the expected actions during testing, try disabling other accessibility services before proceeding.

[APP] AmazTimer v8.1 - Interval/Workout timer - HR, kcal, reps counter, TCX exports

This app is an open source interval timer app for amazfit devices to do interval trainings with HR monitoring
Features
Automatic reps counter for gym!
TCX Exports! Can be uploaded to strava
Workouts will be saved to a DB with its HR, kcal and some more data, you can see that data on settings
Heart Rate monitoring which can be enabled or disabled
You can save your presets and restore them later
Reps mode: If you enable it, work wont be timed, just rest so you can do reps workout
Workout mode: In this mode you'll have to end sets manually
Experimental feature: Get data directly from PPG sensor. This might be more or less accurate than stock method depending on your device
Compatibility
It's compatible with all amazfit devices running android (Amazfit Pace, stratos 2/3 and verge)
HW Buttons integration
AmazTimer supports HW buttons integration!
Pace/Verge/S2 with new layout: Single click to end set, long click to start/stop timer. Center button on S2
Stratos with old key layout: lower button to start, center button for settings and upper button to end sets
Stratos 3: Upper button to start activity, middle upper button to end sets and middle lower button to open settings
You can invert start/finish set keys by enabling invert keys preference
Installation
Code:
adb install -r AmazTimer-x.x.apk
Or if you have AmazMod installed you can install it through your phone.
Note: you can't open it if you don't have app list enabled or amazmod installed
Uninstallation
Code:
adb shell pm uninstall me.micrusa.amaztimer
Downloads
Latest release: https://github.com/micrusa/AmazTimer/releases/latest
Latest edgy: https://github.com/micrusa/AmazTimer/releases/tag/edgy. Edgy builds can be unstable
Sources: https://github.com/micrusa/AmazTimer
Changelogs
Code:
v8.1:
Improved for better design on verge and Stratos 3
Fixed a bug that allowed selecting multiple modes
Fixed a memory leak when sound was enabled
Done some changes for future support of non-amazfit devices
Some other minor improvements and performance optimizations
v8.0:
Added a reps counter mode with automatic reps counting using accelerometer
All workouts will be saved and you can see them on app settings - saved workouts
Support sounds on devices without speaker when BT Headset connected (Enabled by default)
Added a feature to start listening to hr when app starts, so there won't be some secs without HR when activity starts (Enabled by default)
Removed latest training feature
Make experimental sensor a bit slower and more accurate
Moved to MIT license
Some other minor bug fixes and improvements
v7.2:
Fixed FC in settings
Fixed wrong age when no value is set
Fixed a bug where timer would run in background
Now screen will be kept on in main screen too
Improved vibrations
Save TCX asynchronously for more responsiveness
Some more improvements and fixes
v7.1:
Added some haptic vibrations to improve user experience
Added a preference to adjust vibrations
Added a experimental preference to add a offset to TCX times due to problems with timezones (Don't use it if your tcx time is correct)
Added Brazilian Portuguese by (github) aportetecnologia
Improved max hr calculation and hr zones
Many fixes and improvements
v7.0:
Added hw button support for S3
Added an option to invert keys
New layouts with a lot of improvements
Added current hour to the layout
Added optional real time HR zone indicator
Added total elapsed time to the layout
Added experimental option to get data directly from PPG sensor (Avoid huami ****ty processing that breaks interval trainings HR)
Using apple mint as font
Dropped useless modes and preferences
Finish set button always enabled now
Added new prepare screen working on all modes (Previously only worked on default mode)
Some tcx improvements
Run all heavy tasks and hr listener on another Thread to avoid UI lags
Huge code optimization
v6.2: Added button integration for Stratos, check xda thread or readme for instructions
v6.1: Hotfix for stratos 2/3's crash when opening any activity
v6.0:
Added hardware buttons integration for Pace and Verge, soon for Stratos too (Read xda thread or readme for more info)
Remove widget
Fix time in different timezones for tcx exports
Added Czech by mari8b on xda
Reduced file size by ~55% by enabling minify and removing unused icon dpi
Added optional sound in verge
Minor memory and performance improvement
Some other improvements and fixes
v5.3:
HUGE improvement in kcal measurements
Fix latest lap not added to tcx file
Added chrono to workout timer
Big memory improvements
Some other improvements and fixes
v5.2:
Improved all layouts
Added round layout for Stratos 3
Added Hebrew by 1immortal
Added Russian and Ukranian by Osmat
Keep screen on in workout/reps timers
Show a toast if there was any problem saving tcx file
Some other minor fixes and improvements
Added installer, thanks to 1immortal
v5.1:
HOTFIX: Settings activity FC if age wasn't set on older releases
HOTFIX: Create folder AmazTimer if it didn't exist
v5.0:
Added TCX exports. They are saved on Internal Storage/AmazTimer and can be uploaded to strava
Added workout mode. In this mode you have to end sets manually. Useful for weight trainings
Added chrono mode. In this mode it will vibrate by intervals but instead of countdown, screen will show a chrono
Long clicks now increase time by 1m and sets by 5, this will make putting high times faster
Added an option to disable prepare countdown
Improved accuracy checks on heart rate measurements
Big improvement in timer's responsiveness
Some other minor improvements and fixes
v4.3:
Ask for year of birth instead of age
Added heart rate accuracy checks from health app
Improve battery saving mode
Other minor improvements
v4.2:
Added app info tab in settings
Replaced weight and age's seekbar with a list
Increased long vibration time to 700ms
Fixed a lot of possible FCs
Optimized code a lot
Some other minor fixes and improvements
v4.1:
Added heart rate zone to latest training information
Show -- instead of "Reps" in main screen's work text when reps mode enabled
v4.0:
Added reps mode, in this mode work wont have any timer, just rest
Allow timer to run in background (Now timer can run during activities)
Some minor layout fixes
Fixed FC when cancelled timer and there isn't any hr value
v3.0:
Added gender, age and weight (just kg for now) settings, you have to set them if you want accurate kcal measurements
Added avg, min, max hr and kcal measurement, watch them on settings - latest training
Fixed a minor bug (If you cancelled timer from prepare screen it would keep going)
Added an option to extend preparing time to 1 minute, this way you can start timer and then start an activity, so activity will be recorded and you'll have interval timer
v2.0.1:
Updated Italian translation by fcaronte
v2.0:
New icon by fcaronte
Now you can use app with widget disabled (Thanks @fcaronte )
New option to save trainings in settings
Now all activities are full screen
Optimized code
Fixed all bugs from betas
v1.4:
Added Croatian (Thanks MASVA)
Added Italian (Thanks fcaronte)
Organised code
Started working on an option to save workouts (WIP)
New heartbeat icon
v1.3:
Added language to settings
Added english and spanish languages
v1.2:
Added an option to disable heart rate monitoring
Now settings are written in a different file to avoid conflicts
Improved a bit timer's layout
v1.1:
New settings menu
Added battery saving option that disables time screen
Migrated code to AndroidX
v1.0:
Initial release, changes from last beta:
Fixed short click toast
Fixed HR listener disabled when you use cancel button
Increased HR sensor rate to fastest
Bugs and suggestions
If you find any bug or have any suggestion, please open an issue in github or answer to this thread.
Thanks to
AmazMod team
All contributors
All translators
Supported languages
English - default language
Spanish
Italian by @fcaronte
Croatian by MASVA
Hebrew by @1immortal
Russian by Osmat
Ukranian by Osmat
Czech by @mari8b
If you want this app to support your language, translate strings here to your language and it will be added soon. Remember to send it through xda, through an issue or open a pull request
Screenshots
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Note: If you liked my work you can help me keeping it up by donating here, also if you liked it you can star the project on github or click thanks button
Let's see if I can do some test soon.
Seem working good, I try only few second and seem ok. Too feature will be the standby mode work but probably is not easy to work on splt mode. Suggest to put name APK on git instead of general app-release, and miss a good icon but yes is a good starting point
fcaronte said:
Seem working good, I try only few second and seem ok. Too feature will be the standby mode work but probably is not easy to work on splt mode. Suggest to put name APK on git instead of general app-release, and miss a good icon but yes is a good starting point
Click to expand...
Click to collapse
Thanks for your suggestions, I added a name to the files.
I just released v1.2
Great job on the app and thanks for sharing the source code.
Would you have time to add a way to save in the app different profiles of interval trainings? meaning the number of sets and the duration with a possibility in the future to load it?
PS: it was requested many times in this app thread as well.
Adi59 said:
Great job on the app and thanks for sharing the source code.
Would you have time to add a way to save in the app different profiles of interval trainings? meaning the number of sets and the duration with a possibility in the future to load it?
PS: it was requested many times in this app thread as well.
Click to expand...
Click to collapse
That's a great idea, I'll try to add it when I have time
Here to you Italian translation file
fcaronte said:
Here to you Italian translation file
Click to expand...
Click to collapse
Thanks for the translations, will be added in next release
New release! Stable v2.0
Changelog:
New icon by @fcaronte
Now you can use app without enabling widget, thanks @fcaronte
New option to save and restore your presets in settings
Now all activities are full screen (No titles in the app)
Full changelog here
Download it here
Guys, is it possible somehow to start this or other application, but in backgound have launched sport activity?
For example I'd like to do sth like this:
1. start normally "indoor fitness"
2. launch somehow AmazTimer v2.0 and make interval training
3. back to "indoor fitness", save and sync to amazfit app
but I don't know how to minimize sport app to have it in background and also how to call it back on top.
kabo9 said:
Guys, is it possible somehow to start this or other application, but in backgound have launched sport activity?
For example I'd like to do sth like this:
1. start normally "indoor fitness"
2. launch somehow AmazTimer v2.0 and make interval training
3. back to "indoor fitness", save and sync to amazfit app
but I don't know how to minimize sport app to have it in background and also how to call it back on top.
Click to expand...
Click to collapse
I think it's not possible without modifying sports system app
micrusa said:
I think it's not possible without modifying sports system app
Click to expand...
Click to collapse
Pity. Once I did it by coincidence . So, maybe it would be hint for developers . When I plug charger during training I saw watch face. I thought I lost training stats, but when I tried to open other sport my lost training came back to the top .
kabo9 said:
Pity. Once I did it by coincidence . So, maybe it would be hint for developers . When I plug charger during training I saw watch face. I thought I lost training stats, but when I tried to open other sport my lost training came back to the top .
Click to expand...
Click to collapse
There may be an easy way by replacing the custom button long press action (stratos has that with limited options but you can actually call any app)
GreatApo said:
There may be an easy way by replacing the custom button long press action (stratos has that with limited options but you can actually call any app)
Click to expand...
Click to collapse
I think I know how to do that, I'll try to do it later
would be great to have such option
micrusa said:
I think I know how to do that, I'll try to do it later
Click to expand...
Click to collapse
Code:
adb shell "settings put system long_key_settings '#Intent;launchFlags=0x10000000;component=me.micrusa.amaztimer/me.micrusa.amaztimer.AmazTimer;end'"
Works on Stratos.
GreatApo said:
Code:
adb shell "settings put system long_key_settings '#Intent;launchFlags=0x10000000;component=me.micrusa.amaztimer/me.micrusa.amaztimer.AmazTimer;end'"
Works on Stratos.
Click to expand...
Click to collapse
Thanks, I think I'll add that method for stratos and for pace I'll add an option to wait 1 minute before starting timer
micrusa said:
Thanks, I think I'll add that method for stratos and for pace I'll add an option to wait 1 minute before starting timer
Click to expand...
Click to collapse
I have almost finished adding it for your app in amazmod too. Test it before you start codding because you may be able to launch an app only from main screen.
GreatApo said:
I have almost finished adding it for your app in amazmod too. Test it before you start codding because you may be able to launch an app only from main screen.
Click to expand...
Click to collapse
I can't test it, I just have a pace in hybrid rom and long_key_settings is null
micrusa said:
I can't test it, I just have a pace in hybrid rom and long_key_settings is null
Click to expand...
Click to collapse
I just tested entering in an activity and it quick app launch doesn't work.

Categories

Resources