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