-1

背景

我有一个动态壁纸,它使用相对较新的 API(来自 Android 8.1 - API 26)来请求操作系统使用自定义颜色:

问题

在 Android 8.1 甚至 Android P DP1 上,所有这些功能都可以正常工作,因为它们与普通壁纸对颜色所做的一样,如果选择的颜色足够暗,则会影响通知抽屉。下面是选择非深色和选择深色背景的比较:

在此处输入图像描述

在此处输入图像描述

问题是,在 Android P beta (DP2) 上,即使调用了这个函数,它也不会做任何事情。

要自行测试,您可以尝试我在此处发布的完整项目。

我发现了什么

  1. 我想也许 API 已经改变了,所以我试图找出哪些函数可用,但是我看不到任何新的东西。

  2. 我尝试使用各种方式返回自定义颜色:

    一个。WallpaperColors(Color.valueOf(0xff000000.toInt()), Color.valueOf(0xff000000.toInt()), Color.valueOf(0xff000000.toInt()))

    湾。WallpaperColors.fromDrawable(ColorDrawable(0xff000000.toInt()))

    C。WallpaperColors.fromDrawable(BitmapDrawable(completelyBlackBitmap))

    d。WallpaperColors.fromBitmap(completelyBlackBitmap)

可悲的是,没有一个工作(fromBitmap是在 Android 8.1 上运行良好的那个)。

  1. 看到这一点,我重新检查了我的代码是否正常,并注意到内置的动态壁纸工作正常,并且选择纯黑色壁纸(而不是动态壁纸)也影响了操作系统的 UI。

  2. 看到它适用于内置应用程序,我已经向谷歌报告了这个问题,却发现他们不明白我在说什么,每次我试图告诉他们他们误解了它不同:

  3. 我想确保这不仅仅是我的应用程序的问题,而是其他应用程序的问题,所以我测试了 Muzei 动态壁纸应用程序,它实际上是由 Google 自己的一位开发人员制作的。在 Android 8.1 上运行良好时,问题也确实发生在那里。

  4. 我只是好奇,想看看如果我将 Muzei 移动为系统应用程序是否会出现问题,但这样做之后,我发现问题仍然存在。

问题

  1. 怎么已经不行了?

  2. 有解决方法/解决方法吗?

  3. 为什么它适用于内置应用程序和普通壁纸,但不适用于第三方应用程序?我认为他们的代码没有任何区别。

4

1 回答 1

1

好的,谷歌确认这是一个错误,将在以后的版本中修复:

开发团队已修复您报告的问题,并将在未来的版本中提供。

而且,它现在在 Android P 的 DP4 (beta 3) 上运行良好。

于 2018-05-28T08:00:46.180 回答