应用程序如何检测状态栏颜色(Android 5.0 Lollipop)?
Posted
技术标签:
【中文标题】应用程序如何检测状态栏颜色(Android 5.0 Lollipop)?【英文标题】:How can an app detect the status bar color (Android 5.0 Lollipop)? 【发布时间】:2015-02-12 22:31:03 【问题描述】:当我遇到Window#getStatusBarColor()
时,我一直在玩弄 android 5.0 Lollipop API。但是,这需要Window
的实例,例如来自Activity
,因此它不能在后台服务中使用。有没有办法让应用在 Android 5.0 上检测状态栏颜色?
更新:
正如 Nikola Despotoski 所提到的,createScreenCaptureIntent
方法可以通过“屏幕录制”来解决问题,并且只需检查状态栏区域。
事实证明,这个方法的返回值如果传递给startActivityForResult
。初始请求是从 Activity 调用的。
即使结果被保存并传递给服务,每次需要时都需要一些复杂的模式来重新请求许可。似乎也没有同步方式来获取位图。在后台,这意味着总是处理屏幕变化以获得单个像素。
【问题讨论】:
【参考方案1】:有趣的问题。
您可以使用新的 Lolipop 屏幕截图 API。使用createScreenCaptureIntent() 和MediaProjectionManager
检索Bitmap
。
获得位图后,尝试将位图从顶部=0 剪切(解码)到底部=status_bar_height。将剪切Bitmap
传递给Palette
并使用getRGB()
方法检索颜色。
【讨论】:
我想过这个,但是在CPU方面似乎过于复杂和昂贵(尤其是在快速切换应用的情况下)。以上是关于应用程序如何检测状态栏颜色(Android 5.0 Lollipop)?的主要内容,如果未能解决你的问题,请参考以下文章