Code Monkey home page Code Monkey logo

getback_gps's People

Contributors

akcansoft avatar alunacast38 avatar asereze avatar atul516 avatar bgo-eiu avatar chobkwon avatar coderbm1 avatar comradekingu avatar constambeys avatar dagvelovic avatar flipspecs avatar jsmakaayb avatar jsseb avatar laralem avatar ldmpub avatar menestrom avatar mohammedbelkacem avatar mregazzi avatar naofum avatar nascimentolwtn avatar nijel avatar ruleant avatar santossi avatar swyter avatar victorenator avatar vipals avatar waldist avatar weblate avatar yarons avatar yfdyh000 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

getback_gps's Issues

Remember last/best location

Use the remembered last location if it is better/more recent than the current location, regardless of the active location provider.

Add help page

'How to use' page :

  • On wiki
  • In the app (separate help page? Integrated in About Activity?)

add a name to a stored location

  • adjust AriadneLocation to have a name
  • adjust StoredLocation to also save a location name
  • Ask for a name when storing a location
  • display the location/destination name in the interface
    • in DetailsActivity : AriadneLocation.toFormattedString()
    • in MainActivity
  • rearrange MainActivity layout
  • limit number of characters displayed, to avoid messing up the layout
  • change name of a stored location #162

use gyroscope/compass sensors to get more accurate bearing

When only relying on the location data (GPS/network), the actual bearing can be inaccurate, f.e. when you turn around, the change in bearing will only be apparent by the GPS location after having moved in the new direction.
Using internal gyroscope and/or electronic compass, the current bearing can be detected faster and more accurately.

TODO :

  • LocationService is not unregistered when Activity loses focus.
  • add unit tests for Navigator class
  • add unit tests for Orientation Tools and LowPassFilter classes
  • finetune updateRate (currently set to 200 ms), to avoid too much CPU activity -> limit number of updates
  • only update UI when a new rotation value is calculated.
  • filter accelerator/gravity sensors, using a low-pass filter, see Accelerometer Example
  • calculate average value of last x orientation values, to make value less 'jumpy', see #147
  • implement hasOrientation
  • update check for inaccurateBearing : accurate, if hasOrientation is true
  • if present, use 'Google Inc.' sensor that returns a calculated gravity
  • move isTimestampRecent to Tools class
  • add unit tests for isTimestampRecent() methods -> instrument Test
  • rename Orientation class to GeoOrientation #140

Add 'get back' screen

This screen/activity uses the getLocation, savedLocation and getRelativeDistance classes to display the right distance and direction to the saved location

Format long/latitude

Format longitude and latitude :

  • detect segment
  • convert number (depending on segment)
  • format number
  • add N(orth), S(outh), E(ast), W(est)
  • use localized units
  • add unit tests

Localize distances

Add an option to preferences to choose prefered system (metric, imperial)
Applies to :

  • accuracy
  • speed
  • altitude
  • distance

make properties of AbstractAriadneActivity class private

Refactor AbstractAriadneActivity and limit access to private properties, using getter methods.
Some methods (like update LocationProvider and updateLocation) can be moved from the child classes to the abstract parent class.

  • mBound -> isBound()
  • mService -> getService()
  • mCurrentLocation
  • mStoredLocation
  • mProviderName

Create relative distance/direction class

Calculate distance and direction from the current location to a stored location.
To get a relative direction, the current direction in which the user is moving is needed, thus at least two location points.
Don't calculate distance/direction when no location is stored.

  • getCurrentBearing()
    Calculate bearing from active sensors (if present) :
    • get bearing from electronic compass, TODO, see issue #41
    • if location has a bearing (fe. locationprovider = gps), use bearing from location
    • if bearing is not definied for the current location (fe. because locationprovider does not provide it), calculate it from previous and current location
  • getCurrentSpeed()
    Calculate bearing from active sensors :
    • if location has a speed, use speed from location
    • if speed is not definied for the current location (fe. because locationprovider does not provide it), calculate it from previous and current location, and both timestamps.
  • getDistance()
    Calculate distance between current location and stored location
  • getAbsoluteDirection()
    Calculate absolute direction based on bearing from current location to stored location.
  • getRelativeDirection()
    Calculate relative direction based on getAbsoluteDirection() and getCurrentBearing()
  • add tests

Only save longitude, latitude when saving a location

When clicking the store location button, the entire location object is copied, also speed, accuracy, timestamp, ... This messes up the layout of the MainActivity.

BTW : This issues resolves itself when the activity is restarted, and the saved location is retrieved from local storage, because only long/latitude is stored in local storage.

Add 'reset' method to StoredLocation

Add a function to clear a stored location. this means removing the data from the SharedPreferences file and removing the current location from the object.

Automatically adjust update location frequency settings

When getting closer to a destination, it makes sense to have more frequent updates, and thus getting a higher location accuracy.
-> Add option to automatically adjust location update intervals based on distance from chosen location.
f.e. 1 sec, 5m when closer than 100m; 10sec, 10m when 100m-1000m; ...

incorrect stored longitude/latitude crashes app

Stored longitude/latitude string (in SharedPreferences) contains a comma as a decimal separator. This crashes the Location.convert method
-> find out why a comma is stored
possible solutions :

  • use a different type to store in SharedPreferences
  • use a different conversion mechanism

Add about screen

  • Add an about activity (screen), displaying
  • brief description of the app
  • version
  • author names
  • license info
  • link to website/wiki
  • Call it from the action bar (menu is deprecated since Android 3.0)

save altitude when storing a location

  • save altitude in StoredDestination
  • calculate height difference between destination and current location
  • display height difference on Main and Details activity

Indicate when geolocation or bearing is inaccurate

For location -> when timestamp of current location is too old, when accuracy is too big, when there are not enough satellites (in case of GPS)

For bearing -> when timestamp is too old, or location has no bearing and (prev. loc = curr. loc. or no previous location)

translate interface

translate interface to Dutch and write tests that check it is actually translated in the appropriate places.
Try setting up weblate for the translation.

Class to retrieve location from provider

Create class to retrieve location data from a location provider (gps, cell, network, ...), either continuously or at a one time request, if necessary using a background task, it should also check the accuracy of the location and try to find a better signal if available (fe. if no gps signal is available, take a location based on wifi or cell network info)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.