Flutter 实现贴耳熄屏

离脸近屏幕就黑了,离得屏幕主亮了
打电话的时候有了它就能避免误触


找不到

可是搜遍了整个flutter组织都没有发现相关代码
于是我打算自己动手丰衣足食⬇️

Android

在Android中API21之前是需要自己手动写距离传感器和熄屏亮屏的
而到API21也就是Android 5.0之后,PowerManager加入了新的常量

PROXIMITY_SCREEN_OFF_WAKE_LOCK

使得这个功能实现起来非常简单

if ((pm.getSupportedWakeLockFlags()
                 & PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK) != 0x0) {
                mProximityWakeLock =
                        pm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, LOG_TAG);
            }

iOS

在iOS中,也有相应的方法实现

// 近距离传感器的实现封装在UIKit中

// 需要使用真机测试

import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 系统APP自动开启了近距离检测(如:打电话,离脸近屏幕就黑了,离的远屏幕主亮了)
        // 但开发者APP需要手动开启
        UIDevice.current.isProximityMonitoringEnabled = true
        
        // 使用通知监听距离变化
        NotificationCenter.default.addObserver(self, selector: #selector(proximityStateChanged), name: NSNotification.Name.UIDeviceProximityStateDidChange, object: nil)
    }
    
    @objc private func proximityStateChanged(){
        if UIDevice.current.proximityState == true{ // 近距离
            print("太近了,都贴脸上了")
            // 近距离锁屏,就是让屏幕变黑,省电
            UIApplication.shared.isIdleTimerDisabled = false
        } else{ // 远距离
            print("太远了,都看不见你了")
            // 远距离不锁屏
            UIApplication.shared.isIdleTimerDisabled = true
        }
    }
}

两个平台的实现方法都有了,我们只需要做成Plugin就可以集成到自己的项目当中了

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 分析了PMS部分的亮屏流程。PMS模块中也提供了灭屏接口goTosleep(),方法给其他组件或应用来关闭屏幕,这...
    superme_阅读 8,274评论 1 2
  • 我们按下电源键就会灭屏,再按一下就会唤醒屏幕,这个是怎样的过程呢。 电源键有许多额外功能,为了能让这个主题更加清晰...
    CocoDoll阅读 11,594评论 0 7
  • 最近一直在做项目,好久没写博客了由于项目周期拖得很长,之前写的代码现在再回去看有点吃力代码写了不少,到头来却感觉脑...
    stevewang阅读 26,059评论 8 32
  • PowerManager.WakeLock public final class PowerManager.Wak...
    isharley阅读 6,767评论 0 0
  • 一. 前言我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏。...
    才兄说阅读 17,912评论 0 7

友情链接更多精彩内容