dotnet / android-libraries

.NET for Android bindings for Google's libraries, such as AndroidX, GooglePlayServices, Firebase, and MLKit and their 3rd party dependency libraries.
MIT License
235 stars 50 forks source link

Missing methods to WatchFace binding #703

Open pierre-galaup opened 1 year ago

pierre-galaup commented 1 year ago

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

moljac commented 1 year ago

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.

pierre-galaup commented 1 year ago

Hello,

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

Thanks!

pierre-galaup commented 1 year ago

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 !

Kassoul commented 1 year ago

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 !

moljac commented 1 year ago

@pierre-galaup @Kassoul

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

moonmoondog commented 11 months ago

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

jpobst commented 8 months ago

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.