【发布时间】:2018-04-01 03:13:21
【问题描述】:
我正在使用Pomodoro Technique 创建一个计时器。第一个计时器将是 20 分钟,在这段时间内我希望屏幕会关闭。我希望屏幕在计时器完成后重新打开。
在我的清单中,我要求获得以下权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
在我的计时器类中,我在 onCreat() 中获得了窗口:
Window win;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_timer);
createTimer(time_work);
win = this.getWindow();
}
在我的计时器的 onFinish() 中,我调用了 wakeUp():
public void onFinish() {
text_time.setText(R.string.done);
if (isWork) {
pomodoro_count++;
text_pomodoro_count.setText(String.valueOf(pomodoro_count));
}
isWork = !isWork;
onResume();
//I have more here but removed for brevity
wakeUp();
}
在 wakeUp() 中,我尝试了各种组合:
private void wakeUp() {
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
win.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
【问题讨论】:
-
需要更多信息。这是在屏幕锁定时调用的吗?
-
我提到你的链接说在哪里调用wakeUp(),但是这个方法可能被弃用了。还有一些其他示例,请尝试一下!
-
是的,该链接已被弃用一段时间。我明天将对此进行破解。谢谢你的帮助。