代码之家  ›  专栏  ›  技术社区  ›  android developer

为什么Android P Beta(DP2)会忽略“onComputeColors”?

  •  -1
  • android developer  · 技术社区  · 7 年前

    背景

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

    问题

    在Android 8.1上,甚至在Android P DP1上,所有这些功能都可以很好地工作,就像普通墙纸对颜色所做的那样,如果选择的颜色足够暗,就会影响通知抽屉。以下是选择非深色与选择深色背景之间的比较:

    enter image description here

    enter image description here

    事情是,在android p beta(dp2)上,即使调用这个函数,它也不会做任何事情。

    要自己测试它,您可以尝试我发布的完整项目 here .

    我发现了什么

    1. 我认为API可能已经改变了,所以我试图找到哪些函数是可用的,但是我看不到任何新的。

    2. 我尝试了各种方法来返回定制的颜色:

      a. WallpaperColors(Color.valueOf(0xff000000.toInt()), Color.valueOf(0xff000000.toInt()), Color.valueOf(0xff000000.toInt()))

      B. WallpaperColors.fromDrawable(ColorDrawable(0xff000000.toInt()))

      C. WallpaperColors.fromDrawable(BitmapDrawable(completelyBlackBitmap))

      d. WallpaperColors.fromBitmap(completelyBlackBitmap)

    可惜没人工作( fromBitmap 在Android 8.1上运行良好)。

    1. 看到这一点,我重新检查了我的代码是否正常,并注意到内置的实时墙纸工作正常,选择一个纯黑墙纸(而不是实时墙纸)也会影响操作系统的用户界面。

    2. 鉴于它与内置应用程序协同工作,我向谷歌报告了这个问题,结果发现他们不理解我所说的内容,每次我试图告诉他们他们对这一问题的理解都不同:

    3. 我想确保这不仅仅是我的应用程序的问题,也是其他应用程序的问题,所以我已经测试过了 Muzei live wallpaper 这个应用程序实际上是由谷歌自己的一个开发者开发的。在安卓8.1上运行良好的时候,问题也确实出现在那里。

    4. 我只是好奇,想看看如果我把muzei变成一个系统应用程序,这个问题是否会发生,但是在这样做之后,我发现这个问题仍然存在。

    问题

    1. 为什么它不再起作用了?

    2. 有解决办法吗?

    3. 为什么它对内置应用程序和普通墙纸都适用,但对第三方应用程序却不适用?我认为他们的代码没有什么不同。

    1 回复  |  直到 7 年前
        1
  •  1
  •   android developer    7 年前

    好的,谷歌确认这是一个bug,将在 later version :

    开发团队已经修复了您报告的问题,并且 将在将来的版本中可用。

    而且,它现在在android p的dp4(beta 3)上运行良好。