This is the main Java file that extends activity.
Create a file named ScreenON_OFF_ACTIVITY.java and place the below code in it.
package com.pack; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; public class ScreenON_OFF_ACTIVITY extends Activity { public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); onCreate(); } public void onCreate() { // initialize receiver System.out.println( "onCreate1 " ); IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); BroadcastReceiver mReceiver = new ScreenReceiver(); registerReceiver(mReceiver, filter); System.out.println( "onCreate " ); } @Override protected void onPause() { // when the screen is about to turn off if (ScreenReceiver.screenOff) { // this is the case when onPause() is called by the system due to a screen state change System.out.println( "SCREEN TURNED OFF" ); } else { // this is when onPause() is called when the screen state has not changed System.out.println( "this is when onPause() is called when the screen state has not changed " ); } super .onPause(); } @Override protected void onResume() { // only when screen turns on if (!ScreenReceiver.screenOff) { // this is when onResume() is called due to a screen state change System.out.println( "SCREEN TURNED ON" ); } else { // this is when onResume() is called when the screen state has not changed System.out.println( " this is when onResume() is called when the screen state has not changed " ); } super .onResume(); } } |
This is the class that extends the Broadcast receiver class that receives the notifications.
create a java file and name it ScreenReceiver.java and place the following code in it.
package com.pack; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class ScreenReceiver extends BroadcastReceiver { public static boolean screenOff; @Override public void onReceive(Context context, Intent intent) { System.out.println( "onReceive " ); if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { screenOff = true ; System.out.println( "SCREEN TURNED OFF on BroadcastReceiver" ); } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { screenOff = false ; System.out.println( "SCREEN TURNED ON on BroadcastReceiver" ); } Intent i = new Intent(context, UpdateService. class ); i.putExtra( "screen_state" , screenOff); context.startService(i); } } |
This the class that updates the service name it UpdateService.java.
package com.pack; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; public class UpdateService extends Service { public void onCreate() { super .onCreate(); // register receiver that handles screen on and screen off logic IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); BroadcastReceiver mReceiver = new ScreenReceiver(); registerReceiver(mReceiver, filter); } @Override public void onStart(Intent intent, int startId) { boolean screenOn = intent.getBooleanExtra( "screen_state" , false ); if (!screenOn) { System.out.println( "Screen is off" ); } else { System.out.println( "Screen is on" ); } } @Override public IBinder onBind(Intent intent) { return null ; } } |
Pingback: The service does not run if the app is killed - Tutorial Guruji