Последнее обновление (9 февраля 2022 г.) от Samsung для Galaxy Watch4 приводит к сбою циферблата — что делать?
Вчера Samsung опубликовала обновление для Galaxy Watch4. С тех пор меня завалили электронные письма пользователей, в которых говорилось, что мой циферблат дает сбой и непригоден для использования. Сбой происходит, когда часы переключаются между обычным режимом и режимом окружающей среды.
Согласно некоторым статьям, опубликованным сегодня (https://www.xda-developers.com/galaxy-watch-4-update-breaking-watch-faces ), WatchFaceService.Engine больше не поддерживается или не работает в новом обновлении.
Что сбивает с толку, так это то, что, хотя мой циферблат выходит из строя, другие циферблаты просто не обновляются в фоновом режиме, потому что, по-видимому, onTimeTick() не вызывается. Но я до сих пор не могу понять, как избежать аварии . В отладочной информации указано только «java.lang.RuntimeException: eglCreateWindowSurface failed», но не указана ни одна строка в моем коде:
2022-02-11 11:21:55.612 4652-4652/com.xxxx.mywatchface E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.xxxx.mywatchface, PID: 4652
java.lang.RuntimeException: eglCreateWindowSurface failed
at android.support.wearable.watchface.Gles2WatchFaceService$Engine.createWindowSurface(Gles2WatchFaceService.java:202)
at android.support.wearable.watchface.Gles2WatchFaceService$Engine.onSurfaceChanged(Gles2WatchFaceService.java:300)
at android.service.wallpaper.WallpaperService$Engine.updateSurface(WallpaperService.java:1082)
at android.service.wallpaper.WallpaperService$Engine.reportVisibility(WallpaperService.java:1296)
at android.service.wallpaper.WallpaperService$Engine$3.onDisplayChanged(WallpaperService.java:1439)
at android.hardware.display.DisplayManagerGlobal$DisplayListenerDelegate.handleMessage(DisplayManagerGlobal.java:767)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:7690)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
Кто-нибудь знает об этом больше? Если WatchFaceService больше не будет поддерживаться, какая ему альтернатива?
1 ответ
Это сломанный выпуск обновления прошивки от Samsung.
Я провел несколько тестов по этому вопросу.
Мой вывод состоит в том, что они «заблокировали» на уровне прошивки запрос блокировки ЦП - теперь процесс, который запрашивает блокировку ЦП, игнорируется.
я не знаком с
onTimeTick()
метод API циферблата часов, но я предполагаю, что он запрашивает блокировку процессора для обновления графического интерфейса.
Согласно документации , именно так процесс требует блокировки ЦП, и теперь, после этого обновления, эти строки кода игнорируются :
Код Котлина:
val pm = getSystemService(POWER_SERVICE) as PowerManager
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "awake")
wl.acquire(
MainActivityModel.convertDegreesToMilliseconds(rotationValue)
.toLong()
)
Возможно, вы можете найти дополнительную информацию или обновление об исправлении здесь: