本文转载至  http://gaohaijun.blog.163.com/blog/static/176698271201161524857373/

 
 

问题:那位能说一下怎么能检测到iphone的屏幕现在是否在被点亮的状态,还是被关闭的黑屏状态,
要用那个api ,给点提示 谢谢了。

复制代码

  1. - (void)didTurnOnDisplay;
  2. - (void)didTurnOffDisplay;

没有测试,但是相信可以。

刚刚测试,假如是子类化UIApplication是无法接受到这个方法的。用Objc Runtime的method_exchangeImplementations(method, method)就可以。

以下代码:

UIApplication方面:

 

复制代码

  1. @interface UIApplication (_)
  2. - (void)handleDidTurnOnDisplay;
  3. - (void)handleDidTurnOffDisplay;
  4. @end
  5. @implementation UIApplication (_)
  6. - (void)handleDidTurnOnDisplay
  7. {
  8. NSLog(@"Did turn on display.");
  9. //[self handleDidTurnOnDisplay];
  10. }
  11. - (void)handleDidTurnOffDisplay
  12. {
  13. NSLog(@"Did turn off display.");
  14. //[self handleDidTurnOffDisplay];
  15. }
  16. @end

UIApplicationDelegate:

 

复制代码

  1. - (void)applicationDidFinishLaunching:(UIApplication *)application {
  2. Method m1 = class_getInstanceMethod([UIApplication class], @selector(didTurnOnDisplay));
  3. Method m2 = class_getInstanceMethod([UIApplication class], @selector(didTurnOffDisplay));
  4. Method m3 = class_getInstanceMethod([UIApplication class], @selector(handleDidTurnOnDisplay));
  5. Method m4 = class_getInstanceMethod([UIApplication class], @selector(handleDidTurnOffDisplay));
  6. method_exchangeImplementations(m1, m3);
  7. method_exchangeImplementations(m2, m4);
  8. [window makeKeyAndVisible];
  9. }
  10. - (void)applicationWillResignActive:(UIApplication *)application
  11. {
  12. NSLog(@"Application will resign active.");
  13. }
  14. - (void)applicationDidBecomeActive:(UIApplication *)application
  15. {
  16. NSLog(@"Application did become active.");
  17. }

以上代码在打开后关闭屏幕再打开的条件下输出:

引用
2009-08-17 19:05:37.770 *[380:207] Application did become active.
2009-08-17 19:06:36.370 *[380:207] Did turn off display.
2009-08-17 19:06:36.452 *[380:207] Application will resign active.
2009-08-17 19:06:43.310 *[380:207] Did turn on display.
2009-08-17 19:06:43.415 *[380:207] Application did become active. 

可见这个是方法在delegate的willResignActive和didBecomeActive之前调用。

 
其实屏幕在变黑时, 会通知程序
- (void)applicationWillResignActive:(UIApplication *)application;

而解锁后变亮会触发
- (void)applicationDidBecomeActive:(UIApplication *)application;

 
 
 
 
 

iphone怎么检测屏幕是否被点亮 (用UIApplication的Delegate)的更多相关文章

  1. 将网站添加到iPhone的主屏幕上

    我之前有篇文章介绍过如何将网站固定到Windows的开始菜单,并可以自定义图标.颜色以及Windows推送通知,其实Apple也有类似的功能,通过在网页的head部分添加link标记,在Safari浏 ...

  2. 转载:iPhone 6 Plus 屏幕宽度问题 375 vs 414

    首先看一张比较简单明了的 iPhone 6 与 iPhone 6 Plus 对比图,来自 PaintCode 的<The Ultimate Guide To iPhone Resolutions ...

  3. iPhone手机的屏幕尺寸、分辨率及适配

    1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS ...

  4. iphone及ipad屏幕尺寸参考

    初代iPhone 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone 3GS也保持不变.那时编写iOS的App(应 ...

  5. iPhone设备及屏幕适配

    // // Common.h // 微信 // // #ifndef Common_h #define Common_h // iPhone设备及屏幕适配 //4的设备 #define KDevice ...

  6. jquery检测屏幕宽度并跳转页面

    jquery检测屏幕宽度并刷新页面 var owidth = ($(window).width()); //浏览器当前窗口可视区域宽度 if(owidth<640){//小于640跳转一个网址, ...

  7. js 检测屏幕分辨率

    js 检测屏幕分辨率 class screenChecker { constructor() { this.screen = window.screen; this.fullscreen = fals ...

  8. iPhone 12 Pro 屏幕时间设置的密码锁出现弹窗 UI 错位重大 Bug

    iPhone 12 Pro 屏幕时间设置的密码锁出现弹窗 UI 错位重大 Bug iOS 14.1 Bug 弹窗 UI 非常丑 弹窗屏占太高了 屏幕使用时间 https://support.apple ...

  9. 监听iOS检测屏幕旋转状态,不需开启屏幕旋转-b

    -(void)rotation_icon:(float)n { UIButton *history_btn= [self.view viewWithTag:<#(NSInteger)#>] ...

随机推荐

  1. 控制流程完整性:给大家介绍一种“另类”的Javascript反分析技术

    写在前面的话 理解恶意软件的真实代码对恶意软件分析人员来说是非常有优势的,因为这样才能够真正了解恶意软件所要做的事情.但不幸的是,我们并不总是能够得到“真实”的代码,有时恶意软件分析人员可能需要类似反 ...

  2. JAVA之HashMap集合

    /** * HashMap集合讲解 * HashMap集合不允许集合元素的Key重复 */package com.test; import java.util.*; public class test ...

  3. RESTful接口签名认证实现机制

    RESTful接口 互联网发展至今,催生出了很多丰富多彩的应用,极大地调动了人们对这些应用的使用热情.但同时也为互联网应用带来了严峻的考验.具体体现在以下几个方面: 1.     部署方式的改变:当用 ...

  4. web-inf文件夹的使用

    web-inf文件夹在正常情况下系统是不允许外界直接访问的,访问里面的文件就会出现404错误,但是系统可以自身进行访问,所有要使系统去访问的话就需要使用拦截控制器去接受外界命令,由控制器来转发访问请求 ...

  5. 测试用例 自动生成工具PICT与AllPairs

    通常我们在设计或编写测试用例时,存在一个"痛点":要么设计的测试用例存在遗漏,难以100%覆盖测试需求:要么被测系统过于复杂,设计的测试用例过多,导致前期的设计和后续的执行工作量过 ...

  6. 2016.3.16__HTML5新特性__第八天

    HTML 5 + CSS 3 假设您认为这篇文章还不错,能够去H5专题介绍中查看很多其它相关文章. 今日代码非常冗杂,所以非常多内容直接摘自网上,假设造成您的不适.请留言告知. 非常感谢. 输入标签, ...

  7. 倍福TwinCAT(贝福Beckhoff)基础教程4.1 TwinCAT如何读写TXT文件

    TwinCAT提供了FB_FileRead等一系列读写文件的方法,本小程序演示的是多个贝福自带的FBD功能块连起来用的方法,跟前面讲的一样,建议在初始化的时候把所有FBD都复位,准备使用   真正的读 ...

  8. DeleteDC、ReleaseDC 、DeleteObject的使用

    DeleteDC 该函数删除指定的设备上下文环境(DC). 原型: BOOL DeleteDC(HDC hdc): 参数: hdc:设备上下文环境的句柄. 返回值: 成功,返回非零值:失败,返回零.调 ...

  9. python例子三

    例一:匹配长度为1-15的域名 #-*-encoding:utf--*- import re regex=re.compile('^www[.][a-z]{1,15}[.](com|org)') m1 ...

  10. 谈一谈AGP

    typedef enum D3DPOOL { D3DPOOL_DEFAULT = 0, D3DPOOL_MANAGED = 1, D3DPOOL_SYSTEMMEM = 2, D3DPOOL_SCRA ...