package ru.net.jimm.service; import android.content.Context; import android.os.PowerManager; import jimm.Jimm; import jimm.cl.JimmModel; /** * Created with IntelliJ IDEA. * <p/> * Date: 25.05.13 17:09 * * @author vladimir */ public class WakeControl { private static final String LOCK_TAG = "JimmService"; private final JimmService service; private PowerManager.WakeLock wakeLock; public WakeControl(JimmService jimmService) { service = jimmService; } public void release() { if (isHeld()) wakeLock.release(); wakeLock = null; } public void updateLock() { JimmModel cl = Jimm.getJimm().jimmModel; boolean need = cl.isConnected() || cl.isConnecting(); if (need) { if (!isHeld()) acquire(); } else { if (isHeld()) release(); } } private void acquire() { PowerManager powerManager = (PowerManager) service.getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, LOCK_TAG); if (null != wakeLock) { wakeLock.acquire(); } } private boolean isHeld() { return (null != wakeLock) && wakeLock.isHeld(); } }