This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
There is a large number of developers around the world which are busy developing android applications in customized version of java programming tools to extend the functionality of android supported devices. There is a vast range of android supported hardware (smartphones, computer tablets etc) which opens a lot of options for developers to select desired hardware features that are used for their application development. If we use Windows based phones or iOS based phones it restricts us on limited devices but on the other hand as there are lot of vendors manufacturing android supported devices we can select any android device with our desired features to be used for our application.
In order to initiate the Android application development no tools or licenses are required to be purchased. Tools required for Android Application Development are easily available on internet for free.
The Android SDK abreviated as Android software development kit, includes API libraries, development tools which are necessary to build, test and debug application.
Native development kit(NDK)
The Libraries developed in C language or other languages can be compiled to ARM or x86 native code and installed using the Android Native Development Kit. Native classes can be called from Java code. The Android NDK and the Android SDK are the comapnion tools that lets you build your app in native code and application can be packaged into an .apk file which can be installed in a virtual machine or directly in to the device. In order to build activities, handle user input, use hardware sensors, access application resources NDK provides headers and libraries which can be used for this purpose.
Eclipse is a multi-language software development tool consists of a workspace and an extensible plug-ins. Eclipse can be used to develop applications in Java and by using various plug-ins, cross platform development using other programming languages including C, C++, COBOL, Fortran, Haskell, Perl, PHP, Python, Scala, Clojure, Groovy.
A peer-to-peer computer communication network can be used for client server applications. One computer act as a client/server for the other computers in the network. This allows access to various resources of the device such as files, peripherals, and sensors. No centeral server is required for this communication. Peer-to-peer networks can be established over the Internet or within a wi-fi zone. This networks can be used for sharing data in digital format e.g. audio, video.
We initially started developing our application for android version 2.2 (FROYO) on API level 8. Android has great compatibility among its versions. This was one of the reasons of selecting basic version (Froyo) is the compatibility constraints. An application compatible with foryo would also be campatible with other advanced versions of Android (currently upto jelly beans).
Our basic goal was to develop an application which can transfer live video stream over the wi-fi to the base station (client). The camera of android enabled smartphone would be used as an ip camera. When the apllication is run an ip address is generated which can be used at the client side to view the live video stream. In order to transfer the live video stream over the wi-fi we had to develop a server in application to open the sockets for communication. The server file we used is NanoHTTPD which is an open source server file for android application development. A client server communication has to be established. For this purpose we used a library called Libjingle which is an open source library developed by google and is known for peer to peer communication.
The NanoHTTPD is an open source web server which is a single .java file written in java 1.1 programing language. This web server can be used as a library component in development of Embedded applications. It supports dynamic content, file sharing and streaming.
Libjingle is an open source library used for peer to peer communication. Libjingle is developed by google in C++ which helps in creating network connections, session details and exchanging data. Its serves in following communication sessions
-Voice chat application
-Video conferencing application
-Live music streaming application
-Peer-to-peer file sharing application
After the sucessful development of our basic application which was capable of transfering live video stream from android enabled device to the base station (client), we started developing the added features in our application. The added features are as following
-Live GPS Co-ordinates transmission
-Live Accelerometer data transmission
We developed the piece of code for GPS coordinates and Accelerometer data which transfers the GPS coordinates and accelerometer data to the client via socket. This socket was initialized in the server application for the communication of data.
The Global Positioning System(GPS) provides time and location information via satelite navigation. A GPS satelite continuosly transmits message signal which is recieved by a GPS reciever and it then calculates the positioning using the information sent by GPS satelite. A typical GPS operation requires an unobstructed line of sight to four or more GPS satelites to aquire accurate results. The message signal sent by GPS satelite consists of the time at which the message is sent along with the satellite positioning at that time. This information is retrieved by the GPS reciever and it calculates the positioning of the satelite by timming the signal sent via GPS satellite and also using the speed of light calculate the distance between each satelite. GPS units are normally used for distance, positioning(longitude and latitude), speed which are calculated via the data retrived by GPS reciever.
The GPS consist of three main segments
The space segment is based on orbital planes for GPS satelite.