博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LongLightUtils【保持屏幕常亮工具类】
阅读量:6002 次
发布时间:2019-06-20

本文共 4250 字,大约阅读时间需要 14 分钟。

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

前言

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

效果图

暂不需要

代码分析

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

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

1、添加权限 

2、activity使用

public class ScreenActivity extends Activity    {        PowerManager powerManager = null;        WakeLock wakeLock = null;         @Override        protected 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");       }        @Override       protected void onResume() {           super.onResume();           wakeLock.acquire();       }        @Override       protected 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{    @Override    public void onCreate() {        super.onCreate();        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {            @Override            public void onActivityCreated(Activity activity, Bundle bundle) {            }            @Override            public void onActivityStarted(Activity activity) {            }            @Override            public void onActivityResumed(Activity activity) {                LongLightUtils.keepScreenLongLight(activity);            }            @Override            public void onActivityPaused(Activity activity) {            }            @Override            public void onActivityStopped(Activity activity) {            }            @Override            public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {            }            @Override            public 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布局文件【这里只是一个空布局】

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 {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_longlightutils);        LongLightUtils.keepScreenLongLight(this,true);//保持屏幕常亮    }    @Override    protected void onDestroy() {        LongLightUtils.keepScreenLongLight(this,false);//保持屏幕常亮【取消】        super.onDestroy();    }}

混淆配置

参考资料

项目demo下载地址

暂时空缺

你可能感兴趣的文章
JAVA学习笔记——JAVA基础语法(六)
查看>>
modelform实例学习
查看>>
EF CRUD
查看>>
初识python:time 模版
查看>>
mysql慢查询日志分析工具mysqldumpslow
查看>>
4.09.1
查看>>
电话本管理程序(实现增删改查功能)
查看>>
LOCK_TIMEOUT
查看>>
Python脱产8期 Day29 2019/5/24
查看>>
学c#语言的感想
查看>>
Windows 驱动模型的发展历史
查看>>
Android视图的截图
查看>>
App列表之分组ListView
查看>>
Android&iOS崩溃堆栈上报
查看>>
关于iOS开发的各种证书
查看>>
【Openjudge】 算24
查看>>
lvreduce -L 1000M /dev/vg0/lv0 表示最后缩减至多大,不是减少了多大
查看>>
ES 自动恢复分片的时候不恢复了是磁盘超过了85%,然后不恢复了 ES可以配置多个数据目录...
查看>>
linux查杀病毒的几个思路
查看>>
宽带速度
查看>>