Android prevent screen off

Android prevent screen off is the library that keeps the screen on until user is looking at the screen. If you are using Samsung devices you might know there is one feature called “Smart Stay”.

Samsung smart stay : Android Prevent Screen Off
Samsung smart stay : Android Prevent Screen Off

When this feature is enabled, the device will prevent your screen from turning off regardless of your screen timeout settings. But, this technology is only available on some Samsung devices. What if we want to use that technology in our application to solve above problem?

Today, I am going to present the solution of this problem.

Here is the solution:

Prevent-Screen-Off” library handles screen on/off timing smartly. It prevents device display from turning off when the user is looking at the screen and he/she might be reading some textual content provided by your application. As soon as the user stop looking at the screen it will allow phone screen to turn off.

Read this also : Create Augmented Reality in Kotlin Using ARCore SDK

What is Android prevent screen off library for?

  • Ideally, when you user is looking at the screen, your application should not turn the screen off. This is huge deal for the blogging, messaging applications because those applications displays textual content to the user. Reading those textual content takes more time to the user. While reading that content (let say anu article) if the screen turns off, because of the screen timeout that is frustrating to the user.
  • This library provides smart handling of the screen on-off. This library prevents screen from turning off if your user is looking at the screen might reading some textual content on the screen. As soon as the user stop looking at the screen it will allow phone screen to turn off.

Do you know : How Android Image Loading Library Works?

How Android prevent screen off library works?

  • This library uses the front camera to sense when you are looking at your device
  • This uses Google Play Services Mobile Vision API to track users eye using the device front camera.
  • It keeps the screen from turning off regardless of the screen timeout setting if the user is looking at the screen by detecting user’s eyes.

Integrating Android prevent screen off in your application:

Let’s dive into some technical stuff and see how you can integrate this library in your application and use it.

[tmh_article_ads]

 

Add Gradle dependency:

  • To start with the integration, first provide the Gradle dependency of the library by entering below lines in your module level build.gradle.
dependency{
    compile 'com.kevalpatel2106:prevent-screen-off:1.0'
}
  • This library automatically adds android.permission.CAMERA and android.permission.WAKE_LOCK permission in your applications AndroidManifest.xml file.

Initialize in your activity:

  • First, you need to inherit AnalyserActivity in the activity which you want to control screen on/off automatically. The library will synchronize with your activity life-cycle and start and stop eye tracking based on your activity state.
  • Library will start tracking user eyes as soon as activity comes into the foreground. If the user is looking at the screen this will prevent the screen from turning off.
  • When library detects that the user is not looking at the screen, this will turn off the screen after some time.
  • It will stop eye tracking when your activity goes into background to preserve the battery.
  • Implement ScreenListener to receive the callbacks from the library.
public class MainActivity extends AnalyserActivity      //Inherit AnalyseActivity to automatically manage activity callback.
        implements ScreenListner {                      //Implement the listener to get the callbacks
  • Handle the callbacks and errors received from ScreenListener.
public void onScreenMonitoringStart() {
    //This callback will receive when eye tracking algorithm is intilized.
}

@Override
public void onScreenMonitoringStop() {
      //This callback will receive when eye tracking algorithm is stopped.
}

@Override
public void onErrorOccurred(int errorCode) {
    switch (errorCode) {
        case Errors.UNDEFINED:  
            //Error is not defined. 
            //Library won't control the screen on/off anymore.
            break;
        case Errors.CAMERA_PERMISSION_NOT_AVAILABLE:    
            //Camera permission is not available ask for the runtime camera permission
            break;
        case Errors.FRONT_CAMERA_NOT_AVAILABLE:     
            //Device does not have the front camera. 
            //So, this library won't control the screen on/off.
            break;
        case Errors.LOW_LIGHT:       
            //Low light in the surrounding environment so that eye tracking cannot work. 
            //Library won't control the screen on/off anymore. 
            break;
        case Errors.PLAY_SERVICE_NOT_AVAILABLE:     
            //This device doesn't have the play services installed.
            // The SDK will display the error dialog it self. This will stop the eye tracker and will not
            // prevent screen off automatically.
            break;
    }
}
  • That’s it. You successfully integrated the library.

Download this library and Demo

Recommended : Android Oreo Vs iOS 11 : Comparison you should know about this

Android prevent screen off won’t work if,

  • When camera fails to initialize or your front camera is being used by another application. In that case, you will receive Errors.UNDEFINED error code in onErrorOccured event.
  • When light source is behind the user or there is low light in the surrounding environment, so that eye tracking is not possible. In that case, you will receive Errors.LOW_LIGHT error code in onErrorOccured event. At this point you can show a message to your user to go to the place where enough light available.
  • Google Play Service not available. In that case you will receive Errors.PLAY_SERVICE_NOT_AVAILABLE error code in onErrorOccured event. In this case, the library will automatically display dialog to install or update Google Play Services application from the play store, if the device supports Google Play Service.
  • If the device does not have the front camera. In that case you will receive Errors.FRONT_CAMERA_NOT_AVAILABLE error code in onErrorOccured event. In this case we are helpless. 🙁

Where can you use this feature?

  • Tracking user’s eye using device camera consumes more battery. So, it is advisable that you don’t integrate automatic screen control in every screen of your application.
  • You can integrate this features in your application activity, which has more textual content to read. An e.g. activity that shows chat conversation in messaging app or activity that displays full article in your blogging application. (This list can be extended for may other use cases. Let me know if you have more ideas in comments.)

By Tell Me How

It is a technology blog and admin has excellent experience in programming from 5+ year. You can contact us at ceo.tellmehow@gmail.com

Share your thoughts

Leave a Reply

Loading Facebook Comments ...
Loading Disqus Comments ...