Android app, get gps in background and send to website

Job ID: 35032309

Budget: $30 – $250 CAD

Please read before bidding. I have written a fairly detailed version of exactly what I want so you can bid accordingly. I am paying what you bid. I'm not looking for an introduction bid, or a getting started amount. I'm not paying hourly, nor am I paying anything more than what you bid.

I need a single screen android app that will obtain GPS coordinates every X seconds with a timestamp and to store this data temporarily. Every Y seconds, submit the stored data to a website. No records are stored locally long term, there is no need for graphs or settings screens or alternate configurations. This app is strictly data collection. This MUST run in the background and while other phone activity is going on.

Here is how I want the screen to be laid out:

- A text box for the username (make this a remembered value each time the app restarts)
- A dropdown selection for the number of seconds between obtaining of GPS coordinates (1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 45, 60, 120) (make this a remembered value each time the app restarts, default is 10)
- A dropdown selection for the number of seconds between submitted the coordinates to the URL (10, 20, 30, 45, 60, 120, 240, 300) (make this a remembered value each time the app restarts, default is 60)
- A text box for the URL (make this a remembered value each time the app restarts)
- A green button that says Start, when clicked and running it should change to Red and say Stop.
- Two labels side by side that display last obtained Latitude and Longitude
- A button that says Submit X Values, X should equal the count of temporary data waiting to be submitted to the URL.

When the user clicks Start:

- Obtain GPS coordinates every X seconds, where X is the seconds selected in the dropdown. Temporarily store these values along with a current unix timestamp. Update the "Submit X Values" button text to show how many stored values exist.

- Every Y seconds, where Y is the seconds selected in the "seconds between submitted" dropdown, POST the temporarily stored values to the URL supplied in the textbox. IF there is no network connectivity at the time, continue until the next Y seconds occurs and attempt to submit again. If the submission was successful, reset "Submit X Values" back to "Submit 0 Values"

- GPS Latitude and Longitude should be in the format of "DD.MMSSSS" starting with or without the negative depending on location and the timestamp should be the unix timestamp.

When the user clicks Stop:

- Stop obtaining GPS coordinates
- Submit the remaining stored values
- Should network connectivity not exist, the Submit X Values button should be updated to show how many values have not yet been submitted.

This needs to run in the background and I'm looking for fairly high accuracy GPS settings, I'm OK with it taking a lot of battery power.

The attached screenshot shows a very rough idea of its layout, I used MIT AppInventor.

The attached aia file is an MIT AppInventor project that I did, IT IS NOT WHAT I'M AFTER. But it gives you somewhat of an idea. AppInventor will NOT work for what I need this to do.
Related categories: Android Kotlin