Xamarin Forms: Нарисуйте точки с Skiasharp после получения координат от Центра сообщений
Я занимаюсь разработкой приложения Xamarin Forms (страница с вкладками), которое должно рисовать точки на графике после получения их координат через Bluetooth.
Логика связи Bluetooth реализована в части проекта Android OS, в то время как весь пользовательский интерфейс был разработан в кроссплатформенной части.
До сих пор мне удалось распечатать значения координат на одной из страниц после отправки и получения их с помощью Messaging Center.
Тем не менее, когда я пытаюсь отправить координаты на вкладку, в которой точки должны быть нанесены с помощью SkiaSharp, кажется, что ничего не получено от Messaging Center.
Вот что я пытаюсь сделать:
namespace TestBth
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class LissajousPage : ContentPage
{
SKPaint PointPaint = new SKPaint
{
Style = SKPaintStyle.Stroke,
Color = Color.Yellow.ToSKColor(),
StrokeWidth = 1,
IsAntialias = true
};
public LissajousPage()
{
InitializeComponent();
Device.StartTimer(TimeSpan.FromMilliseconds(100), () =>
{
canvasView.InvalidateSurface();
return true;
});
}
private void OnCanvasViewPaintSurface(object sendr, SKPaintSurfaceEventArgs e)
{
SKImageInfo info = e.Info;
SKSurface surface = e.Surface;
SKCanvas canvas = surface.Canvas;
int width = e.Info.Width;
int height = e.Info.Height;
//Set transforms
canvas.Translate(width / 2, height / 2);
canvas.Scale(width / 200f);
//Drawings
canvas.Clear();
byte[] coord = new byte[200];
MessagingCenter.Subscribe<App, byte[]>((App)Application.Current, "Points", (sender, arg) =>
{
MessagingCenter.Unsubscribe<App, byte[]>((App)Application.Current, "Points");
coord = arg;
});
for (int i = 0; i == 199; i++)
{
canvas.DrawPoint(coord[i], coord[i+1], PointPaint);
}
}
}
}
И это оператор SEND в части Android, который выполняется после получения некоторых координат через Bluetooth:
Xamarin.Forms.MessagingCenter.Send<App, byte[]>((App)Xamarin.Forms.Application.Current, "Points", points);
Я также пытался отправить и получить простое логическое значение, но на этой странице это тоже не работает.
Какие-либо предложения?
Заранее спасибо.
С уважением.