2

昨天三星发布了 Galaxy Watch4 的更新。从那以后,我被用户的电子邮件淹没,说我的表盘崩溃并且无法使用。当手表在正常模式和环境模式之间切换时会发生崩溃。

根据今天发布的一些文章 ( https://www.xda-developers.com/galaxy-watch-4-update-break-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 不再受支持,它的替代方案是什么?

4

1 回答 1

2

那是三星固件更新的错误版本。
我对这个问题进行了一些测试。
我的结论是,他们在固件层“阻塞”了 CPU 的锁定请求——现在,请求 CPU 锁定的进程被忽略了。
我不熟悉onTimeTick()表盘 API 的方法,但我猜它要求 CPU 锁定以更新 GUI。
根据文档,这是一个进程声明 CPU 锁的方式,现在,在此更新之后,这些代码行 忽略

科特林代码:

val pm = getSystemService(POWER_SERVICE) as PowerManager
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "awake")
wl.acquire(
    MainActivityModel.convertDegreesToMilliseconds(rotationValue)
        .toLong()
)

也许您可以在此处找到有关修补程序的更多信息或更新:

https://forum.developer.samsung.com/c/watch-face-studio/49

于 2022-02-13T19:13:21.283 回答