Fix api build

This commit is contained in:
Morten Nielsen 2023-10-20 10:25:56 -07:00
parent 0bf2f725ca
commit 1164e20270
2 changed files with 28 additions and 10 deletions

View file

@ -2,7 +2,7 @@
<Sdk Name="Microsoft.DotNet.PackageValidation" Version="1.0.0-preview.7.21379.12" />
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard1.4;netcoreapp2.1;net452;monoandroid50;monoandroid70;xamarinios10;uap10.0.18362;net6.0;net6.0-ios;net6.0-android;net6.0-windows10.0.19041.0</TargetFrameworks>
<TargetFrameworks>netstandard2.0;netstandard1.4;netcoreapp2.1;net452;monoandroid50;monoandroid70;xamarinios10;uap10.0.18362;net6.0;net7.0-ios;net7.0-android;net6.0-windows10.0.19041.0</TargetFrameworks>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<Configurations>Debug;Release</Configurations>

View file

@ -68,10 +68,17 @@ namespace NmeaParser
stream = new StringStream();
listener = new Listener();
listener.NmeaMessage += (s, e) => stream?.Append(e);
#if MONOANDROID50
bool success = manager.AddNmeaListener(listener);
#if NETCOREAPP
if (OperatingSystem.IsAndroidVersionAtLeast(24))
manager.AddNmeaListener((IOnNmeaMessageListener)listener, null);
else
manager.AddNmeaListener((GpsStatus.INmeaListener)listener);
#else
bool success = manager.AddNmeaListener(listener, null);
#if !API_LEVEL_24
manager.AddNmeaListener(listener);
#else
manager.AddNmeaListener(listener, null);
#endif
#endif
manager.RequestLocationUpdates(LocationManager.GpsProvider, 0, 0f, listener );
return Task.FromResult<Stream>(stream);
@ -83,7 +90,14 @@ namespace NmeaParser
if (listener is not null)
{
manager.RemoveUpdates(listener);
#if NETCOREAPP
if (OperatingSystem.IsAndroidVersionAtLeast(24))
manager.RemoveNmeaListener((IOnNmeaMessageListener)listener);
else
manager.RemoveNmeaListener((GpsStatus.INmeaListener)listener);
#else
manager.RemoveNmeaListener(listener);
#endif
listener.Dispose();
listener = null;
}
@ -92,21 +106,25 @@ namespace NmeaParser
}
private class Listener : Java.Lang.Object,
#if API_LEVEL_24
#if API_LEVEL_24 || NETCOREAPP
IOnNmeaMessageListener,
#else
#endif
#if !API_LEVEL_24 || NETCOREAPP
GpsStatus.INmeaListener,
#endif
ILocationListener
{
private bool _isNmeaSupported = false;
#if API_LEVEL_24
void IOnNmeaMessageListener.OnNmeaMessage(string? message, long timestamp)
#else
void GpsStatus.INmeaListener.OnNmeaReceived(long timestamp, string? message)
#if API_LEVEL_24 || NETCOREAPP
void IOnNmeaMessageListener.OnNmeaMessage(string? message, long timestamp) => OnMessage(timestamp, message);
#endif
#if !API_LEVEL_24 || NETCOREAPP
void GpsStatus.INmeaListener.OnNmeaReceived(long timestamp, string? message) => OnMessage(timestamp, message);
#endif
private void OnMessage(long timestamp, string? message)
{
_isNmeaSupported = true;
if (message != null)
NmeaMessage?.Invoke(this, message);