对我来说,这些方法不起作用。所以我使用其他场景(不是微不足道)来关闭我的屏幕。

Android有2个标志,负责清醒:

显示 - >屏幕TimeOut

应用程序 - >开发 - > 充电时保持清醒复选框。

我使用了以下流程:

首先保存您之前的配置,例如屏幕超时为1分钟,并 在充电时保持清醒状态。

之后,我取消选中充电时保持清醒并将屏幕超时设置为最短时间。

我注册广播接收器服务从屏幕关闭的Android获取事件。

当我关闭屏幕上的事件时,我将先前的配置设置为默认值:屏幕超时为1分钟并且 在检查充电时保持清醒状态。

取消注册接收器

15秒后 设备睡觉

这是代码片段:

广播接收器

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

/**

* Catch Screen On/Off

* */

public class BroadcastReceiverScreenListener extends BroadcastReceiver{

private BroadCastListenerCallBackItf mBroadCastListenerCallBack = null;

public BroadcastReceiverScreenListener(

BroadCastListenerCallBackItf broadCastListenerCallBack) {

this.mBroadCastListenerCallBack = broadCastListenerCallBack;

}

@Override

public void onReceive(Context arg0, Intent intent) {

if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {

mBroadCastListenerCallBack.broadCastListenerCallBack__ScreenOff_onResponse();

}

}

}

用作回调的接口

public interface BroadCastListenerCallBackItf {

public void broadCastListenerCallBack__ScreenOff_onResponse();

}

主类2种方法:

....

AndroidSynchronize mSync = new AndroidSynchronize();

....

public void turnScreenOff(int wait){

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);

filter.addAction(Intent.ACTION_SCREEN_OFF);

BroadCastListenerCallBackItf broadCastListenerCallBack = this;

BroadcastReceiver mReceiver = new BroadcastReceiverScreenListener(broadCastListenerCallBack);

m_context.registerReceiver(mReceiver, filter);

//set Development --> disable STAY_ON_WHILE_PLUGGED_IN

Settings.System.putInt(

m_context.getContentResolver(),

Settings.System.STAY_ON_WHILE_PLUGGED_IN,

0                                );

// take current screen off time

int defTimeOut = Settings.System.getInt(m_context.getContentResolver(),

Settings.System.SCREEN_OFF_TIMEOUT, 3000);

// set 15 sec

Settings.System.putInt(m_context.getContentResolver(),

Settings.System.SCREEN_OFF_TIMEOUT, 15000);

// wait 200 sec till get response from BroadcastReceiver on Screen Off

mSync.doWait(wait*1000);

// set previous settings

Settings.System.putInt(m_context.getContentResolver(),

Settings.System.SCREEN_OFF_TIMEOUT, defTimeOut);

// switch back previous state

Settings.System.putInt(

m_context.getContentResolver(),

Settings.System.STAY_ON_WHILE_PLUGGED_IN,

BatteryManager.BATTERY_PLUGGED_USB);

m_context.unregisterReceiver(mReceiver);

}

public void broadCastListenerCallBack__ScreenOff_onResponse() {

mSync.doNotify();

}

....

AndroidSynchronize类

public class AndroidSynchronize {

public void doWait(long l){

synchronized(this){

try {

this.wait(l);

} catch(InterruptedException e) {

}

}

}

public void doNotify() {

synchronized(this) {

this.notify();

}

}

public void doWait() {

synchronized(this){

try {

this.wait();

} catch(InterruptedException e) {

}

}

}

}

[编辑]

您需要注册权限:

android.permission.WRITE_SETTINGS

android屏幕关闭,在Android上关闭屏幕相关推荐

  1. java 解锁window屏幕,如何检测iPhone上的屏幕锁定/解锁事件?

    看看这个,我想检测锁定/解锁事件,我通过达尔文通知解决了它 . 您可以通过 "com.apple.springboard.lockcomplete" 检测设备被锁定时的事件 . / ...

  2. VR眼镜连接android设备,如何将VR眼镜的屏幕投影到计算机或电视上?

    文字/挪威森林 尽管VR眼镜的目的是让玩家沉浸在虚拟世界中,体验从不同角度观看视频,玩游戏或成为人生的胜利者.但是总有一些玩家希望与他人共享虚拟世界的图像,因此,我现在要提到的是"投影&qu ...

  3. android编辑框显示,android – 如何在屏幕上显示文本编辑框?

    您的问题最简单的解决方案是在您主要(肖像修复的)活动中启动的单独的对话框主题的活动中显示您的EditText. EditText Activity不应该将其方向固定,因此它会沿着您滑出键盘时的期望旋转 ...

  4. 在Android的 设置-显示 中增加控制屏幕旋转方向的选项

    在Android的 设置->显示 中增加控制屏幕旋转方向的选项 参考博文 实现目标 效果局限 代码实现 配置资源文件 界面搭建 功能实现 默认值修改 其他情况 结语 参考博文 Android-x ...

  5. Android锁屏状态下点亮屏幕并弹窗提醒

    类似于手机锁屏状态下QQ来消息然后点亮屏幕并弹窗,如图. 相信QQ的这个功能大家都是很熟悉的了,下面就开始讲具体的实现步骤. 一.新建一个Activity并在OnCreate中添加四个标识 @Over ...

  6. android softkeyboard,如何以编程方式关闭Android Soft KeyBoard?

    如何以编程方式关闭Android Soft KeyBoard? 我目前正在使用以下代码显示软键盘 InputMethodManager imm = (InputMethodManager) getSy ...

  7. 创建支持多种屏幕尺寸的Android应用

    负责人:冰凝 原文链接:http://developer.android.com/guide/practices/screens_support.html Android涉及各种各样的支持不同屏幕尺寸 ...

  8. Android 与 Chrome OS 中针对大屏幕设备的更新

    随着智能终端硬件的不断革新,大尺寸设备的种类越来越丰富,比如手机.折叠屏设备.平板电脑.ChromeBook.外接显示器的 ChromeBox 和集成屏幕的 Chromebase 等.Google 团 ...

  9. android-支持多种屏幕[声明适用于 Android 3.2 的平板电脑布局] 七

    对于第一代运行 Android 3.0 的平板电脑,声明平板电脑 的正确方式是将它们放在有 xlarge 配置限定符的目录(例如 res/layout-xlarge/)中.为适应其他类型的平板电脑和屏 ...

最新文章

  1. 2020各省份大学排名出炉!
  2. 继续C#开发or转做产品
  3. 记录vmware的bug failed to install hcmon deriver
  4. click事件在什么时候出发_剖析setTimeout和click点击事件的触发顺序
  5. linux命令之有关网络的操作命令
  6. java shell文件_Java 文件读写示例1
  7. 练习:将从表读出来的时间戳除以1000(java读时间戳会多出3个000)用jackson包 实现...
  8. 运用二维数组打印杨辉三角(找规律题)
  9. HTTP报文-请求方式
  10. 干货|内网渗透之端口转发端口映射
  11. AD13中对工程进行编译出现的error
  12. f5计算机中代表什么,ctrl f5是什么意思
  13. java记忆翻牌_html5记忆翻牌游戏
  14. iPhone 开发常用工具
  15. CenterNet2:CenterNet再升级,原作者提出基于概率解释的两阶段目标检测
  16. Unity——点击按钮或屏幕响应事件
  17. 前端基础之CSS标签样式
  18. 沙特认证_所有的沙特机器人去哪儿了
  19. 【免费】三款超火的文字转语音工具推荐,爆款短视频配音软件必备
  20. R3LIVE代码详解(四)

热门文章

  1. Android 监听USB设备插拔事件
  2. 7.exchange2013实战操作之收件人配置
  3. JSON Schame的介绍及基本使用
  4. 数控加工中心与数控雕刻机的区别
  5. php许愿墙参考文献,许愿墙论文,关于我家的许愿墙相关参考文献资料-免费论文范文...
  6. 2022北京眼睛健康展,北京眼镜展,北京近视矫正展,眼视光展
  7. 智慧养老解决方案配合服务守护老人
  8. Contour Knowledge Transfer for Salient Object Detection
  9. ubuntu20.04,安装向日葵客户端报错问题
  10. IDEA中代码无故报红解决方法