Git Product home page Git Product logo

trolley-tracker-android-client's Introduction

trolley-tracker-android-client - [Archived in June 2023]

From 2014-2021, Code For Greenville members built and maintained the technology which allowed thousands of locals and visitors to track the downtown Greenville trolleys in real-time from their mobile devices.

As of June 30, 2023, Code For America officially withdrew fiscal sponsorship and use of the "Code For" trademark to all national brigades, including Code For Greenville.

After July 1st, 2023, contributors can get involved with two re-branded efforts:

Summary

Android Client Application for the Trolley Tracker, which tracks the downtown Greenville, SC Trolley. This is a project of Code for Greenville, the Greenville South Carolina chapter of Code for America.

Contributing

  • Pull down the repository and build with Android Studio using Gradle.
  • This application leverages the Google Maps API, which offers a free tier, thus, get a Google Maps API key here
  • Create an XML file which contains the Google Maps API Key that you got above to and save to app/src/main/res/values/google_maps_api.xml
<resources>
    <string name="google_maps_key" translatable="false" templateMergeStrategy="preserve">
        {GOOGLE-MAPS-API-KEY}
    </string>
</resources>
  • You should now be able to run the build as expected. (NOTE: By default in the development environment we run the app in DEBUG mode. The API is defined in the Constants file. Here we define the DEBUG mode URL, which is pointing to our Development API. This is loading test data, not a live Trolley)

trolley-tracker-android-client's People

Contributors

ajhodges avatar bikeoid avatar divpatel10 avatar jeremywight avatar nyoungshipchain avatar allella avatar

Stargazers

Peter avatar  avatar Jeremy Wight avatar Matt avatar  avatar

Watchers

Matt avatar  avatar wmfox3 avatar Doug Cone avatar Ryan Poolos avatar  avatar James Cloos avatar Chris G. Williams avatar David Cohen avatar Tim Hallowell avatar Adam Gautsch avatar Austin avatar Joe Grinstead avatar Brent Westmoreland avatar Matthew Thornton avatar The Zach avatar Bekk Blando avatar Pamela avatar jadlebe418 avatar  avatar Creighton Magoun avatar  avatar Carmen Mays avatar  avatar  avatar Mark McDaniels avatar Harrison Stall avatar Josip Injić avatar  avatar Meredith Boyce avatar  avatar Ed Nunes avatar  avatar  avatar Meenakshi Radhakrishnan avatar  avatar

trolley-tracker-android-client's Issues

Routing/ETA (User -> Stop, Trolleys -> User)

There are web services that can be used to accomplish this, for example the Google Distance Matrix API, MapQuest RouteMatrix, Bing Route Data. Need to investigate API limitations...

More interestingly, there is an offline solution called graphhopper: https://github.com/graphhopper/graphhopper/blob/0.5/docs/android/index.md

I'm thinking that the OSM data for Greenville will be small enough to package in to the app and search without a huge performance hit. Will need to test on a crappy phone to confirm.

parseDateTime exception

Need to investigate. Maybe some inconsistent data is being returned from the API? Not sure why this would only happen one time on one device. DateTime parsing error.

image

Add android.hardware.location.gps to manifest

Address this:

Hello Google Play Developer,

We're writing to let you know that the apps listed at the end of this email may be affected by an upcoming platform change.

Action required: If your app requires GPS hardware to operate properly, you will need to explicitly add the "android.hardware.location.gps" uses-feature to your manifest.

What’s changing

We’re making a change on October 15th, 2016 that will affect apps targeting API version 21 (Android 5.0, Lollipop) or higher that use ACCESS_FINE_LOCATION but don't explicitly have the "android.hardware.location.gps" uses-feature. Going forward, these apps will be available to install on devices that don't have GPS hardware. In most cases this won't be an issue since Wi-Fi and Cell-ID based location provides high enough fidelity for the typical operation of these apps. However, any apps that require GPS hardware, such as GPS navigators, should explicitly add the "android.hardware.location.gps" uses-feature to their manifest.

If your app requires GPS to function properly and you do not include android.hardware.location.gps in your manifest declaration, your users may have a poor app experience.

Also, if you’re using the fused location provider and wish to receive the most accurate location samples from GPS (i.e. with PRIORITY_HIGH_ACCURACY), you must include the "android.hardware.location.gps" feature in your app’s manifest to ensure that Google Play only distributes your app to devices with GPS sensors.

You can read more about this change in the Android Developers Help Center.

Regards,

The Google Play Team

Up to 20 affected app(s) and version(s) are listed below. If you have more than 20 apps in your catalogue, make sure to check each app for this issue.

com.codeforgvl.trolleytrackerclient 15

Schedule View Not Responsive

Was just doing some testing on the production app and it appears that the Schedule page is not responsive (Pixel 1)

MainActivity fragment inflation exception

Not sure what could cause this. Seems to have something to do with SupportMapFragment.onCreateView

image

Not shown in screenshot: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.io.File.mkdir()' on a null object reference

Improve UI when reloading app

The changes we made in #42 have made it so the routes are not cached by the client, so depending on the Android lifecycle, sometimes when you open the app after it has been in the background for some time the map will be blank for a few seconds while it reloads.

The original behavior was that the old version of the trolleys/routes were shown and then it updated as soon as the new data was available. I think we should either try to find a way to preserve this while avoiding #42 or come up with a good loading indicator to show the users that the latest route/trolley data is being pulled.

Show direction of trolley in UI

Use the last x number of trolley updates to determine the trolley's direction. Maybe show the direction the trolley is travelling when the trolley is selected.

Drivers using the consumer app

One the drivers suggested that they use the consumer app to see where the other trolley is so they can better time the driving and we don't get into the situation where two trolleys are basically following each other around the loop.

Seems like a pretty good idea. The one question Greenlink had was, "how much data would be used if they kept the app running for an entire day."

The other thing was we'd have to change the app to keep the device screen on at all times. A positive for this would be that we at least know the device would be on.

Any other thoughts?

CC: @ajhodges

Lunch Route Issue

I opened the app today (Friday 1/8 around 1pm.) during the lunch route and it said there were no trolleys and to check schedule.

I then went to the map view and saw the trolley running. So, it seems the app is not pulling the route info for the Friday lunch route.

Implement detailed "stop" view

Accessible by selecting a stop twice or dragging up on the bottom bar to expand the stop view. Will show details of a stop, including description, route name, picture, maybe points of interest, and hopefully eventually an ETA for the next trolley

Flickering during route preview

Sometimes elements from the live map will flicker through to the route preview fragment. The most consistent way I can reproduce it (it is very intermittent) is to select a running trolley on the tracker map, then open a route preview and pan around a little bit.

Dynamic trolley colors

Change needed to support the new trolleys being added. Color will be defined on the back end.

User feedback for location updates

Show a loading indicator or other visual cue to let user know when updates occur. Shouldn't be annoying since updates happen frequently.

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.