确定Android版本15上的屏幕是打开还是关闭 - 现在

时间:2015-12-03 18:09:37

标签: android powermanager android-powermanager

我正在编写一个SDK,将由API级别为15及以上的Android设备使用。我目前正在瞄准sdk版本22.我想要完成的是确定屏幕是打开还是关闭。有时我会在应用程序处于前台或后台时执行此操作,有时我会在应用程序关闭时使用警报执行此操作。我希望能够做的是询问框架是否打开或关闭屏幕,但它看起来不像Android版本< = 19。

看起来sdk版本19允许设备使用PowerManager.isScreenOn()来确定屏幕的状态,但是当版本20出现时,该方法已被弃用,现在您可以调用PowerManager.isInteractive()但仅限于适用于运行API 20及更高版本的设备。如果您尝试使用运行API 19或更低版本的设备调用isScreenOn(),则调用实际上只是包装了isInteractive(),并且最终得到了一个在日志中找不到的方法,并且实际上并没有获得所需的数据。

所以似乎我总是想知道设备屏幕的当前状态< = 19,一个解决方法是启动一个基本上总是运行的后台服务,并注册一个寻找ACTION_SCREEN_ON和ACTION_SCREEN_OFF意图。这显然是不可取的,因为那时我必须有一个不推荐的服务。

我想另一种解决方法是在构建时再次编译sdk 19,这将使isScreenOn()调用可用(并使isInteractive()调用不可用)。这可能是一种可能性,但似乎是一个糟糕的解决方法,因为我基本上被困在这个sdk级别,直到框架向后移动此功能或者sdks 15-19被少数足够的用户使用,从而不再支持它们。

我对情况的评估是否正确?

任何人都可以对提出的两种解决方案发表评论或建议替代方案吗?

0 个答案:

没有答案