private void OnReadingChanged(Accelerometer sender, AccelerometerReadingChangedEventArgs args)
        {
            double g = Math.Round(Square(args.Reading.AccelerationX) + Square(args.Reading.AccelerationY) + Square(args.Reading.AccelerationZ));

            if (g > AccelerationThreshold && DateTime.Now.Subtract(_lastDetected).Milliseconds > ShakenInterval)
            {
                _lastDetected = DateTime.Now;
                Shaken?.Invoke(null, EventArgs.Empty);
            }
        }
    // Handles the ReadingChanged event and raises the Shaken event when necessary
    private static void _DefaultAccelerometer_ReadingChanged(Accelerometer sender, AccelerometerReadingChangedEventArgs args)
    {
        double g = Math.Round(args.Reading.AccelerationX.Square() + args.Reading.AccelerationY.Square() + args.Reading.AccelerationZ.Square());

        if (g > AccelerationThreshold && DateTime.Now.Subtract(_ShakenTimespan).Milliseconds > ShakenInterval)
        {
            _ShakenTimespan = DateTime.Now;
            Shaken?.Invoke(null, EventArgs.Empty);
        }
    }