118b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu/* 218b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * Copyright (C) 2013 The Android Open Source Project 318b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * 418b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * Licensed under the Apache License, Version 2.0 (the "License"); 518b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * you may not use this file except in compliance with the License. 618b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * You may obtain a copy of the License at 718b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * 818b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * http://www.apache.org/licenses/LICENSE-2.0 918b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * 1018b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * Unless required by applicable law or agreed to in writing, software 1118b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * distributed under the License is distributed on an "AS IS" BASIS, 1218b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1318b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * See the License for the specific language governing permissions and 1418b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * limitations under the License. 1518b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu */ 1618b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu 1718b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhupackage com.android.testing.alarmservice; 1818b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu 1918b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhuimport android.content.Context; 2018b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhuimport android.os.PowerManager; 2118b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhuimport android.os.PowerManager.WakeLock; 2218b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhuimport android.util.Log; 2318b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu 2418b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu/** 2518b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * A singleton used for controlling and sharing of states/wakelocks 2618b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu * 2718b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu */ 2818b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhupublic class WakeUpController { 2918b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu 3018b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu private static final String LOG_TAG = WakeUpController.class.getName(); 3118b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu private static WakeUpController mController = null; 3218b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu private WakeLock mWakeLock = null; 3318b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu private Object mWakeSync = new Object(); 3418b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu 3518b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu private WakeUpController() { 3618b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu Log.i(LOG_TAG, "Created instance: 0x" + Integer.toHexString(this.hashCode())); 3718b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu } 3818b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu 3918b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu public static synchronized WakeUpController getController() { 4018b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu if (mController == null) { 4118b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu mController = new WakeUpController(); 4218b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu } 4318b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu return mController; 4418b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu } 4518b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu 4618b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu public WakeLock getWakeLock() { 4718b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu if (mWakeLock == null) { 4818b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu PowerManager pm = 4918b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu (PowerManager) AlarmService.sContext.getSystemService(Context.POWER_SERVICE); 5018b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "testing-alarmservice"); 5118b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu Log.i(LOG_TAG, "Create wakelock: 0x" + Integer.toHexString(mWakeLock.hashCode())); 5218b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu } 5318b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu return mWakeLock; 5418b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu } 5518b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu 5618b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu public Object getWakeSync() { 5718b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu return mWakeSync; 5818b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu } 5918b892c723e812a7e111f102d2b0c0782b116bb6Guang Zhu} 60