@Matthew_Brown
Unless you can’t ensure that the points are taken in strict order/direction (i.e. clockwise or counter-clockwise direction), you won’t be able to get an accurate calculation even with a 3rd party service. Provided you can maintain that data collection order, than it’s a very easy match calculation to do even without using a 3rd party service.
Assume 4 points as [PT1] to [PT4] and points taken in clockwise direction:
SQ FT CALCULATION
IFS(
DISTANCE([PT2],[PT1]) = DISTANCE([PT4],[PT3]),
IFS(
DISTANCE([PT3],[PT2]) < DISTANCE([PT4],[PT1]),
((DISTANCE([PT2],[PT1]) * DISTANCE([PT3],[PT2])) + (DISTANCE([PT2],[PT1]) * (DISTANCE([PT4],[PT1]) - DISTANCE([PT3],[PT2]))) / 2) * <U+202A>10763910.0000<U+202C>,
DISTANCE([PT3],[PT2]) > DISTANCE([PT4],[PT1]),
((DISTANCE([PT2],[PT1]) * DISTANCE([PT3],[PT2])) + (DISTANCE([PT2],[PT1]) * (DISTANCE([PT3],[PT2]) - DISTANCE([PT4],[PT1]))) / 2) * <U+202A>10763910.0000<U+202C>,
TRUE,
DISTANCE([PT2],[PT1]) * DISTANCE([PT3],[PT2]) * <U+202A>10763910.0000<U+202C>
),
DISTANCE([PT2],[PT1]) > DISTANCE([PT4],[PT3]),
((DISTANCE([PT4],[PT3]) * DISTANCE([PT3],[PT2])) + (DISTANCE([PT3],[PT2]) * (DISTANCE([PT2],[PT1]) - DISTANCE([PT4],[PT3]))) / 2) * <U+202A>10763910.0000<U+202C>,
TRUE,
((DISTANCE([PT2],[PT1]) * DISTANCE([PT3],[PT2])) + (DISTANCE([PT3],[PT2]) * (DISTANCE([PT4],[PT3]) - DISTANCE([PT2],[PT1]))) / 2) * <U+202A>10763910.0000
)
ACRES CALCULATION
IFS(
DISTANCE([PT2],[PT1]) = DISTANCE([PT4],[PT3]),
IFS(
DISTANCE([PT3],[PT2]) < DISTANCE([PT4],[PT1]),
((DISTANCE([PT2],[PT1]) * DISTANCE([PT3],[PT2])) + (DISTANCE([PT2],[PT1]) * (DISTANCE([PT4],[PT1]) - DISTANCE([PT3],[PT2]))) / 2) * <U+202A>247.1054,
DISTANCE([PT3],[PT2]) > DISTANCE([PT4],[PT1]),
((DISTANCE([PT2],[PT1]) * DISTANCE([PT3],[PT2])) + (DISTANCE([PT2],[PT1]) * (DISTANCE([PT3],[PT2]) - DISTANCE([PT4],[PT1]))) / 2) * <U+202A>247.1054,
TRUE,
DISTANCE([PT2],[PT1]) * DISTANCE([PT3],[PT2]) * 247.1054
),
DISTANCE([PT2],[PT1]) > DISTANCE([PT4],[PT3]),
((DISTANCE([PT4],[PT3]) * DISTANCE([PT3],[PT2])) + (DISTANCE([PT3],[PT2]) * (DISTANCE([PT2],[PT1]) - DISTANCE([PT4],[PT3]))) / 2) * <U+202A>247.1054,
TRUE,
((DISTANCE([PT2],[PT1]) * DISTANCE([PT3],[PT2])) + (DISTANCE([PT3],[PT2]) * (DISTANCE([PT4],[PT3]) - DISTANCE([PT2],[PT1]))) / 2) * 247.1054
)
Of course this approach disregards the area to be a parallelogram shape rather than a perfect rectangle. However, if you consider Martin’s Law of Skewness, the area of a parallelogram (a rectangle which is shewed with an angle of alpha), the area can be interpreted as:

and provided the Skewness angle of the both opposite sides are equal than the area of that parallelogram is same than the perfect rectangle as the trigonometric limit approaches to 1

The latter case; provided the Skewness angle of the opposite sides are not equal than (which we call Obstructed Polygon) you will need an Eigen Vector to correct the vector calculation of the so called area, which will need a GPS Total Station and I’m afraid in this case even a 3rd party service can’t help you for that calculation.
Far more important, may be remind you that, the precision/accuracy of any GPS calculation strongly relies on the accuracy of the GPS accelerometer of the mobile device where it should be perfectly and appropriately calibrated.