Oh no, all of our animals have escaped!

Recently the local zoo has had an innovative new locking system installed on all animal cages and gates allowing all locks to be operated remotely….

Unfortunately in an electrical storm last night the control centre was hit by lightning, opening all of the locks in the zoo, allowing the animals to escape.

In order to avoid a media disaster (or worse) we need to locate, capture and return all of these animals as quickly as possible.

Fortunately the zoo maintains a database of all of our animals, we can check this to compile a list of those that are missing.

The Specification

A team will be sent out to try to locate these animals, they will be equipped with a portable smart device running an application that will let them enter the location of any animals that they spot, along with details of the sighting, the device will attempt to automatically enter the location using sensor data from the device’s hardware.

These sightings will be made available to another team sent out to capture the animals in the form of a map with markers for each sighting, viewable in the device app.

When a member of the capture team gets to the sighting location they can then confirm the sighting.

When an animal is captured this can be entered into the app and crossed off the missing list in the central database. An animal can only be positively identified once it has been captured therefore sightings do not refer directly to specific missing animals.

When all animals from the missing list have been re-captured the app will notify all users that the search is complete.

It is assumed that all initial data entry will be completed outside of the app, that is the missing list and any associated data will be already populated in the database.

Technical Requirements

The app will be written in Java to run on Android devices.

The backend will comprise a central MySql database, accessed using PHP over HTTP (or HTTPS) run on an Apache web server running under Linux (commonly known as a LAMP stack. Aside: Is this the only way to implement the server side web services? No. Is it the best way? Maybe not. I could quite easily use pure Java server side which would be easier for me, however the reasoning is to gain exposure to some different technologies).

Data will be passed from the web server to the app and vice versa as JSON encoded arrays.

The location aspects will use the device’s location services (Network, GPS) and the Google location API for Android where available, there must be a manual override for location entry.

The mapping aspect will use the Google maps API for Android.

There will be two types of users for the app; Members of the sighting team and members of the Capturing team, appropriate data and services must be presented to the appropriate user.

The server must be able to communicate with any running instances of the app in order to inform users about changes in status:

-The sighting team need to be notified of captures so their missing list can be updated.

-The capture team need to be notified of captures and sightings. The capture team should be notified of the linear distance of any sighting from their current position.

-All users should be notified when all animals are captured and the case is closed.

Project Delivery

Time is clearly against us therefore we will able to be delivering a working model as soon as possible with updates delivered in short developmental cycles – deliver early and often.

The project will be managed in staged phases, each phase must deliver a usable project building upon the functionality of the previous phase.

Let’s get started!

The first things we need to do are set up our development and test environments.

All of our PHP and Java development will be done in Eclipse.

We will need to install the Android SDK which provides all necessary tools for developing Android applications.

We will need to set up a LAMP stack (Linux, Apache, MySQL, PHP) to access our database server remotely.

We will use PHPMyAdmin to create and administrate our database.

First thing is to set up our development and testing environment.

Next page: Setting up the dev/test environment – Part one

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: