Android服务中监听是否全屏

关于监听Android显示否全屏(主要监听Status Bar是否隐藏),在网上的质料很少,大部分都是判断本应用中是否全屏的方法,也找到一种方式判断,就是添加一个window到屏幕中,然后启动一个线程不断的去循环判断这个window的位置;但是始终感觉这种循环的方式对性能有一定的影响,并且循环有一定的延迟,不能达到实时;由于这些问题,然后在此基础上进行了一下优化,下面贴出代码。

private PixelView mFullScreenCheckView;
mFullScreenCheckView = new PixelView(mContext);
WindowManager windowManager = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
//创建非模态、不可碰触
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
//放在左上角
params.gravity = Gravity.START | Gravity.TOP;
params.height = 1;
params.width = 1;
//设置弹出View类型,
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
params.format = PixelFormat.TRANSLUCENT;  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
CarSystemUIAndroid Auto 的系统 UI,它可以监听应用是否全屏模式。在 Android Auto ,应用可以使用 CarExtender API 启用全屏模式,这时 CarSystemUI监听应用的全屏状态并做出相应的处理。 具体来说,CarSystemUI 可以通过监听 `WindowManager.LayoutParams` 的 `FLAG_FULLSCREEN` 标志位来判断应用是否全屏模式。当应用启用全屏模式时,会设置该标志位;当应用退出全屏模式时,会清除该标志位。因此,CarSystemUI 可以通过监听 `WindowManager.LayoutParams` 的变化来判断应用的全屏状态。 以下是一个简单的示例代码,用于演示如何监听应用的全屏状态: ```java private WindowManager.LayoutParams mLayoutParams; private void init() { // 获取 WindowManager.LayoutParams 对象 mLayoutParams = getWindow().getAttributes(); // 添加 OnFrameMetricsAvailableListener 监听器 getWindow().addOnFrameMetricsAvailableListener(new WindowManager.OnFrameMetricsAvailableListener() { @Override public void onFrameMetricsAvailable(Window window, FrameMetrics frameMetrics, int dropCountSinceLastInvocation) { // 获取全屏标志位 boolean isFullscreen = (mLayoutParams.flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0; // 处理全屏状态变化 if (isFullscreen) { // 应用处于全屏模式 // TODO: 处理全屏模式 } else { // 应用退出全屏模式 // TODO: 处理退出全屏模式 } } }, new Handler()); } ``` 在该示例代码,我们首先通过 `getWindow().getAttributes()` 方法获取当前窗口的 `WindowManager.LayoutParams` 对象,并存储在成员变量 `mLayoutParams` 。然后,我们通过 `addOnFrameMetricsAvailableListener()` 方法添加一个 `OnFrameMetricsAvailableListener` 监听器,监听帧度量信息的变化。 当帧度量信息变化时,我们可以通过 `mLayoutParams.flags` 属性获取全屏标志位,判断应用是否处于全屏模式。如果应用处于全屏模式,则需要做出相应的处理;如果应用退出全屏模式,则同样需要做出相应的处理。 需要注意的是,该示例代码仅供参考,实际场景需要根据具体需求进行修改和完善。另外,CarSystemUI 的具体实现可能会有所不同,具体实现方式需要参考相关文档和代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值