cocos2d-x 保持屏幕点亮及自动变灰
很早之前遇到的问题,现在记录一下。有一家Android渠道(抱歉,时间太长了已经记不大清楚是哪一家了 oppo/联想/酷派?)在我们提交新版本时拒绝了,理由是:手机背光状态下,屏幕不会自动变灰。

这里为了测试,我将它改为30秒,这样做有什么影响呢?就是开启任何一个应用,在30秒之内,我如果没有任何的操作,就自动锁屏了。你可以拿你的手机试一下,比如打开微信然后放在那里不动,30之后它表现出来的的效果跟按了电源键锁屏类似。但还是有区别滴:
1)它有一个过渡阶段:屏幕由亮变暗,几秒之后屏幕才黑掉,需要通过按电源键来恢复;
2)没有解除屏幕保护的过程:当按下电源键后,屏幕重新被点亮,显示的就是上一次的界面,比如前面讲的微信的界面,而直接通过按电源键关闭屏幕的,而且你设置过屏幕保护(比如人脸解锁、图案解锁、数字密码解锁、混合密码解锁等等),再次按下电源键点亮屏幕时是先需要解除屏幕保护的;
3)没有声音:背光倒计时结束后,屏幕黑掉,没有声音,按电源键重新点亮屏幕也没有声音,而通过电源键关闭和点亮屏幕默认都是有声音的;
游戏存在的问题是,无论等待多长时间,屏幕一直被点亮,这样会导致一个问题:耗电会快,因为你游戏一直开在那里,CPU和屏幕都是需要手机电池供电的。要解决这个问题,先来了解一下Android中最重要的组件Activity,它的生命周期:

(图片来源百度经验:安卓Activity生命周期详解)
要解决上面说的那个问题,也就是当Activity的onResume()被调用后,需要保持屏幕始终被点亮,当onPause()被调用后,要释放屏幕始终被点亮,从而转交给系统进行默认处理。
关于Android屏幕锁定,一搜网上就有很多参考资料,我找了一些也试了很多,发现都无法满足要求,最后找到一篇关于FLAG_KEEP_SCREEN_ON的文章才解决掉,废话不多了,直接上代码:
@Override
protected void onPause(){
//todo
closeKeepScreenOn();
super.onPause();
}
@Override
protected void onResume() {
//todo
openKeepScreenOn();
super.onResume();
}
public boolean bFlagKeepScreen = true;
// 开启屏幕始终点亮
public void openKeepScreenOn()
{
closeKeepScreenOn();
if (bFlagKeepScreen)
{
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Log.i("FLAG_KEEP_SCREEN_ON", "open");
}
} // 关闭屏幕始终点亮
public void closeKeepScreenOn()
{
if (bFlagKeepScreen)
{
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Log.i("FLAG_KEEP_SCREEN_ON", "close");
}
}
参考资料:
Android 屏幕锁 - FLAG_KEEP_SCREEN_ON
Keep the screen awake throughout my activity
Cocos2dx 解决在Android平台运行游戏长时间不操作,导致的锁屏问题
cocos2d-x 保持屏幕点亮及自动变灰的更多相关文章
- 【WP开发】在手机屏幕点亮时播放声音
今天说的内容有点流氓,请诸君在开发应用时谨慎使用. 那么,这活儿到底有多流氓呢? 先介绍一下要实现的功能:当用户按电源键(也可以是双击屏幕)点亮手机的屏幕时播放一下短音乐,而且应用程序可以不在前台运行 ...
- cocos2d-x 如何保持屏幕常亮
转自:http://blog.csdn.net/wolfking_2009/article/details/8939027 貌似cocos2d-x没有接口直接做这个功能 而各个平台又不一样,所以只能对 ...
- win10 uwp 屏幕常亮
我们在播放视频需要屏幕常亮,我们可以使用DisplayRequest,因为代码简单我直接写,代码来自https://msdn.microsoft.com/en-us/library/windows/a ...
- LongLightUtils【保持屏幕常亮工具类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里只是简单记录下保持屏幕常亮工具类LongLightUtils的使用,具体请阅读参考资料<Android屏幕常亮,其实很简单 ...
- Xamarin Essentials教程屏幕常亮ScreenLock
Xamarin Essentials教程屏幕常亮ScreenLock 在一段时间内,如果用户没有对设备进行操作,设备就会自动关闭屏幕.用户必须手动操作,才能点亮屏幕.但是很多应用需要在用户没有操作 ...
- 完美实现Android的屏幕常亮功能
笔者所在公司做的APP是股票类的,用户在查看股票报价页面的时候,往往需要开启盯盘模式,这个时候屏幕是不能黑屏的,黑屏会导致用户看不到一些关键报价涨跌,错过了买入卖出的最佳时机,就会给用户造成损失,这是 ...
- Android保持屏幕常亮
Android保持屏幕常亮,PowerManager.WakeLock的使用 package com.hebaijun.wakelock; import android.app.Activi ...
- 性能优化-屏幕常亮与CPU唤醒
Android在不使用的时候,屏幕在一段时间以后会变暗,再过一段时间就会熄屏,此时CPU就会休眠,那么在这个时候,Timer.Handler.Thread.Service等都会暂停,有时候我们需要屏幕 ...
- 用css3实现鼠标移进去当前亮其他变灰
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- 【论文阅读】Learning Spatial Regularization with Image-level Supervisions for Multi-label Image Classification
转载请注明出处:https://www.cnblogs.com/White-xzx/ 原文地址:https://arxiv.org/abs/1702.05891 Caffe-code:https:// ...
- 【转载】Java是传值还是传引用
1. 简单类型是按值传递的 Java 方法的参数是简单类型的时候,是按值传递的 (pass by value).这一点我们可以通过一个简单的例子来说明: /* 例 1 */ /** * @(#) Te ...
- PHP-FPM 与 Nginx 的通信机制总结
PHP-FPM 介绍 CGI 协议与 FastCGI 协议 每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而 CGI 协议就是用来使解释器与服务器可以互 ...
- chrome使用技巧(转)
原文:http://www.cnblogs.com/liyunhua/p/4544738.html 阅读目录 写在前面 快速切换文件 在源代码中搜索 在源代码中快速跳转到指定的行 使用多个插入符进行选 ...
- js文字转语音并播放
这里调用的是百度文字转语音开放API html: <div> <input type="text" id="ttsText"> < ...
- span 居中
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha ====== 把span 升级为块级元素,div 的宽度.然后使用定位,添加 text- ...
- hdu 4452 37届金华赛区 K题
题意:给一个n*n的格子,1在左上角,2在右下角,每个人有一个初始速度和方向,若遇到边缘,则朝相反方向前进,若两个人相遇则交换方向(注意方向改变后,人仍然需要移动),同时,每个人每过t1,t2时间就会 ...
- Codeforces Round #370 (Div. 2) B. Memory and Trident 水题
B. Memory and Trident 题目连接: http://codeforces.com/contest/712/problem/B Description Memory is perfor ...
- 李善友《认知升级之第一性原理》--507张PPT全解!_搜狐科技_搜狐网
http://www.sohu.com/a/151470602_733114
- java学习:JMM(java memory model)、volatile、synchronized、AtomicXXX理解
一.JMM(java memory model)内存模型 从网上淘来二张图: 上面这张图说的是,在多核CPU的系统中,每个核CPU自带高速缓存,然后计算机主板上也有一块内存-称为主内(即:内存条).工 ...