Monday, 15 June 2015

android - Wake Lock Release not working -



android - Wake Lock Release not working -

i have create app keeps screen on using wake lock. have 2 buttons, 1 turn wake lock on , 1 turn off.

the button turn on wake lock works fine, button turn off wake lock causes app crash when pressed.

here's code:

public class mainactivity extends actionbaractivity { @override @suppresswarnings("deprecation") protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); setupscreenonbutton(); setupscreenoffbutton(); } @suppresswarnings("deprecation") private void setupscreenoffbutton() { button screenoffbutton = (button) findviewbyid(r.id.buttonscreenoff); screenoffbutton.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { powermanager pm = (powermanager) getsystemservice(context.power_service); powermanager.wakelock wl = pm.newwakelock(powermanager.full_wake_lock | powermanager.on_after_release,"screen off"); wl.release(); toast.maketext(mainactivity.this, "screen off", toast.length_short).show(); } }); } @suppresswarnings("deprecation") private void setupscreenonbutton() { button screenonbutton = (button) findviewbyid(r.id.buttonscreenon); screenonbutton.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { powermanager pm = (powermanager) getsystemservice(context.power_service); powermanager.wakelock wl = pm.newwakelock(powermanager.full_wake_lock | powermanager.acquire_causes_wakeup,"screen on"); wl.acquire(); toast.maketext(mainactivity.this,"screen on", toast.length_short).show(); } }); }

any ideas on i'm doing wrong?

you need release same wakelock, acquired before, not new one.

edit: added code (untested):

public class mainactivity extends actionbaractivity { powermanager.wakelock wl; @override @suppresswarnings("deprecation") protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); powermanager pm = (powermanager) getsystemservice(context.power_service); wl = pm.newwakelock(powermanager.full_wake_lock | powermanager.on_after_release,"screen off"); setcontentview(r.layout.activity_main); setupscreenonbutton(); setupscreenoffbutton(); } @suppresswarnings("deprecation") private void setupscreenoffbutton() { button screenoffbutton = (button) findviewbyid(r.id.buttonscreenoff); screenoffbutton.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { wl.release(); toast.maketext(mainactivity.this, "screen off", toast.length_short).show(); } }); } @suppresswarnings("deprecation") private void setupscreenonbutton() { button screenonbutton = (button) findviewbyid(r.id.buttonscreenon); screenonbutton.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { wl.acquire(); toast.maketext(mainactivity.this,"screen on", toast.length_short).show(); } }); }

android button crash wakelock android-wake-lock

No comments:

Post a Comment