我希望我的应用程序能够打开屏幕并显示我的应用程序。假设我设置了一个闹钟,每小时我想让我的应用程序在设备自然休眠前显示2分钟。
我发现WakeLock (FULL_LOCK)和KeyguardManager被弃用了。
我已经创建了一个WakefulBroadcastReceiver和服务,它们正在工作。
@Override
protected void onHandleIntent(Intent intent) {
// I need to show the screen here!
for (int i=0; i<5; i++) {
Log.i("SimpleWakefulReceiver", "Running service " + (i + 1)
+ "/5 @ " + SystemClock.elapsedRealtime());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
}
Log.i("SimpleWakefulReceiver", "Completed service @ " +
SystemClock.elapsedRealtime());
SimpleWakefulReceiver.completeWakefulIntent(intent);
}
如何以编程方式打开屏幕,通过锁定并从IntentService显示我的活动?
谢谢
发布于 2015-05-15 04:13:46
我不知道你在说什么,wakelock绝对没有被弃用。某些类型不再是谷歌首选的方式,但普通的wakelock仍然存在,仍然是最简单的方式。确保在使用锁时添加ACQUIRE_CAUSES_WAKEUP标志。事实上,请注意WakefulBroadcastReceiver是通过使用wakelock实现的。
发布于 2015-05-17 19:08:07
您可以使用此代码打开屏幕。
private void turnScreenOn() {
int flags = WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON;
getWindow().addFlags(flags);
}
您可以使用此代码将其保持为打开状态,直到解除唤醒锁定。
<uses-permission android:name="android.permission.WAKE_LOCK" />
private PowerManager mPowerManager;
private PowerManager.WakeLock mWakeLock;
@Override
public void onCreate() {
super.onCreate();
mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Service");
}
private void acquireWakeLock() {
try {
mWakeLock.acquire();
}
catch (Exception e) {
e.printStackTrace();
}
}
private void releaseWakeLock() {
try {
mWakeLock.release();
}
catch (Exception e) {
}
}
https://stackoverflow.com/questions/30246425
复制相似问题