AndroidX icon indicating copy to clipboard operation
AndroidX copied to clipboard

Missing methods to WatchFace binding

Open pierre-galaup opened this issue 2 years ago • 7 comments

Android application type

Android for .NET (net6.0-android, etc.)

Affected platform version

.net 7 android

Description

Hello,

I just tested the binding of the WatchFace lib.

Unfortunately, some methods are missing like the "render" or "renderHighlightLayer" of the "Renderer.CanvasRenderer" : https://developer.android.com/reference/kotlin/androidx/wear/watchface/Renderer.CanvasRenderer#render(android.graphics.Canvas,android.graphics.Rect,java.time.ZonedDateTime)

Is it related to the "java.time.ZonedDateTime"?

I attach a mini sample.

Thank you, Pierre

Steps to Reproduce

Create a new project, add nuget "Xamarin.AndroidX.Wear.WatchFace". Create a "CustomCanvasRenderer" inherit "Renderer.CanvasRenderer". To be able to create a WatchFace, you need the render() method and renderHighlightLayer(). They are not present in OVERRIDE, nor in the "Renderer.CanvasRenderer" class.

Sample.WearOS.zip

Did you find any workaround?

No workaround.

Relevant log output

No response

pierre-galaup avatar Feb 17 '23 11:02 pierre-galaup

Thanks for the feedback and repro sample! Appreciated.

Is it related to the "java.time.ZonedDateTime"?

Could be, but without diving in I cannot be 100% sure.

I attach a mini sample.

Thanks. Time saver.

moljac avatar Mar 28 '23 15:03 moljac

Hello,

For information, I just tried with the new version 1.1.1 and still the same problem.

Thanks!

pierre-galaup avatar Mar 28 '23 15:03 pierre-galaup

Hello @moljac,

Have you had time to dive in?

Don't hesitate to ask me if you need to do some tests on a physical WearOs watch if you don't have one.

Have a nice day !

pierre-galaup avatar Apr 18 '23 06:04 pierre-galaup

Hello, I have the same issue than @pierre-galaup well described in this ticket. @moljac do you have time to look that ? How can we help you ?

Thanks !

Kassoul avatar May 11 '23 14:05 Kassoul

@pierre-galaup @Kassoul

I was able to reproduce. Now digging in the bindings to see why API was not surfaced.

moljac avatar Jul 04 '23 07:07 moljac

Seem that it hasn't been resolved yet... Any updates?

moonmoondog avatar Jan 06 '24 20:01 moonmoondog

It does appear these methods are getting removed due to the missing java.time.ZonedDateTime type:

The method '[Method] void renderHighlightLayer(android.graphics.Canvas canvas, java.time.ZonedDateTime zonedDateTime, androidx.wear.watchface.RenderParameters renderParameters)' was removed because the Java parameter type 'java.time.ZonedDateTime' could not be found.
The method '[Method] void render(android.graphics.Canvas canvas, java.time.ZonedDateTime zonedDateTime, androidx.wear.watchface.RenderParameters renderParameters)' was removed because the Java parameter type 'java.time.ZonedDateTime' could not be found.

The good news is we added ZonedDateTime is .NET 8: https://github.com/xamarin/xamarin-android/pull/8088

The bad news is we can't create net8.0-android AndroidX packages until we drop Xamarin Classic and net6.0-android support later this year.

jpobst avatar Mar 15 '24 20:03 jpobst