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/** 235fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * Hold a wakelock that can be acquired in the AlarmReceiver and 245fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project * released in the AlarmAlert activity 255fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project */ 265fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Projectclass AlarmAlertWakeLock { 275fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 28f47699dd4704917713004099b5e3609be48653c4Patrick Scott private static PowerManager.WakeLock sCpuWakeLock; 295fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 30df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott static PowerManager.WakeLock createPartialWakeLock(Context context) { 31df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott PowerManager pm = 32df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott (PowerManager) context.getSystemService(Context.POWER_SERVICE); 33df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott return pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Log.LOGTAG); 34df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott } 35df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott 36f47699dd4704917713004099b5e3609be48653c4Patrick Scott static void acquireCpuWakeLock(Context context) { 37f47699dd4704917713004099b5e3609be48653c4Patrick Scott if (sCpuWakeLock != null) { 38f47699dd4704917713004099b5e3609be48653c4Patrick Scott return; 395fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project } 405fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project 41df77f79bbf931894d91cd0d8334f204ff67e903aPatrick Scott sCpuWakeLock = createPartialWakeLock(context); 42f47699dd4704917713004099b5e3609be48653c4Patrick Scott sCpuWakeLock.acquire(); 43f47699dd4704917713004099b5e3609be48653c4Patrick Scott } 44f47699dd4704917713004099b5e3609be48653c4Patrick Scott 451884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas static void acquireScreenCpuWakeLock(Context context) { 461884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas if (sCpuWakeLock != null) { 471884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas return; 481884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas } 491884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 501884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas sCpuWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK 511884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, Log.LOGTAG); 521884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas sCpuWakeLock.acquire(); 531884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas } 541884e57d072c4b59635721f60c32b6d84bafc36dRobyn Coultas 55d776e51cec79901a0d656bba7b1f3780cceac57dPatrick Scott static void releaseCpuLock() { 56f47699dd4704917713004099b5e3609be48653c4Patrick Scott if (sCpuWakeLock != null) { 57f47699dd4704917713004099b5e3609be48653c4Patrick Scott sCpuWakeLock.release(); 58f47699dd4704917713004099b5e3609be48653c4Patrick Scott sCpuWakeLock = null; 59f47699dd4704917713004099b5e3609be48653c4Patrick Scott } 60d776e51cec79901a0d656bba7b1f3780cceac57dPatrick Scott } 615fedae0fb8cc29db88719329d52bdd62aad14277The Android Open Source Project} 62