【发布时间】:2009-12-09 17:55:55
【问题描述】:
我正在考虑在我的应用程序中使用隐藏的 API 来关闭屏幕。
https://android.googlesource.com/platform/frameworks/base/+/eclair-release/core/java/android/os/Power.java 的setScreenState 可以满足我的要求,但它是一个隐藏的 API。这是否意味着我不应该使用它?我认为它是一个相当稳定的 API。
目前,我将屏幕超时设置为 1 毫秒,然后在屏幕关闭后重置超时。但是,android 忽略了 1 毫秒,而是需要大约 3 秒才能关闭,有时它会完全忽略它并且不会关闭。
有什么建议吗?
【问题讨论】:
-
您在寻找如何使用它吗?或其他关闭屏幕的方法?即使它是“隐藏的”,您也可以使用反射来调用该方法。但是,您可能会收到一个异常,指出您无权访问该方法。对于某些 API,只有“系统”进程才能使用它们。而且由于您的应用程序不是“系统”进程,因此您不能使用它。
-
我更喜欢使用公共 API,但我找不到,而且我现在使用的带有屏幕超时的 hack 有时不起作用。我想我对反射很熟悉,但我还没有尝试过。我想我的问题是:如果我找不到替代方案,使用相对稳定的隐藏 API 有多糟糕?
-
@i4ndroid 我怀疑谷歌会添加一个 api 来允许开发者关闭屏幕。但是不要像我一样阻止你向他们请愿。我想看看。我玩弄了 SCREEN_OFF_TIMEOUT,那 5 秒的延迟是一个杀手。我已经放弃了关闭屏幕的功能。我以后可能会重温它。
-
@i4ndroid 我建议不要在锁定屏幕上添加应用程序快捷方式,而是在通知栏中设置一个 FLAG_ONGOING_EVENT 文件夹图标,以显示应用程序快捷方式列表。只是一个想法。我自己也想过做类似的事情,但是我忙于其他项目。附言请不要在发布时将您的应用命名为 Smart Lockscreen,因为我的应用称为 Smart Lock。 youtube.com/watch?v=Y1JdAlNxLYA
-
这个隐藏的 API 在 Android 2.3 上是否仍然有效?我无法在 Android 2.3.x 上运行,即使 setScreenState 被调用为 false,我在日志中看到它,屏幕没有关闭,代码:pastebin.com/WQKR857z - 或者我的代码有什么问题?跨度>
标签: android