VanCity Cycling is an android mobile application that allows users to plan their cycling trips around Vancouver. An academic project developed in a team of two in collaboration with CityStudio and the City of Vancouver, the goal is to promote bike riding as a mode of transportation for novice cyclists. Through VanCity Cycling, we wanted beginner cyclists to feel more comfortable with the idea of cycling around Vancouver by providing them with easy ways to plan their trips, get detailed information on the routes they are taking, as well as offer route options and resources to help them on their journey. The completed application was then presented to the City of Vancouver Transportation Division.
The first week of the development process consisted of planning out the features that would be implemented and designing the initial wireframes for each app activity on Figma. With the main functionality of the app being the ability to plan routes using a built-in map, we came up with the concept to have three route generating options that the user can pick from to help fit the needs of a wider range of cyclists. The different options consist of users being able to pick a predetermined end location to cycle to and the app will create a route to that location based on their current position or users can pick a predetermined route with a set start and end point. Although there is still the standard option of manually inputting a start and end point, these predetermined options provide beginner cyclists with options that they can easily select from without having to input their own destination. The idea of adding a checklist activity was also discussed as it would allow users to better prepare for their cycling trip and to ensure that they have all the necessary equipment ready before they head out on their journey.
Once the details and wireframes of each application activity were planned out and designed, I helped create the overall branding of VanCity Cycling which utilized the colours of blue and green to represent Vancouver. I then assisted in programming the interface for each activity that we had planned to implement in our application in Android Studio using XML.
To keep track of the app’s data, I created SQLite databases which held the Vancouver bikeways data and predetermined routes that a user can select from when planning their trip. The database was also used to store the user’s information, such as their favourite routes and account information, as well as their checklist data. In order to retrieve, store, update, and delete data from the database, I utilized SQL queries to execute the task that the user requested. A search and filter functionality was also implemented in some of the map sub activities to allow users to refine their search in the database.
The main map activity of the application that I implemented using Java consisted of three sub-activities; landmarks, create route, and popular routes. I created the landmarks activity to display a list of predetermined landmarks around Vancouver that users can bike to from the SQLite database. When a landmark option has been selected and started, the app will take the user’s current location using the GPS functionality and it will show them the bike route on the main map using the Directions API.
In the create route activity, users can enter a start and end point. When a route is searched for using these points, the application will then look in the Vancouver bikeways database to check if a match was found. If there is a match, these points will be used by the Directions API to generate different route options. These options will then be presented to the user in a list with the route number, bikeways type, route distance, and duration. Once a route option has been selected, the app will take the user back to the main map where the start/end markers plus the route itself will be displayed.
The last sub-activity is the popular routes activity which will have predetermined routes with both a start and end point that users can select from. They will have the opportunity to favourite these routes which will be stored in the SQLite database as well as filter the options to their cycling comfort level.
Additionally, the GPS was utilized in the resource activity to show the current weather of the area that the user is in based on their device’s location through the use of web services. The cyclist’s current speed will also be displayed on the screen through the use of a speedometer and GPS to track the user’s current location.
An instance where I integrated the use of device sensors within the app was through the use of in-app cycling alerts. These alerts will popup if the device light or temperature sensor detects that it is dark, hot outside (above 18ºC), or cold outside (below 7ºC) with a friendly warning once a cycling route has been selected. The intention behind these alerts is to remind users to exercise caution when cycling at night or to ensure that they are prepared for certain weather conditions.
The air pressure sensor data was also implemented and displayed in the resource activity to allow the user to see the change in air pressure as they are cycling. If the air pressure sensor returns a reading with a lower value, this informs the cyclist that the altitude is increasing which could result in a more difficult trip as they are most likely cycling uphill. Another feature that was implemented on the resource activity was implicit activity links that lead users to helpful cycling resources such as bike safety and bike laws.
A challenge that we faced during the development process was with the Android Studio emulator, which was the application that we were using to create, test, and run the project. Since neither one of us had access to a physical Android device to test our app on, we had to rely on the virtual emulator which came with certain restrictions for what we could program and execute. One of the limitations was the inability to activate a flashlight. This was an issue because we had initially planned on implementing a night mode feature that allowed users to turn on their device’s flashlight within the app while they were cycling in low light to increase visibility. Since we were unable to implement this due to the emulator’s restriction, we ended up changing our initial night mode idea into allowing users the ability to toggle between light and dark mode within the app depending on their preference.
Within the span of 8 weeks, I was able to help develop a fully functional android application that allowed users to plan their cycling trips in an accessible way that would help beginner cyclists feel more comfortable with the idea of biking around Vancouver. For further developments on this app, I would like to explore the possibility of implementing a rating system to allow users to rate routes as well as provide feedback on them to give other users an idea of what to expect on their journey.
As it was the first mobile application that I have ever created, I was able to learn a lot about the mobile development process and how to design a working application for an android device through this project. It was also my first time working with APIs and figuring out how to integrate it within the application. Overall, this project has strengthened my programming skills and allowed me to put my design knowledge to use through the creation of the app’s user interface. At the end of the project, we were invited by the City of Vancouver to join a virtual session where we presented a demonstration of the VanCity Cycling application to their transportation division.