15fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project/* 25fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 35fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * 45fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 55fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * you may not use this file except in compliance with the License. 65fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * You may obtain a copy of the License at 75fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * 85fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 95fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * 105fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 115fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 125fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * See the License for the specific language governing permissions and 145fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * limitations under the License. 155fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project */ 165fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 17fa954248b41b567dfa2ddd7bd063d3936a51758eDaniel Sandlerpackage com.android.deskclock; 185fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 195fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectimport android.content.Context; 205fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectimport android.os.PowerManager; 215fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 225fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project/** 231c7788b33dd4516dae81e6bcab043addc45fc1a1Paul Sliwowski * Utility class to hold wake lock in app. 245fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project */ 251c7788b33dd4516dae81e6bcab043addc45fc1a1Paul Sliwowskipublic class AlarmAlertWakeLock { 265fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 27f47699dd4704917713004099b5e3609be48653c4Patrick Scott private static PowerManager.WakeLock sCpuWakeLock; 285fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 291c7788b33dd4516dae81e6bcab043addc45fc1a1Paul Sliwowski public static PowerManager.WakeLock createPartialWakeLock(Context context) { 301c7788b33dd4516dae81e6bcab043addc45fc1a1Paul Sliwowski PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 31df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott return pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Log.LOGTAG); 32df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott } 33df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott 341c7788b33dd4516dae81e6bcab043addc45fc1a1Paul Sliwowski public static void acquireCpuWakeLock(Context context) { 35f47699dd4704917713004099b5e3609be48653c4Patrick Scott if (sCpuWakeLock != null) { 36f47699dd4704917713004099b5e3609be48653c4Patrick Scott return; 375fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 385fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 39df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott sCpuWakeLock = createPartialWakeLock(context); 40f47699dd4704917713004099b5e3609be48653c4Patrick Scott sCpuWakeLock.acquire(); 41f47699dd4704917713004099b5e3609be48653c4Patrick Scott } 42f47699dd4704917713004099b5e3609be48653c4Patrick Scott 431c7788b33dd4516dae81e6bcab043addc45fc1a1Paul Sliwowski public static void acquireScreenCpuWakeLock(Context context) { 441884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas if (sCpuWakeLock != null) { 451884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas return; 461884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas } 471884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 481884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas sCpuWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK 491884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, Log.LOGTAG); 501884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas sCpuWakeLock.acquire(); 511884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas } 521884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas 531c7788b33dd4516dae81e6bcab043addc45fc1a1Paul Sliwowski public static void releaseCpuLock() { 54f47699dd4704917713004099b5e3609be48653c4Patrick Scott if (sCpuWakeLock != null) { 55f47699dd4704917713004099b5e3609be48653c4Patrick Scott sCpuWakeLock.release(); 56f47699dd4704917713004099b5e3609be48653c4Patrick Scott sCpuWakeLock = null; 57f47699dd4704917713004099b5e3609be48653c4Patrick Scott } 58d776e51cec79901a0d656bba7b1f3780cceac57dPatrick Scott } 595fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project} 60