Android Studio: “Memoire” App

You can view the preparation and wireframing for this project HERE.

Explanation

Our objective was to create an application whereby a user could create a memory, log it and then be able to view saved memories as they pleased. A memory is composed of a title, description and an optional image. These memories could then be viewed on a map or a list allowing the user to navigate through different saved memories. In addition to the user viewing their own geo locative memories, we initially hoped to allow users to see other memories that other users posted at certain locations. We believed that this would have been too much work for our scope due to time considerations and database work.

We decided to make a basic a version of our idea and if we were fortunate to have extra time, expand on our ideas. Our group members used Github in order to collaborate. We divided up elements of the project such as backend programming, map UI, photo integration etc. We first wanted to excute a way to store the user’s inputs i.e. the memory title, description and the location the memory is attached to. We wrote the inputs from the EditView and wrote them to file. This allowed us to store a record of all memories added. The map UI (the maps activity) could then call on these files to populate the ArrayList that contained PictureMarkerDataModel. This proved to be problematic as it did not display new additions on our map. We then opted to create individual arrays in the AddMemoryActivity class for each attribute of a memory. This allowed the MapActivity class access to these components. Within the MapActivity class we used a for loop to get each index of each array. The markers for each memory were then drawn using the MapFragment methods.

Passing images was not as straightforward as passing the Strings for title, description and positioning. We wanted to account for the user choosing not to attach a photo to every memory. Our way for accounting for this was that an image would always be passed into the array regardless. Based on conditions, one of two images would be placed into the array. Either the photo that the user upload or if no image was upload, we programmed a default null image that would leave just the title and description of the memory on the marker.

Another issue that we encountered was displaying new markers on the map. Memories created were dependent on the location in which the user uploaded (their current GPS). Using the emulator meant that every memory created gave it longitude/latitude of 0,0 by default. For debugging we ranged a random value 0­5 in order to avoid memories overlapping visually.

We had intended on having further basic functionality such as view all memories in a list with image previews. This would involve us creating a custom layout and a custom adaptor.

My Contribution

Our group met regularly in the early phases to discuss our potential ideas. I was present for all meetings. We deliberated many ideas, but prioritized our possibilities within our timeframe. Once we settled on the Memory App idea, we began our planning process. We all contributed to the planning. Through our shared Google Doc, I contributed various features, epics and user stories. I took the responsibly of creating the wireframes and the click through prototype. I designed them using Photoshop and based the designs on rough sketches we had created during early meetings. Based on group members’ feedback, I developed the wireframes a second time. I used InVision to create the click-through prototype.

Developing the code was split amongst the group. Even though we work on different elements of the code and collaborated on GitHub, we worked in close proximity of each other and shared our problems. My responsibility was the map UI. I needed to create a way to take the information the user entered into the previous screen and then display markers on the map to denote the geo location where the memory is attached. I worked on both the Java files and XML files. Once a marker is pressed it will reveal more details of the memory. It was my intention to develop our submitted version significantly. I wanted to implement our own custom layout and custom adapter in order to display a listview in a new activity. I also attempted to include a “View Memory” element in order to create a new activity screen displaying the memory details. However, because the button existed within the marker window, it proved to be problematic. It gave a NullPointerException, which I could not figure out in time. The map UI was very dependent on data that was in the arrays. Due to our time constraint, we were unable to resolve our image display problem despite must trial and error. A button was implemented to the top of the map in order for the user to relocate their current position after exploring the map for various memories.

Click HERE for GitHub access.