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