gpt4 book ai didi

android - 是否可以确定屏幕现在是否处于沉浸式状态,即使不在前景中?

转载 作者:行者123 更新时间:2023-11-29 01:01:07 24 4
gpt4 key购买 nike

背景

我正在研究如何在用户接到电话(来电/去电)时替换拨号器的 UI。

这似乎有两种可能:

  • 在旧的 Android 版本上,可以通过 PHONE_STATE_CHANGED 触发的顶部 View 来实现和 NEW_OUTGOING_CALL Intent 。

  • 在新的 Android 版本(至少 API 23 - Android M-6.0)上,可以通过扩展 InCallService 来实现。 ,并提供一个将从那里打开的 Activity 。我什至找到了一个例子,here .

问题

查看内置拨号器的工作原理,如果用户正在使用 immersive mode 中的应用程序(横向游戏或 YouTube 视频),现在设备正在响铃(来电),有通知而不是全屏 Activity 。

但我找不到如何使用 API 进行操作。

我尝试过的

我试图查看 InCallService 的所有文档。我还尝试通过检查从 WindowManager 获得的各种值来查看是否可以区分沉浸式和非沉浸式:

    val wm = getSystemService(Service.WINDOW_SERVICE) as WindowManager
val display = wm.defaultDisplay
val metrics = DisplayMetrics()
display.getMetrics(metrics)
val realMetrics = DisplayMetrics()
display.getRealMetrics(realMetrics)
val realSize = Point()
display.getRealSize(realSize)
val size = Point()
display.getSize(size)
Log.d("AppLog", "mode:${display.mode} state:${display.state} size:$size realSize:$realSize metrics:$metrics realMetrics:$realMetrics rotation:${display.rotation}")

我想也许可以使用无障碍服务来检查它(虽然不确定如何),但这似乎做的太多了。

问题

应用是否可以检查屏幕现在是否处于沉浸模式?

如果可能,如何支持以及支持哪个 Android 版本?

如果不可能,内置应用程序怎么知道如何检查它?

最佳答案

您应该将来电发布为通知。

在您的通知构建器中,使用 Pending Intent 启动来电 UI 的全屏版本:builder.setContentIntent(pendingIntent);builder.setFullScreenIntent(pendingIntent, true);

如果有任何正在进行的 Activity ,系统将显示抬头通知(并且应该考虑沉浸式模式)。如果用户的设备处于关闭状态并处于锁定屏幕上,则全屏 intent 将用于启动全屏 UI。

关于android - 是否可以确定屏幕现在是否处于沉浸式状态,即使不在前景中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51080782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com