android12取色引擎相关问题

author author     2023-04-27     367

关键词:

参考技术A

其实WallpaperManager从很早之前就提供了getWallpaperColors接口

==Tip: LocalWallpaperColorConsumer是hide接口,非源码编译的Apk无法引用==

取出的数据都封装在WallpaperColors中,可通过以下接口获取到原始数据

框架中只是负责提取出原始颜色 ,但有些时候直接使用原始颜色,并不能达到最好的效果。

例如:PixelLauncher的插件实现颜色动态变化,除了从Wallpaper中拿到颜色,还进行了二次加工,使其更符合Material Desgin的风格,这也是符合“Monet”主题系统 中的一部分,目前是没有开源的。所以一方或三方若想使用该特性,可以按需进行选择和二次加工。

很可惜,Google并没有为动态壁纸提供默认的取色逻辑。

壁纸的取色,最终会调用到WallpaperService的onComputeColors中,但该方法是空实现,框架只是提供了最基本的获取接口而已。

所以在Android 12之前,无论是静态壁纸或是动态 壁纸,若想要其他模块能获取到壁纸颜色的话,需要壁纸提供方,在实现WallpaperService的Engine时,也一并实现onCompleteColors方法,然后在颜色变化时调用notifyColorsChanged。

如图:

壁纸其实是通过Palette接口进行颜色提取的,基本上都能取到至少一种颜色。当真的取出失败或取出的颜色如果不符合期望,需要采用另外一套默认颜色,这是由各个各个业务去处理的,比如Launcher中的LauncherAppWidgetHostView,重写了setColorResources方法

具体流程见下图:

PixelLauncher是通过LocalWallpaperColorsExtractor的实现类进行颜色提取,该类继承于LocalColorExtractor,该类存在于Launcher3中,是空实现。可以看出,Google专门将Monet算法部分折分隐藏,只公开框架部分。

而LocalWallpaperColorsExtractor是通过调用WallpaperManager.addOnColorsChangedListener接口,获取onColorsChanged(RectF rectF, WallpaperColors wallpaperColors)中的返回信息,然后再对WallpaperColors中的颜色信息进行二次加工处理。

可以,Android 12已经在secure表中预定义了theme_customization_overlay_packages字段,在其中配置了是否要根据主屏幕变色还是预置颜色,然后进行资源Overlay的。

我们可以直接使用或借鉴这套逻辑,预置几套色值,并设置为使用基本颜色。

android12javatrace生成过程分析(代码片段)

概述在分析一些Android问题,比如ANR或Watchdog冻屏时,需要拿到相关进程的Javatrace,然后分析是哪出了问题。但是这个Javatrace是怎么生成的呢?在Android中的Java进程一般都是运行在art虚拟机之上的,而要拿到相关... 查看详情

android12javatrace生成过程分析(代码片段)

概述在分析一些Android问题,比如ANR或Watchdog冻屏时,需要拿到相关进程的Javatrace,然后分析是哪出了问题。但是这个Javatrace是怎么生成的呢?在Android中的Java进程一般都是运行在art虚拟机之上的,而要拿到相关... 查看详情

activity相关初始化-android12(代码片段)

Activity相关初始化-Android12android12-release了解Activity启动流程:AMS:startActivity桌面启动应用、应用内部启动startActivity-Android121.ProcessStatezygotefork新的App进程池,就是Binder线程池;反射调用到ActivityThread.main()Activit 查看详情

activity相关初始化-android12(代码片段)

Activity相关初始化-Android12android12-release了解Activity启动流程:AMS:startActivity桌面启动应用、应用内部启动startActivity-Android121.ProcessStatezygotefork新的App进程池,就是Binder线程池;反射调用到ActivityThread.main()Activit 查看详情

搜索引擎如何找到相关内容?

】搜索引擎如何找到相关内容?【英文标题】:Howdosearchenginesfindrelevantcontent?【发布时间】:2011-04-2709:28:15【问题描述】:Google在解析网络时如何找到相关内容?假设,例如,Google使用PHP原生DOM库来解析内容。他们会用什么方法... 查看详情

颤振运行失败并获取与位置相关的问题

...tter.git框架•修订f4abaa0735(4个月前)•2021-07-0112:46:11-0700引擎•修订版241c87ad80工具•D 查看详情

跨平台 3d 引擎嵌入 iOS/Android 视图? [关闭]

】跨平台3d引擎嵌入iOS/Android视图?[关闭]【英文标题】:Cross-Platform3d-EnginetoembediniOS/Android-View?[closed]【发布时间】:2011-12-1309:29:34【问题描述】:对于我的新应用,我希望拥有原生iOS或AndroidUI,以及显示一些图表的3d视图。虽然... 查看详情

Microsoft Office 12.0 Access 数据库引擎 OLE DB 提供程序问题

】MicrosoftOffice12.0Access数据库引擎OLEDB提供程序问题【英文标题】:MicrosoftOffice12.0AccessDatabaseEngineOLEDBProviderIssue【发布时间】:2017-01-0309:57:01【问题描述】:最初我无法在我的SSMS(SQLSever2008)中看到microsoftoffice12.0访问数据库引擎oledb... 查看详情

vb用getpixel屏幕取色的几个问题

1.GetPixel取色的坐标单位是像素吗?那对于不同分辨率的屏幕要想取同一个点的颜色怎么办?2.用的GetDC和GetPixel等API在屏幕取色不知道为什么有的时候可以但是偶尔会出错返回-1,这是怎么回事?(我是对一个全屏运行的网络游戏... 查看详情

win10下,takecolor取色器错位指针偏移问题解决方法

当win10的屏幕缩放比例不是100%时,屏幕取色器ColorPix指针会发生偏移解决:1.右击—>属性—>兼容性2.勾选"高DPI缩放替代" 查看详情

相关子查询 MySQL

...3-2421:56:38【问题描述】:显然我不明白子查询的相关性在引擎盖下工作。我有以下“销售”表架构:sale_id|sale_date|product_type我的目标是计算某种类型的已售产品占产品总数的比例当天售出。例如:1.2015-01-03product_12.2015-01-03product_1... 查看详情

特殊的Android 3D引擎

】特殊的Android3D引擎【英文标题】:SpecialAndroid3Dengine【发布时间】:2011-10-3114:57:58【问题描述】:我正在为Android寻找一个好的3D渲染和动画引擎,可以迁移到新的3.xFragments视图中-因为我希望它是一个简单的视图,而不是一个完... 查看详情

html相关问题

...根元素。2.什么是语义化的HTML?直观的认识标签对于搜索引擎的抓取有好处,用正确的标签做正确的事情!html语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析;在没有 查看详情

Python:聚类搜索引擎关键字

】Python:聚类搜索引擎关键字【英文标题】:Python:ClusteringSearchEngineKeywords【发布时间】:2011-07-2409:36:12【问题描述】:嗨,我有一个CSV,最多20,000行(我有100,000+用于不同的网站),每行包含一个引用关键字(即有人在搜索引擎... 查看详情

在 android 中使用 Trident Web 引擎打开网站

】在android中使用TridentWeb引擎打开网站【英文标题】:OpenwebsitewithTridentwebengineinandroid【发布时间】:2017-06-2621:21:01【问题描述】:有没有办法在android中加载带有Tridentweb引擎(windowsIE引擎)的网页。如您所知,在android网站中使用... 查看详情

使用另一个声音引擎

...)。(每个剪辑最大180kB)我还计划实时投放这些剪辑。android中的标准媒体播放器很稳定,但没有我想要的功能,比如投球。我也试过Soundpool。SoundPool支持俯仰,但非常不稳定。使用Sou 查看详情

Android:“无法初始化可视化引擎”

】Android:“无法初始化可视化引擎”【英文标题】:Android:"cannotinitializevisualizerengine"【发布时间】:2012-07-0706:41:44【问题描述】:我3天前开始为Android编程,今天我想使用androidApi中的一些类来做一些更困难的事情。我找... 查看详情

数据库相关面试题

...计划11.什么是索引,索引类型有哪些。12.mysql有哪些存储引擎?对应的存储引擎支持哪些索引?13.索引的实现原理?14.什么是聚簇索引。什么是回表?如何解决回表的问题。15.mysql事务的四大特性是什么?事务的四大特性实现原... 查看详情