Landscape Change Mapper Ryan Feather and Dan Halloran 4/30/15
As a user who is hiking in the Black Hills, I would like to… Report a landscape change event Provide details about the event Include pictures I have taken So that I can.. Improve public knowledge about my environment Report events that pose threats / cause concern Primary User Story
Citizens able to submit/view landscape events Event information and pictures Robust search Data gathered for research Toolset for scientists Anonymous or registered Extend to new technology Goals
Proof of Concept Crowd Sourcing Citizen Science Mobile Applications Open Source Software/Data USGS “Did You Feel It” Background
Agile Model – Sprints and evolving requirements Atlassian Jira – Issue tracking, Sprint planning and storyboarding Atlassian Stash (Git) – Version control and code repository Project Management
Phase 1 - Website
Bootstrap HTML/CSS Javascript JQuery Async POST requests JSON - Serialization Leaflet.js Leaflet.draw Mapbox PHP Apache Amazon Web Services MongoDB Technologies Used
User Login / Registration Event Creation Search Tools Event Details Page Components
Search
Feel free to try it yourself Small Demonstration
Map Thumbnail
API Example
Database has Collections(tables) Event – Submitted event info Files –Uploaded images (gridFS) User – User information. Happen – Happening now events (described later) GoogleAuth – Links user table with google API Oauth2 (for Glass) All database reads / writes through php driver Passes queries using php arrays. Database
Relatively new trend Allows previously unheard of flexibility “Schemaless” means that data can be inserted regardless of previous records. Generally has an “implied” schema rather than an “explicit” Great for rapid prototyping and key-value stores. Not so great for data security and data consistency. NoSQL Database
Same functionality/database as website Increase crowd sourcing Keep it simple Mobile concerns Network connectivity Battery life Screen size Phase 2 – Android App
Android Studio User friendly (suggestions/auto completion) Version control built in Powerful emulator Debug on physical devices Layouts in XML Rest in Java IDE
Stack of activities (screens) User quits activity with back arrow Suspends activity with home button Navigation add layers Programatically Don’t keep login/register activity Intent starts new activity Android Lifecycle
Android permission to view connectivity Check network is enabled Check if network has internet access Error if not connected If valid connection enable login or register button Network Connectivity
All fields filled out Passwords match if registering validation Built in android pattern matcher Form Validation
Persistent key value pairs stored to phone Each app has own storage Not secure, but hard to access Used to remember login Encrypt password stored on phone Shared Preferences
Application not responding in 5 seconds Important for network tasks Thread off of main UI thread Used frequently in app Asynch built in with return methods Asynch Task
Similar to login/register activities Validate all fields filled in Build JSON object Async post to server Check return data Create Event
Three different ways to make app Traditional android app installed on device Glass Development Kit installed on device Mirror using google API service Phase 3 – Google Glass App
Built same as cell phone app Familiar Great documentation and samples Layouts might not work correctly Can’t use glass features Text to speech Gestures Timelines/cards Traditional Android App
Android (API 19) and glass development kit preview in the SDK Compile with GDK Works in most Android IDE’s No theme Has glass features available Not full network support Glass Development Kit
Nothing installed on device Data accessed through RESTful API Code is stored on server Support for most languages (PHP) User’s google account gives permission LCM linked to google account and stored in server Service inserted into glass Picture is sent to google API Server requests updates from API node Mirror (What we used)
Setting up API
Mirror PHP Quick Start
Linking Google Account
JSON object that glass sends to API Contains all information about picture Date, speakable text, attachments, location, etc Has everything we would want Stored in Google’s API server Timeline is sent to server when requested Create scheduled task on server “Happening Now” Timeline Card
App on Android phone paired with Glass Helps pair and setup Screen mirrors Glass display on phone Device info Last known location My Glass
Questions?