版权声明:本文为HaiyuKing原创文章,转载请注明出处!

前言

这里只是简单记录下保持屏幕常亮工具类LongLightUtils的使用,具体请阅读参考资料《Android屏幕常亮,其实很简单》

效果图

暂不需要

代码分析

Android保持屏幕常亮的三种方法:

(1)使用PowerManager【这种方式在实际的测试过程中并没有达到屏幕常亮的效果】

1、添加权限

<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>

2、activity使用

public class ScreenActivity extends Activity{PowerManager powerManager = null;WakeLock wakeLock = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.setContentView(R.layout.main);powerManager = (PowerManager)this.getSystemService(this.POWER_SERVICE);wakeLock = this.powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");}@Overrideprotected void onResume() {super.onResume();wakeLock.acquire();}@Overrideprotected void onPause() {super.onPause();wakeLock.release();}}

(2)在当前的Activity中获取到Window对象然后调用它的addFlags方法加上一个WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 的标识。【也就是本文中提到的方案】

其中addFlags(int flags)中的flags值代表各种锁的类型对CPU 、屏幕、键盘的影响:

  • PARTIAL_WAKE_LOCK :保持CPU 运转,屏幕和键盘灯有可能是关闭的。
  • SCREEN_DIM_WAKE_LOCK :保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
  • SCREEN_BRIGHT_WAKE_LOCK :保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
  • FULL_WAKE_LOCK :保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度

(3)在布局文件里加上android:keepScreenOn="true"

在本文方案中,如果想要所有activity保持屏幕常亮,怎么办呢?

一是在BaseActivity中使用LongLightUtils.keepScreenLongLight(this,true);方法;【这个方案不适用项目中集成第三方Activity的情况】

二是在MyApplication中使用【在application中有一个方法:registerActivityLifecycleCallbacks,可以传入一个回调接口,里面有当前APP中所有的Activity的生命周期方法回调,可以获取到所有的Activity实例】

public class MyApplication extends Application{@Overridepublic void onCreate() {super.onCreate();registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {@Overridepublic void onActivityCreated(Activity activity, Bundle bundle) {}@Overridepublic void onActivityStarted(Activity activity) {}@Overridepublic void onActivityResumed(Activity activity) {LongLightUtils.keepScreenLongLight(activity);}@Overridepublic void onActivityPaused(Activity activity) {}@Overridepublic void onActivityStopped(Activity activity) {}@Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle bundle) {}@Overridepublic void onActivityDestroyed(Activity activity) {}});}
}

使用步骤

一、项目组织结构图

注意事项:

1、  导入类文件后需要change包名以及重新import R文件路径

2、  Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖

二、导入步骤

(1)将LongLightUtils复制到项目中

package com.why.project.androidcnblogsdemo.utils;import android.app.Activity;
import android.view.WindowManager;/*** Used 保持屏幕常亮的解决方法* https://blog.csdn.net/finddreams/article/details/78363031?locationNum=4&fps=1* https://blog.csdn.net/a57565587/article/details/51669520*/public class LongLightUtils {/*** 是否使屏幕常亮** @param activity*/public static void keepScreenLongLight(Activity activity, boolean isOpenLight){if (isOpenLight) {activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);} else {activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);}}
}

三、使用方法

activity布局文件【这里只是一个空布局】

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"></LinearLayout>

activity_longlightutils.xml

activity使用如下【也可以统一放到BaseActivity中使用】

package com.why.project.androidcnblogsdemo.activity;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;import com.why.project.androidcnblogsdemo.R;
import com.why.project.androidcnblogsdemo.utils.LongLightUtils;/*** Created by HaiyuKing* Used 实现屏幕常亮*/public class LongLightUtilsActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_longlightutils);LongLightUtils.keepScreenLongLight(this,true);//保持屏幕常亮
    }@Overrideprotected void onDestroy() {LongLightUtils.keepScreenLongLight(this,false);//保持屏幕常亮【取消】super.onDestroy();}
}

混淆配置

参考资料

Android屏幕常亮,其实很简单

Android保持屏幕常亮的三种方法

项目demo下载地址

暂时空缺

LongLightUtils【保持屏幕常亮工具类】相关推荐

  1. Android屏幕常亮,其实很简单

    此文属于finddreams的原创博客,转载请注明出处:http://blog.csdn.net/finddreams/article/details/78363031   笔者所在公司做的APP是股 ...

  2. CentOS命令行模式下设置屏幕常亮----没有达到预期效果

    CentOS命令行模式下设置屏幕常亮 最近在一个项目中使用了CentOS作为客户端(本着资源合理使用的原则,通常我们环境中CentOS都不安装图形界面的,就是直接命令行操作).因为是做7天*24小时测 ...

  3. android 定义数组常量,android 设置屏幕常亮

    类似设置禁止截屏和保持屏幕常亮这种依赖生命周期方法的代码,如果需要应用到多个 Activity 的话,可以将其放在 BaseActivity 基类中,避免编写重复性代码.或者还可以借助这个神奇的 Ac ...

  4. Android中关于屏幕的三个小众知识(宽屏适配、禁止截屏和保持屏幕常亮)

    转自:https://www.jb51.net/article/129633.htm 前言 宽屏适配.禁止截屏和保持屏幕常亮,这三个与屏幕有关的 Android 开发小众知识,说不定什么时候就派上用场 ...

  5. Xamarin Essentials教程屏幕常亮ScreenLock

    Xamarin Essentials教程屏幕常亮ScreenLock 在一段时间内,如果用户没有对设备进行操作,设备就会自动关闭屏幕.用户必须手动操作,才能点亮屏幕.但是很多应用需要在用户没有操作的情 ...

  6. Android开发-屏幕常亮的方法

    方法一:xml文件中的顶层布局添加属性 在你需要常亮的Activity对应的布局文件中,给需要屏幕常亮的UI组件设置:android:keepScreenOn="true" 只要A ...

  7. Android 屏幕常亮、低电量监听

    Android保持屏幕常亮只需在manifest文件注册权限并使用PowerManager进行管理: <uses-permission android:name="android.pe ...

  8. android view超出屏幕_Android APP界面保持屏幕常亮方法

    阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 1. 在AndroidMainfest.xml 中申请 WAKE_LOCK 唤醒锁权限 <?xml version=" ...

  9. html5手机常亮,vue开发的webapp中的手机物理返回键,以及屏幕常亮处理

    前言: 最近一直在做App,最近一周就要收尾了,其中有两个功能要加上: 1.用户点击手机的返回键不会退出App,而是会返回上一层; 2.用户在App中需要保持屏幕常亮; 正文: 本来我是想采用unia ...

最新文章

  1. As3.0 一些好书连接
  2. Mac OS X 下Node.js开发环境的搭建
  3. Mob统计分析数据模型理解
  4. SQL Server报“GUID应包含带4个短划线的32位数”
  5. OSPF DR选举的先后
  6. ASP.NET站点跨子域名单点登陆(SSO)的实现
  7. [Origin]图像属性:画图时修改直线的起点和终点、随图层和坐标变化、多y轴图独立编辑线条属性
  8. Java依赖注入 - DI设计模式示例教程
  9. 实体类多层嵌套 遍历_JS获取元素多层嵌套思路详解
  10. Kylin之Caused by :...The table :DWD_ORDER_INFO Dup key found
  11. CGAffineTransform 获取 旋转的弧度 和 角度 的方法
  12. PS 如何使用钢笔工具
  13. 红帽Linux7考题,RHCSA题库-RedHat-7.pdf
  14. 会议论文有影响因子吗_会议论文和期刊论文的区别
  15. 微信小程序(十二)uni-app框架开发及组件库
  16. 明明是旅游小程序却做起了内容电商?
  17. html微博图片上传,如何使上传新浪微博照片更清晰
  18. 手把手教你注册谷歌账号 亲测有效 快来学
  19. 免费、无版权约束、可商用的优质图片素材网站合集
  20. windows下载并安装JDK

热门文章

  1. SEO优化建议:请正确设置title、keywords、description
  2. randperm函数
  3. Android StudioTV开发教程(二十)电视应用程序清单 【完结篇】
  4. android非root状态,修改文件权限,非Root权限的Android上运行可执行文件
  5. 分享基因--MindMaster
  6. CSDN如何创建一个博客专栏?
  7. Kotlin-基础-文件读、写
  8. oracle 怎么注释代码,oracle代码段注释符号是什么
  9. 代码写个九宫格布局显示图片
  10. oracle左表关联与又表关联,oracle多表关联查询和子查询