The Picnic Mobile App for Android

The Picnic mobile application, written for Android networking devices, is a location-based, community image sharing application. Users take pictures from their phone cameras, and adding a title (perhaps witty), post it to the server. The Picnic server manages the collection of all images posted by users and sends the images back to the users based on the location of where the image was taken and of where the viewer is. This allows Picnic to bring users in the same location together, contrary from how many technological devices serve to take users away from their current location. To describe the more technical side of Picnic, it is worth delving into descriptions of the technologies used in its development. The client side of Picnic was written for Android in Android Java, utilizing APIs such as the Google Maps API, Google Play and GPS location services. The Picnic server client was written in PHP and hosted using Apache on a virtual private server. The server makes use of PHP file API to save images uploaded by users and MYSQL to store data about posts such as location and votes. The process of getting a picture from a user’s phone, to the Picnic server, and back to other users is a rather complicated process. First, before a user even takes a picture, the Picnic client needs to start determining where the user is geographically. Although multiple methods are used to determine a user’s location, determining an accurate location in a short amount of time is very difficult, so Picnic is designed to utilize the maximum amount of time possible in determining a user’s location. When a user of Picnic decides to take a picture to post, the Picnic client utilizes the Android Camera API to allow users the full functionality of their device’s camera in capturing their photo. This allows users to adjust settings such as flash and white balance in a way more simplistic camera calls cannot. Once the user has taken a picture they are happy with, they have the option to title their image. The Picnic client then uploads this image along with the current location of the user to the Picnic server, where it is stored to be sent out to other users later. The process of getting images from the Picnic server back to the Picnic client starts with a request from the Picnic client to the Picnic server. The Picnic client sends its current location as determined by the Android Location API to the Picnic server. Since users are grouped by Picnic based upon geographical location, in deciding which images to provide to the user, the Picnic server primarily considers the location of the user and the locations from which the other images were taken. This provides a maximum radius a user will be away from whatever they’re seeing a picture of, allowing them to possibly have a more personal interaction than they would be able to viewing something many miles away. However, the location of users is not the only thing taken into consideration when the Picnic server determines which images to display. From early on in the Picnic design process it was apparent that more measures than simply physical location were needed to determine which images to show to users. It was determined that a user-powered voting system should be implemented to help gauge posts based on quality in a way computer powered metrics could not. This implementation fits almost seamlessly into the overall flow of Picnic, allowing users to cast votes on images as they browse through the plethora of posts near their current location. These votes are compiled by the Picnic server into counts for both individual posts and for collections of a single user’s posts. These votes weigh towards which posts are shown first in post listings, even in extreme cases being used to exclude a heavily unfavorable post from appearing in listing at all. The threshold for which posts will be excluded entirely is based upon the theory that some users may post inappropriate things to the Picnic image stream which most users would find objectionable. This was determined to be a fair and democratic way to decide which posts did not belong in the Picnic community as opposed to a group of dedicated post moderators which would have the responsibility of deciding which posts should be seen and which should not. The voting system is also implemented in such a way to discourage members from repeatedly posting offensive material. This is achieved through the user reputation mentioned earlier. Every user on Picnic starts out with a value of zero reputation. This value goes up every time another user votes positively on an image they post and goes down every time a fellow user votes negatively on one of this user’s images. It is expected that for most users their reputation will be well above this zero starting point, indicating a trend of posting good images that are beneficial to the Picnic community. However, for some users, this reputation may fall to very negative levels. In this case, this user would be disallowed from posting to the Picnic image stream for a period of time, in order to help keep offensive images from appearing in the Picnic image stream.

As was previously mentioned, submitters can choose to attach to their picture the location where the picture was taken. One of the most interesting features of the app is the integration of Google Map services. Other users can use the in-app Google Maps API-powered map to see where the picture had been taken. This can come particularly handy in many cases, such as, for example, traffic jams, when commuters can ‘nick’ images of the jam to other people, warning them on the map exactly what points they should avoid. This is just one of the countless many uses of the app. This app was built in less than 36 hours, and is currently headed for the Google Play marketplace. As versions increase, more features will undoubtedly build upon the Map and other services. Analysis of places where photos were uploaded, for example, can lead to studies in finding out the concentration of wi-fi equipped areas in crowded cities. It can be used for advancing the cultures of shy groups which would not otherwise be proliferated. It can lead to landslides in people-led democratic marketing of local talent rather than corporate led marketing of brands. People can vote upon the best places in a city, and a 3D histogram over the city with number of upvoted photos vs the city landscape can be made to aid tourists and visitors. Small, hopeful voices can be amplified by the votes of common people who live in the same area, and are not distant foreign observers. It can allow a community to look into itself, and improve relations, leading to, as the name of the app suggests, metaphorical picnics, prodded along by the Picnic app.

The possibilities of people-powered Picnic are endless. It is aimed at every member of all communities around the world. It is aimed at all those who want to have fun, and to all those who want to bring to light social issues. It is aimed at everyone.

Share this project:

Updates