RT
解决方案 »
- listview的adapter中的item状态怎么保存
- Android 如何调用layout-land 和layout
- android中从Activity1跳转到另一个Activity2中,再跳回来就出现了内存泄漏的问题????怎么解决啊???
- 在pc端用adb命名安装一个程序,如何返回安装成功或失败
- 百度地图加载先出现黑屏,几秒后才加载完成,怎么解决?
- 绑定ListView的时候弹出这样的错误,有时正常有时会出现这样的错误
- listview+checkbox +下拉刷新 焦点问题
- 请问这句什么意思for(UpdateInfo info:mUpdateList)
- 为什么holder调addcallback报错
- 从不同的Activity调用同一个activity,怎么返回各自的activity?
- re-parented什么意思
- 限制Android ScrollView的区域
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏
//设置屏幕不休眠
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
import android.content.Context;
import android.content.SharedPreferences;
import android.os.PowerManager;
import android.preference.PreferenceManager;public class ManageWakeLock {
private static PowerManager.WakeLock myWakeLock; // private static int TIMEOUT_SECS = 10; public static void acquire(Context context) {
if (myWakeLock != null) {
// myWakeLock.release();
return;
} PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); boolean wakeScreen = true; // int flags = PowerManager.ON_AFTER_RELEASE;
int flags = 0;
if (wakeScreen) {
ManageKeyguard.disableKeyguard(context);
flags = PowerManager.SCREEN_BRIGHT_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP;
} else {
flags = PowerManager.PARTIAL_WAKE_LOCK;
} myWakeLock = pm.newWakeLock(flags, Log.LOGTAG);
if (Log.DEBUG) Log.v("Wakelock acquired");
// myWakeLock.acquire(TIMEOUT_SECS * 1000);
myWakeLock.acquire();
} static void release() {
if (myWakeLock != null) {
if (Log.DEBUG) Log.v("Wakelock released");
myWakeLock.release();
myWakeLock = null;
}
}
}
然后定义自己的PendingIntent:
Intent intent = new Intent(AlarmTest.this, MyAlarmBroadCast.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
接着调用set方法来设置到时间后触发intent里的广播接收:
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);然后就是唤醒屏幕和解锁键盘了,WalkLock - 顾名思义 唤醒锁 点亮屏幕用的,KeyguardLock - 顾名思义 键盘锁 解锁键盘用的,唤醒屏幕和解锁屏幕的代码如下:
public void unlockScreen() {
// 获取PowerManager的实例
PowerManager pm = (PowerManager) mContext
.getSystemService(Context.POWER_SERVICE);
// 得到一个WakeLock唤醒锁
mWakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "SimpleTimer");
if (!mWakelock.isHeld()) {
// 唤醒屏幕
mWakelock.acquire();
} // 获得一个KeyguardManager的实例
km = (KeyguardManager) mContext
.getSystemService(Context.KEYGUARD_SERVICE);
// 得到一个键盘锁KeyguardLock
mKeyguardLock = km.newKeyguardLock("SimpleTimer");
if (km.inKeyguardRestrictedInputMode()) {
// 解锁键盘
mKeyguardLock.disableKeyguard();
}
}注意,这里使用的mWakelock.isHeld())来判断屏幕当前是否是休眠状态,从Android 2.1 API Level7开始增加了一个判断屏幕是否处于点亮状态可以使用public boolean isScreenOn ()这个方法。
锁屏幕的代码是
public void lockScreen() {
// release screen
if (!km.inKeyguardRestrictedInputMode()) {
// 锁键盘
mKeyguardLock.reenableKeyguard();
}
// 使屏幕休眠
if (mWakelock.isHeld()) {
mWakelock.release();
}
}
这里要注意,如果没有锁键盘而直接调用mWakelock.release()会产生一个异常。所以一定要先把键盘锁了然后再使屏幕休眠。来自:http://www.devdiv.com/thread-64416-1-1.html