Scavengr is an augmented reality scavenger hunt app that uses QR codes and/or NFC tags to display multimedia hints with or without wireless service.
QR codes are simple images that phone cameras can easily identify, even from a distance, in low light, or at an angle. NFC tags require physical contact with the phone (i.e. Apple Pay), but they are inexpensive, can be easily embedded in physical objects, and can be written/rewritten by most Android devices.
Users in the Organizer role can set up new hunts easily and quickly with default QR templates, or expand them using NFC tags embedded in real-world objects.
Hunter users will be able to start a hunt by using a public link or accepting a private invitation. Scavengr will track hunt progress and publish completion times.
Scavengr hunts are a creative and low cost activity that can be easily tailored to any group and age. They can facilitate active learning in museums, classrooms and other spaces, guide a night on the town, or take explorers out into the wilderness. QR and NFC tags are inexpensive and can be set up unobtrusively in public spaces like parks, malls or urban areas.
The Organizer will be provided with a default list of QR codes that can be easily printed, and given the option to replace any clue with an NFC tag (BYO NFC). They will assign a hint (any format of media, either uploaded or linked by url) to each clue, and generate a scavenger hunt link that can be shared by email, text, QR or NFC. This can be done before or after placing the QR/NFC clues along the path of the hunt.
The Organizer will choose an access level, either open to any user with the hunt link, or closed to invited users only.
Hunters will either hunt online, passing QR and NFC info to the server and receiving hints back, or hunt offline, with all data stored on the device. Online hunting will require wireless service but use very little storage, while offline hunting will need to store files locally but will be independent of wireless service.
When a Hunter begins a hunt, they will be presented with the first hint, and a timer will start. When the app receives the NFC or QR data from the first clue, it will display the hint to the second clue, and so on. When the final clue is scanned, the Hunter will have an option to add their name and time to a leaderboard for the hunt.
The Scavengr server will maintain hunt details including clue/hint associations, clue media files, and leaderboards. Access will be managed by OAuth, and each hunt will be the property of its Organizer. Private hunts will only be visible to profiles authorized (through OAuth) by the Organizer.
Hunters will have the option of downloading any hunt they have access to for offline use.
Scavengr’s server is able to handle HTTP requests, but does not restrict user permissions. We were unable to successfully implement a Preload Launcher, so data is being manually added through Postman.
The client app has a local database, as well as service classes that interact with the server and local entities to download and upload Hunt entities. We built our UI with a mix of static fields and list adapters to receive and display database objects. The Current Clue fragment opens a camera view and contains QR recognition logic that triggers a webview containing the media linked to each clue before advancing to the next.
There are currently five default QR codes, which contain the text “scavengr-clue-1”, “scavengr-clue-2”, etc. Scanning the code linked to a Clue loads the corresponding media Url in a pop up webview. There is an error Toast if any other QR code is detected.
Due to social isolation measures and a lack of foresight, we did not get NFC tags to experiment with, and so have not made an attempt at incorporating NFC read/write into the app.
In-app QR generation.
NFC integration.
Server security.
HuntDetails POJO to preview a Hunt before downloading to reduce server traffic & storage use.
Media upload to server to enable offline play.
Fork/Clone the Server and Client: +Server Repository +Client Repository