Skip to content

nujiak/recce

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MegaLinter GitHub release (latest by date including pre-releases)

Recce is a Map Planning and Navigation app for Android. It supports 6 commonly-used geographic/projected coordinate systems (see Supported GCS/PCS) and offers coordinate transformations in real-time.

Features

๐Ÿ—บ๏ธ Map

Recce uses the Google Maps SDK (see Libraries) to display a map for pinpointing and navigating. The Map lets you find the coordinate of any location in 6 different coordinate systems (see Supported GCS/PCS) down to 1m precision.

There are 3 map types available: Normal, Satellite and Hybrid. The Map also allows you to save points and plot routes and regions.

๐Ÿ“ Saved Pins

The points, routes, and areas saved from the Map can be grouped, sorted and coloured to help organise your collection of points-of-interests.

๐Ÿ›ฐ๏ธ GPS

The GPS page gives you convenient access to the coordinates of your current location, as well as a 3D compass with pitch, yaw, and roll for orientation.

๐Ÿ“ Ruler

Saved points and routes can be added to the Ruler to compute cumulative and point-to-point direction and distance.

๐Ÿ”  Share Code

Share Code allows conveninent exporting and importing of points, routes and areas for sharing or backing up.

Supported GCS/PCS

Recce offers the following GCS/PCS for displaying and inputting grids:

  1. WGS 84 (EPSG:4326). As used by Google Maps for coordinates.
  2. Universal Traverse Mercator (UTM). Automatic zone/band detection and conversion.
  3. Military Grid Reference System (MGRS). Only for UTM coverage, does not include UPS. Automatic zone, band, row letter and column letter detection and conversion.
  4. Kertau 1948. Used in West Malaysia and Singapore.
  5. British National Grid (EPSG:27700). 2 grid letters and 10 grid digits.
  6. Maidenhead Locator System (QTH Locator). Up to 8 digits.

Since Recce uses Proj4J, new systems can be added easily in the future (see Libraries)

Installation

Google Play Store

The most convenient method to install and start using Recce is by installing from the Google Play Store.

Get it on Google Play

Google Play and the Google Play logo are trademarks of Google LLC.

Building

You can clone this repository and import into Android Studio.

git clone https://github.com/nujiak/recce.git

Alternatively, you can create a new project directly in Android Studio by going to File > New > Project from Version Control... and using https://github.com/nujiak/recce.git as the URL.

โš ๏ธ Note: You will need to provide a Google Maps API key for the Google Maps SDK to work properly (see Google Maps API Key).

Debug version

You can also use the debug version of the app from releases. You can install this version in parallel with the release version from Google Play.

Configuration

Google Maps API Key

You will need to provide a Google Maps API Key in order to use the Google Maps SDK. Follow the instructions on Using API Keys under the section Creating API keys to obtain an API key.

Create a string entry in app/src/main/res/values/secrets.xml with the name google_maps_api_key. You may have to create the file if it does not exist. Your secrets.xml should look like the following:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="google_maps_api_key">YOUR_API_KEY_HERE</string>
</resources>

YOUR_API_KEY_HERE should be replaced with your API key obtained from Google Cloud Console.

Contributing

You can contribute to Recce through the following workflow:

  1. Fork this repo
  2. Create your feature branch (git checkout -b new-feature)
  3. Commit your changes (git commit -m ...)
  4. (Optional) Run Mega Linter to ensure code quality
  5. Push your branch (git push origin new-feature)
  6. Open a Pull Request and make sure that it passes all checks.

Libraries

Recce uses the following libraries:

  1. Proj4J for coordinate transformations.
  2. Google Maps SDK for map display and pin plotting.
  3. Dagger Hilt for dependency injection.
  4. Room for database abstraction.

Other libraries are also used that are not stated here. The full list of dependencies can be found in app/build.gradle.