Using Open APIs In Mobile Apps Activity
Title | Using Open APIs in Mobile Application Development |
Overview | In this activity students will learn about Open APIs, how does it relate to open source and how to use in building a mobile application. |
Prerequisite Knowledge | CS2 using Java and basics of Android development |
Learning Objectives |
|
Background
This activity is meant to educate students about open APIs and how to use them in Android app development. The activity is targeted for crisis management APIs to emphasize the humanitarian aspect of HFOSS.
Directions
Part 1
- What is an Open API? What is REST? How and why is it open ?
http://searchcloudapplications.techtarget.com/definition/open-API
- What is the difference between open source and open API?
http://toni.org/2007/01/30/open-source-vs-open-apis/
Write a one page summery compiling your understanding of these readings.
Part 2
FEMA (The Federal Emergency Management Agency) has made some of its data public through a REST API http://www.fema.gov/data-feeds#APIs The released data sets are listed in http://www.fema.gov/data-feeds#APIs and include the following:
- Housing Assistance Owners
- Housing Assistance Renters
- Registration Intake and Individuals Household Program
- Public Assistance Funded Projects: Summary
- Public Assistance Funded Projects: Details
- Hazard Mitigation Grant Program Property Acquisitions
- Hazard Mitigation Grants
- Disaster Declarations Summaries
For example, the following http request retrieves data for Housing Assistance Owners. To test the API, run the http request on your browser. For example, the House Assistance Owners API (http://www.fema.gov/api/open/v1/HousingAssistanceOwners) when executed on the browser runs this partial record. " {"metadata":{"skip":0,"top":1000,"count":0,"filter":"","format":"json","orderby":{},"select":null,"entityname":"HousingAssistanceOwners","url":"/api/open/v1/HousingAssistanceOwners"},"HousingAssistanceOwners":[{"disasterNumber":1983,"state":"MS","county":"Adams (County)","city":"NATCHEZ","zipCode":"39120","validRegistrations":29,"averageFemaInspectedDamage":8176,"totalInspected":16,"totalDamage":130819,"noFemaInspectedDamage":10,"femaInspectedDamageBetween1And10000":3,"femaInspectedDamageBetween10001And20000":0,"femaInspectedDamageBetween20001And30000":1,"femaInspectedDamageGreaterThan30000":2,"approvedForFemaAssistance":9,"totalApprovedIhpAmount":96070,"repairReplaceAmount":69315,"rentalAmount":20347,"otherNeedsAmount":6408,"approvedBetween1And10000":5,"approvedBetween10001And25000":3,"approvedBetween25001AndMax":1,"totalMaxGrants":1,"hash":"5a7d9748949c69e2b8c8bc7d93158820","lastRefresh":"2014-12-12T01:18:19.599Z","id":"546e064687456f7b0c07de85"}
"
Now choose two different APIs, run an http request for the API on your browser and copy a couple of records from the result in your report.
This output is in JSON format.
Part 3
Develop an Android App that provides an interactive interface to search and display a data feed from the FEMA data sets. Your App should use the sample code attached to retrieve data from an API and your task will be to design and develop and App that displays this data.
Deliverable
- A report including answers for part 1 and part 2
- A .zip and .apk of your Android app.
Notes for Instructors
Assessment
Criteria | Level 1 (fail) | Level 2 (pass) | Level 3 (good) | Level 4 (exceptional) |
---|---|---|---|---|
Understands what is a Open API and how is different that open source | Little to no understanding shown; Answers are made up or unrelated; Didn't read material | Limited understanding, showing that they read some, but did not dig very deep | Showed that they have done the readings with limited understanding | Clearly explain the answer to each question with supporting examples |
Testing FEMA APIs | No testing | Testing with bad results | Testing with good results | Testing multiple APIs with the correct result |
Create an Android App that retrieves data from a REST API | Did not attempt to create the App | App retrieves data but data is not parsed | App retrieves data and parses the json data | App retrieves data, parses data and displays data |
An interactive interface is develped to display data | Did not attempt to create an interface | Create a limited interface for the app | Create a complete inteface displaying all retrieved data | Create an efficient interface with the ability to search/filter the data |
Comments
Android Development, JSON data model
Additional Information
ACM Knowledge Area/Knowledge Unit | PBD/Mobile Platforms |
ACM Topic | Mobile programming languages |
Level of Difficulty | Medium- Challenging |
Estimated Time to Completion | 6-8 hours |
Materials/Environment | Internet access, Android Studio installed |
Author | Ruby ElKharboutly |
Source | Ruby ElKharboutly |
License | Creative Commons CC-BY |
Suggestions for the Open Source Project
Suggestions for an open source community member who is working in conjunction with the instructor.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License