46
Landscape Change Mapper Ryan Feather and Dan Halloran 4/30/15

Landscape Change Mapper Ryan Feather and Dan Halloran 4/30/15

Embed Size (px)

Citation preview

Landscape Change Mapper

Ryan Feather and Dan Halloran4/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

http://54.244.242.86/search.html 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

Network Connectivity

All fields filled out Passwords match if registering Email 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 4.4.2 (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

Setting up API

Setting up API

Mirror PHP Quick Start

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?