版权声明:本文为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. Python-CSS整理
  2. 拼多多再起波澜!某程序员匿名发布拼多多楼下救护车照片,却被揪出开除!...
  3. 用SAP WebIDE将CRUD Master-Detail应用打包成Hybrid App
  4. [渝粤教育] 宁波大学 聆听中国 参考 资料
  5. UISlider 滑块控件—IOS开发
  6. onethink后台登陆修改验证码!
  7. hdu 4345 Permutation
  8. 线性代数 矩阵消元与回代
  9. Ubuntu12.04password正确 入口的桌面(测试的恢复正常)
  10. Luogu3516 POI2011 Shift 构造
  11. Js 日期 多少分钟前,多少秒前
  12. Vue:embed结合ElementUI中dialog实现PDF文件预览
  13. 有限状态机FSM的写法
  14. 手机远程共享计算机文件,电脑如何共享文件到手机
  15. 不小心删除的文件怎么找回,文件误删除恢复的方法
  16. 我的拆机经历——戴尔灵越5570系列
  17. 理解Kademlia协议原理
  18. 广汽埃安发布新LOGO,推出全新高端品牌Hyper昊铂
  19. 基于32feet.net对Broadcom(Widcomm) stack蓝牙(Bluetooth)设备开发Windows Mobile与PC程序
  20. 自动打卡python脚本_Centos7从零开始配置py每日自动打卡脚本

热门文章

  1. python过京东app图形验证勾股定理_拼图验证勾股定理及勾股定理中的数学思想
  2. 最简单的方法生成全景照片
  3. 拒绝广告套路,音频营销这三招“玩的就是个性”
  4. ios实现wifi搜索连接_苹果IOS设备常见无线连接问题
  5. Arduino 蜂鸣器+按键 (按一下响一声)
  6. sql 逻辑运算符 优先级
  7. 计算机分支结构语句的实验报告,c语言 实验报告三 分支结构程序设计
  8. python 音频文件重采样8K转16K
  9. ftrack Review 双重校验
  10. 浅析oracle常见等待事件之 db file scattered read