Wi-Fi
Interactive Mapping
A
Northern Arizona University Capstone Project
Research
When
it comes to choosing the software that we will use to complete our capstone
project, we are left with several different coding languages that each hold
their own advantages and disadvantages for solving the task at hand. Of the
many languages we have to choose from, only a select few meet the requirements
of our project, making the selection of an appropriate language much easier.
The C language, while being a popular language, offers small program size and
faster program execution however it does not offer object-oriented programming;
a trait that would prove quite useful in the design of our project. For this
reason, it would behoove our team to use a high level programming language
capable of object oriented programming. Using an object-oriented language would
allow our team to better divide the work among our members as each
"object" can be assigned to individual members and placed within the
necessary portion of our main program. C++ is such a language that offers many
of the favorable traits of C while also allowing object-oriented structure.
Another option is Apple's Objective-C language which was derived from C++ and
C# and therefore shares similar traits as these languages. However, unlike
other languages, Objective-C runs only on Apple operating systems, limiting our
devices to iPhone, iPad, and Mac OS X systems which is an important constraint
to be aware of. Finally, the last language most suitable for our purposes is
Java. Put best by, "Java is a multi-platform language that is especially
useful in networking," a task that will play a large and important role in
our project. Java is however much slower than languages like C++ and C# but
given the devices that our group has in mind, computation speed and power do
not impose strict constraints on the design of our project. As a start, the
team will begin by using Androids free software, Eclipse.
A big part of this project depends on learning
how to access and use GPS signals, or Global Positioning System signals. Currently
GPS satellites broadcast microwave signals to enable GPS receivers on Earth. If
a device similar to a smart phone is used it will already be GPS prepared and
thus make the task easier. Setting up GPS on a phone application will require a
user to accept GPS permissions when downloading the application. These signals
work by satellites sending out a signal to a device, that device sending a
signal back, and calculating how long the passing of these signals take. While
doing this a navigation signal called, ephemeris data, must also be passed.
This date calculates the position of each satellite and its network. Almanic data must be used as well. Almanic
data tells the receiver which satellites to search for, and this data is good
for 180 days, while ephemeris data is only useful for 4 hours, as it is highly
detailed.
Allowing
a device to perform multitasking requires a strict set of rules that each app
must follow in the design of their apps. A large portion of a devices multitasking
ability relies solely on the trust of the app developers to design efficient
and device-friendly applications. In this way, the Android and iOS operating
systems depend on apps behaving as "good citizens," meaning that the
developed apps "keep the time it takes to move to the foreground as short
as possible while also reducing its memory footprint when it is in the
background." In the case of Android applications, the applications may run
in the background and can perform any task that it has been granted permission
for (i.e. access to microphone and speaker). In doing so, we can essentially
run an application responsible for voice communication in the background behind
our tracking program. However, this is not the task that is required of us. Our
group is tasked with developing one application that handles both
bi-directional voice communication as well as personnel tracking. To accomplish
this, the code for our application must be aware of the limits of memory within
the devices we will be using and optimize our application to make the best use
of the available memory.
Originally this was thought to be a difficult
part of the project. However after researching phone applications integrating a
map into the program became clearer. Even games such as, Ingress, use google
maps in order to play in a more realistic setting. All it takes is a few lines
of code in the app and for the user to accept the permissions. If using an
Android application, Google Maps Android API must be used. This will allow the
team to add maps to our application based on Google Maps data. The API
automatically handles access to Google Maps Servers, data downloading, map
display, and touch gestures on the map. Answering many difficult questions the
team thought it would take hours to figure out, and yet a few lines of code
will display maps. Now what might be more difficult is getting the map to
display the location of multiple users at once.
Satellite
communicators are similar to what this team is trying to design. Communicators
such as the DeLorme InReach
SE Two-Way Satellite Communicator can send text messages, communicate verbally,
send an SOS signal, and provide you user with their current location, and it
can work in locations where there is no cellular signal. But these devices can
cost upwards of $300. If a user already owns a smart phone our app will be much
cheaper, the only downside being that the user will need to be in an area with
cell service.