-using Fitness.Controls;
-using Tizen.NUI.BaseComponents;
+using System.Threading;
+using System.Threading.Tasks;
+using Fitness.Services;
+using Tizen.Multimedia;
namespace Fitness.Views
{
/// </summary>
public partial class ScanningView : Fitness.Controls.Page
{
+ private PoseDetector poseDetector;
+ private int isInferencing;
+
/// <summary>
/// Initializes a new instance of the <see cref="ScanningView"/> class.
/// </summary>
public ScanningView()
{
InitializeComponent();
+ poseDetector = new PoseDetector();
+ isInferencing = 0;
+ cameraView.Preview += DetectPreview;
}
/// <summary>
{
if (cameraView.PreviewState == Tizen.Multimedia.CameraState.Preview)
{
+ cameraView.Preview -= DetectPreview;
cameraView.StopPreview();
}
}
+
+ private async void DetectPreview(object sender, PreviewEventArgs e)
+ {
+ if (e.Preview.PlaneType == PlaneType.TriplePlane && Interlocked.Exchange(ref isInferencing, 1) == 0)
+ {
+ await Task.Run(() => poseDetector.Detect(e.Preview.Plane as TriplePlane, (uint)e.Preview.Resolution.Height, (uint)e.Preview.Resolution.Width));
+ Interlocked.Exchange(ref isInferencing, 0);
+
+ // TODO: draw line
+ }
+ }
}
}