android - 应用程序如何检测状态栏颜色(Android 5.0 Lollipop)?

标签 android colors window statusbar android-5.0-lollipop

当我遇到 Window#getStatusBarColor() 时,我一直在研究 Android 5.0 Lollipop API。 .但是,这需要一个 Window 的实例,例如来自 Activity 的实例,因此它不能在后台服务中使用。有没有办法让应用程序检测 Android 5.0 上的状态栏颜色?

更新:

正如 Nikola Despotoski 提到的,有一个 createScreenCaptureIntent可以通过“屏幕录制”并仅检查状态栏区域来达到目的的方法。
事实证明,如果将此方法的返回值传递给 startActivityForResult。初始请求旨在从 Activity 中调用。
即使结果被保存并传递给服务,也需要一些复杂的模式来在每次需要时重新请求许可。似乎也没有同步方式来获取位图。在后台,这意味着始终处理屏幕更改以获得单个像素。

最佳答案

有趣的问题。

您可以使用新的 Lolipop 屏幕捕获 API。使用 createScreenCaptureIntent()MediaProjectionManager 检索 Bitmap

获得位图后,尝试将位图从 top=0 剪切(解码)到 bottom= status_bar_height .将剪切的 Bitmap 传递给 Palette 并使用 getRGB() 方法检索颜色。

关于android - 应用程序如何检测状态栏颜色(Android 5.0 Lollipop)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27473697/

相关文章:

java - 如何在数组中创建混合数组?

java - getDownloadUrl 函数未返回正确的 url

50% 不透明度的 CSS 2 颜色 == 其他颜色

find - 在原子编辑器中切换或关闭查找窗口

android - Activity.attach() 什么时候会被调用?

c++ - AddFontResource + SetCurrentConsoleFontEx 不会更改控制台字体

android - 从 android externel 文件夹编译源代码

android - 抖动错误: Exception: type 'int' is not a subtype of type 'String'

javascript - FlotChart - 如何为折线图中的特定系列分配颜色?

java - 计算图像中的 "redish/blueish/greenish..."种颜色