I've been using the
PeakLens app on Android. You can pre-download data for each country so that you can use it fully off-line.
It has excellent accuracy, but
(a) you have to calibrate the phone's compass first if you want precise location, and
(b) it also uses the camera to work out the silhouette of the horizon for extra precision, so it's less precise if some of the horizon is covered in cloud or rain.