背景
当用户接到电话时,我正在研究如何替换拨号程序的UI (传入/传出电话)。
这在以下两方面似乎是可能的:
问题所在
看看内置的拨号程序是如何工作的,如果用户使用的是浸没式中的应用程序(游戏或景观上的YouTube视频),而现在设备正在响(来电),则会发出通知而不是全屏活动。
但是我找不到如何使用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版本支持它?
如果这是不可能的,为什么内置应用程序知道如何检查它?
发布于 2018-07-03 22:22:21
您应该将您的来电发送为通知。
在通知构建器中,使用挂起的意图启动您的来电用户界面的全屏版本: builder.setContentIntent(pendingIntent);builder.setFullScreenIntent(pendingIntent,true);
如果有任何正在进行的活动,系统将显示提示通知(并且应该考虑沉浸模式)。如果用户的设备关闭并处于锁定屏幕上,则将使用全屏意图启动全屏用户界面。
https://stackoverflow.com/questions/51080782
复制相似问题