为什么在 Android P beta (DP2) 上忽略了 `onComputeColors`?
Why `onComputeColors` is being ignored on Android P beta (DP2)?
背景
我有一个使用相对较新的 API 的动态壁纸(从 Android 8.1 - API 26)请求 OS 使用自定义颜色:
问题
在 Android 8.1 上,甚至在 Android P DP1 上,所有这些功能都可以正常工作,因为它们可以像普通墙纸一样处理颜色,如果颜色是选择的颜色够深。下面是选择非深色和选择深色背景的对比:
事情是,在 Android P beta (DP2) 上,即使调用此函数,它也不会执行任何操作。
要自行测试,您可以尝试我发布的完整项目 here。
我发现了什么
我想也许 API 已经改变了,所以我试图找到可用的功能,但我看不到任何新功能。
我试过各种方法来return自定义颜色:
一个。 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)
遗憾的是 none 有效(fromBitmap
在 Android 8.1 上运行良好)。
看到这里,我重新检查了我的代码是否正常,并注意到内置的动态壁纸工作正常,并且选择了纯黑色壁纸(而不是动态壁纸)影响了 OS 的 UI。
看到它适用于内置应用程序,我已经向 Google 报告了这个问题,结果发现他们不明白我在说什么,每次我试图告诉他们他们都以不同的方式误解了它:
我想确保这不仅仅是我的应用程序的问题,其他人也一样,所以我测试了 Muzei live wallpaper 应用程序,它实际上是由 Google自己的开发者。这个问题确实也在那里发生,而在 Android 8.1.
上工作正常
我只是好奇,想看看如果我将 Muzei 移动为系统应用程序是否会出现问题,但在这样做之后,我发现问题仍然存在。
问题
怎么没用了?
这个有workaround/fix吗?
为什么它适用于内置应用程序和普通壁纸,但不适用于第三方应用程序?我认为他们的代码没有任何区别。
好的,Google 确认这是一个错误,将在 later version:
上修复
The development team has fixed the issue that you have reported and it
will be available in a future build.
而且,它现在在 Android P 的 DP4(测试版 3)上运行良好。
背景
我有一个使用相对较新的 API 的动态壁纸(从 Android 8.1 - API 26)请求 OS 使用自定义颜色:
问题
在 Android 8.1 上,甚至在 Android P DP1 上,所有这些功能都可以正常工作,因为它们可以像普通墙纸一样处理颜色,如果颜色是选择的颜色够深。下面是选择非深色和选择深色背景的对比:
事情是,在 Android P beta (DP2) 上,即使调用此函数,它也不会执行任何操作。
要自行测试,您可以尝试我发布的完整项目 here。
我发现了什么
我想也许 API 已经改变了,所以我试图找到可用的功能,但我看不到任何新功能。
我试过各种方法来return自定义颜色:
一个。
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)
遗憾的是 none 有效(fromBitmap
在 Android 8.1 上运行良好)。
看到这里,我重新检查了我的代码是否正常,并注意到内置的动态壁纸工作正常,并且选择了纯黑色壁纸(而不是动态壁纸)影响了 OS 的 UI。
看到它适用于内置应用程序,我已经向 Google 报告了这个问题,结果发现他们不明白我在说什么,每次我试图告诉他们他们都以不同的方式误解了它:
我想确保这不仅仅是我的应用程序的问题,其他人也一样,所以我测试了 Muzei live wallpaper 应用程序,它实际上是由 Google自己的开发者。这个问题确实也在那里发生,而在 Android 8.1.
上工作正常
我只是好奇,想看看如果我将 Muzei 移动为系统应用程序是否会出现问题,但在这样做之后,我发现问题仍然存在。
问题
怎么没用了?
这个有workaround/fix吗?
为什么它适用于内置应用程序和普通壁纸,但不适用于第三方应用程序?我认为他们的代码没有任何区别。
好的,Google 确认这是一个错误,将在 later version:
上修复The development team has fixed the issue that you have reported and it will be available in a future build.
而且,它现在在 Android P 的 DP4(测试版 3)上运行良好。