android - Listening for ACTION_SCREEN_OFF -
i'm trying start service runs in background listening action_screen_off
, when finds action_screen_off
, starts activity.
i read somewhere need create broadcastreceiver because putting in manifest xml doesn't work. have no idea started after searching.
you cannot declare action_screen_on
, action_screen_off
in androidmanifest.xml. allowed catch them while activity running.
here's example.
the broadcastreceiver:
public class screenreceiver extends broadcastreceiver { public static boolean wasscreenon = true; @override public void onreceive(final context context, final intent intent) { if (intent.getaction().equals(intent.action_screen_off)) { // whatever need here wasscreenon = false; } else if (intent.getaction().equals(intent.action_screen_on)) { // , whatever need here wasscreenon = true; } } }
the activity:
public class exampleactivity extends activity { private broadcastreceiver mreceiver = null; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // initialize receiver final intentfilter filter = new intentfilter(intent.action_screen_on); filter.addaction(intent.action_screen_off); mreceiver = new screenreceiver(); registerreceiver(mreceiver, filter); // code } @override protected void onpause() { // when screen turn off if (screenreceiver.wasscreenon) { // case when onpause() called system due screen state change log.e("myapp", "screen turned off"); } else { // when onpause() called when screen state has not changed } super.onpause(); } @override protected void onresume() { super.onresume(); // when screen turns on if (!screenreceiver.wasscreenon) { // when onresume() called due screen state change log.e("myapp", "screen turned on"); } else { // when onresume() called when screen state has not changed } } @override protected void ondestroy() { if (mreceiver != null) { unregisterreceiver(mreceiver); mreceiver = null; } super.ondestroy(); } }
you solve question listening these events service
.
Comments
Post a Comment