[Android General] matssa:
INTRO

Hey everyone!

Some of you, like me, loved to use the smart stay feature of Samsung, they disables the dimming of the screen while you are looking at it.

Unfortunately, on the latest builds (CM11 like CM12), this app is broken. What happens is that, when an app is using the camera and another tries to access it, there is a conflict. For example, you are using the camera. If smart stay + tries to see if you are still there, it tries to access the camera which is already in use. And so, the camera app doesn't know what to do and crashes ^^

A way to repair this is to modify directly the app to pause the search when the camera is already in use, but we can't do that, the only one who can is the app dev ^^ Another way is to refuse access to the camera when using the camera app, but not sure how we can do that... The way I did is bypassing this error by killing smart stay + when I use a specific app like the camera ;)

Apps

To do this, you need to install :

Tasker : lets you automate stuff depending of the state of the phone, an app, or even the sensors,

Secure Settings : lets you change the phone settings directly from Tasker,

TaskKill : lets Tasker kill apps using several different methods.

Watch out! Make sure you have the latest version of each, or else bugs may appear!

Lets Start!

So, start by installing as those apps, and install the latest version of Smart Stay + (if you are on CM12, you can't download it from Play Store cause it's incompatible, so you need to use the apk from the Internet). Don't launch Smart Stay +, and don't enable its setting in the accessibility menu on the phone!

First off, we need to give root rights to Secure Settings. Launch the app, then go to the System+ tab and enable it. It will then ask for root rights, accept and we are good to go on.

Kill Switch

Now, launch Tasker and go on the profile tab (if you want to follow everything in english in the app, press the 3 dots in the upper right corner, then Preferences, go all the way down in the UI tab, then change the language). Create a new context using the + icon on the bottom of the app, then chose Application. A list of all your apps will be shown, so you need to chose which app will kill the other one. Here, I want the Camera app to be the "killer", so I chose the apps using the camera (I have Camera Next as well as the stock camera, so I chose both) :

Screenshot 1​

To go back, do not press the X button on the upper right corner! It will erase your config ;) Press the button on the upper left corner to go back to the profiles. The app will show you then a menu where you can enter a new task. Chose New Task and name it "Kill". A new screen will be shown :

Screenshot 2​

Click +, then go into Plugin, and you will see all the plugins. Click on TaskKill, then press on the Pen logo on the upper right corner to config the plugin. Here, you can choose the method to use to kill, and the app. You need to use the Extrem method, or else Smart Stay will keep rebooting... Choose Smart Stay in the list, then click apply. Set the Timeout to 0, then save it by clicking on the upper left corner, and return to the profiles list.

Here is what we should see :

Screenshot 3​

Starting the App

We now need to start smart stay after we finished using the camera, and it's a bit tricky. You can either start the app using Tasker, but it will ask for you to enable the accessibility option of Smart Stay (happens every time), and that is really a bummer... That made me look if we can't directly turn on that setting from Tasker, so that we don't need to open the settings, close the app, etc... And it is! We can change that settings from Tasker using a plugin! Buuuut, the catch is that we need root...

Soooo to enable this setting, you need to long press on the action we just did named "Kill", and add an Exist Task. Next, do a new task named "Start". After, choose the plugin Secure Settings, then press on the Pen logo on the upper right corner to config the plugin. Here, you can choose which action you want. Go to System+ Actions, then press Accessibility Services. A new menu will appear, where you can see the different apps that has an Accessibility Setting. Choose Smartstay+, and make sure the button underneath it is Disabled (so that it disables that setting). Save it, then go back to the profiles list using the button on the upper left corner.

Here is what you should see :

Screenshot 4​

Testing

Tada! Done! You can now launch the camera app without having it bug! To test it out, you can go on each action, like "kill" and press the play button on bottom of the screen. You will see that the notification is closed. Go into the "start" action and press play, you will that icon return! Go try it out using the camera app!

Misc / Other Method

You may ask why I didn't use the Secure Settings in the first place, and the reason is that it doesn't work well. The app isn't totally killed, it's just paused, so we don't know if it still has access to the camera, or if it is draining battery... Using TaskKill ensure us that it isn't running in the background, and so not draining any battery.

For Android L users, you may know that with Smart Lock, you can unlock the phone with your face. To do so, Android uses the stock camera app. This means that you won't have any bugs at all using that unlocking method with Smart Stay, thanks to our bypass :D

Another method that was pointed out by triviums (1+1 forums) is to use Smart Stay EX Pro. It has an option to disable scanning when certain apps are launched. But, after testing this out, it doesn't work as well as my method. There is a missing option in that app which is Smart Timeout. Without this feature, it still scans if the user is there, even though he is typing something or scrolling a page. Smart Stay + has this feature for free :D)

If this could be implemented (cause on the photos on Google Play, the feature is there for PRO users, but after installing you don't see it...), then it may be better (no need to kill and restart app, which takes some battery). If this doesn't work, then the battery you gain from not killing the app is lost in the use of the camera when it isn't necessary...