Почему `onComputeColors` игнорируется в бета-версии Android P (DP2)? - PullRequest
0 голосов
/ 21 мая 2018

Фон

У меня есть живые обои, которые используют относительно новый API (от Android 8.1 - API 26), чтобы запросить ОС использовать индивидуальные цвета:

Проблема

На Android 8.1 и даже на Android P DP1 все работало нормально с этими функциями, так какони делали то же, что и обычные обои с цветами, воздействуя на ящик уведомлений, если выбранный цвет достаточно темный.Вот сравнение между выбором не темного цвета и темным цветом фона:

enter image description here

enter image description here

Дело в том, что в Android P beta (DP2), даже если эта функция вызывается, она ничего не делает, никогда.

Чтобы протестировать ее самостоятельно, вы можете попробовать полный проект.опубликовал здесь .

Что я нашел

  1. Я думал, что, возможно, API изменился, поэтомуЯ попытался выяснить, какие функции доступны, но ничего нового не увидел.

  2. Я пытался использовать различные способы для возврата настроенных цветов:

    а.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).

Видя это, я еще раз проверил, что мой код в порядке, и заметил, что встроенные живые обои работают нормально, и что выбор сплошных черных обоев (вместо живых обоев) также влияет на пользовательский интерфейсОС.

Видя, что он работает со встроенными приложениями, я сообщил Google об этой проблеме, только чтобы узнать, что они не понимают, о чем я говорюи каждый раз, когда я пытался сказать им, что они неправильно поняли это:

Я хотел убедиться, что проблема связана не только с моим приложением, но и с другими, поэтому я протестировал Живые обои Muzei *Приложение 1087 *, созданное одним из разработчиков Google.Проблема действительно возникает и там, хотя она нормально работает на Android 8.1.

Мне было просто любопытно, и я хотел проверить, может ли проблема возникнуть, если я перенес Muzei в системуприложение, но после этого я видел, что проблема все еще существует.

Вопросы

  1. Почему это больше не работает?

  2. Есть ли обходной путь / исправление для этого?

  3. Почему он хорошо работает для встроенных приложений и для обычных обоев, но недля сторонних приложений?Я не думаю, что их код - какая-то разница.

1 Ответ

0 голосов
/ 28 мая 2018

ОК, Google подтвердил, что это ошибка, которая будет исправлена ​​в более поздней версии :

Команда разработчиков исправила вашу проблемусообщается, и он будет доступен в следующей сборке.

И теперь он отлично работает на DP4 (бета 3) Android P.

...