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