App Developer for Android™
For bespoke UK app development for Android™
call: +44 (0)1462 627848 or click here to email us

Low cost Android™ application development that connects to your data in the cloudBespoke Android™ application development
 

Android Application Development for Emtep Aviation Logistics

You'll see the Emtep logo on vehicles at every major UK airport and selected European airports every day. They have been fulfilling the logistics requirements of the aviation industry now for over 25 years.

Emtep's ability to get 'airside' means they can deliver right to aircraft waiting for crucial maintenance or emergency parts and have daily delivery cycles to all UK airports using their fleet of 35 trucks.

App Developer for Android developed a clean and simple Android app (see below) which connects all Emtep drivers to their delivery jobs and also tracks the location of all jobs by polling the GPS co-ordinates of the Android handsets.
Emtep clients who will benefit from the Android app we have developed
Some of the companies using Emtep Aviation Logistics


The Emtep Android app home screen checks the device's SQLite database for last-saved settings

On this screen of the Android app we first of check to see the van the phone was previously assigned to has been saved on the Android device's SQLite relational database. From here users can select the van run, view jobs, search jobs or exit the Android application.

Android applications can create and manipulate their own private SQLite relational databases. Developers can also inspect and modify databases on a given Android emulator or device using the sqlite3 command-line tool provided as part of the Android SDK tool called Android Debug Bridge (adb).

SQLite is a lightweight relational database engine. SQLite is fast and has a small footprint, making it perfect for Android devices. Instead of the heavyweight server-based databases like Oracle and Microsoft SQL Server, each SQLite database is stored within a single file on disk. Android applications can choose to store private application data in a SQLite database.

SQLite is basically a stripped-down SQL database engine for embedded devices. For specific information about SQLite and its features, functionality, and limitations, see the SQLite online documentation.

Emtep Android app van run list pulled from Web app cloud data using Android XmlPullParser

Here our Android application developers have used their Android app development skills to pull the list of vans with delivery jobs assigned from the Web app cloud data using Android's XmlPullParser.

The DOMParser is probably the most commonly used Java object for reading and validating XML documents. The DOMParser reads the XML and (depending on the parser initialization) will validate the XML against an XML schema. If the XML is valid, the DOMParser will return a Document (DOM) object, which represents the XML as a tree structure. The XML can be processed by walking this tree.

Like the DOMParser object, the SAXParser object can validate XML against an XML schema. However, the SAXParser is faster (at least when validation is turned off) and uses less memory than the DOMParser. Unfortunately, the SAXParser is poorly designed. Rather than being called by the parsing application, the SAXParser uses a message handler with "call backs".

Our Android app development team prefer to use the XmlPullParser instead of SAXParser to create implementations of XML Pull Parser defined in XMPULL V1 API. The name of actual factory class will be determined based on several parameters. It works similar to JAXP but tailored to work in J2ME environments (no access to system properties or file system) so name of parser class factory to use and its class used for loading (no class loader - on J2ME no access to context class loaders) must be passed explicitly.

Delivery job list pulled to Android app from Web app cloud data whilst passing device longitude and latitude data using LocationManager

Using the phone or tablet's GPS, our Android application development team use the LocationManager class which provides access to the system location services. These services allow applications to obtain periodic updates of the device's geographical location, or to fire an application-specified Intent when the device enters the proximity of a given geographical location.

The LocationListener represents a listener that receives events associated with a particular LocationProvider. Applications implement this interface and register it with a LocationProvider to obtain regular position updates.

If the driver has not moved for a while we use a TimerTask to update the delivery job list from the web app cload data. Timers are used to schedule jobs for execution in a background process. A single thread is used for the scheduling and this thread has the option of being a daemon thread. By calling cancel you can terminate a Timer and its associated thread. All tasks which are scheduled to run after this point are cancelled. Tasks are executed sequentially but are subject to the delays from other tasks run methods.

Job details pulled to Android app from web cloud data using an XmlPullParser

Here our Android app development team use an XmlPullParser to get the full delivery job details and dsplay them on screen.

If the job has not been marked as on route the driver can simply click a button to update the web app cloud data as to the status of the job. This is done using an HTTP Post.

HTTP Post requests are essential to any Android application that utilizes the Internet. We utilse an InputStreamReader to read the response from the web app.

An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset. The charset that it uses may be specified by name or may be given explicitly, or the platform's default charset may be accepted.

The Android app marks the job as delivered and captures the recipient's signature using android.graphics.Canvas and updates the web app database using HTTP Post.

The customer uses a stylus (or their finger) to draw their signature using the android.graphics.Canvas class "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect, Path, text, Bitmap), and a paint (to describe the colors and styles for the drawing).

We use a FileOutputStream to save as an image and then a FileInputStream to convert the image data into a byte array. We convert the byte array into a Base64 string and post that to the web server. There we create the image and save to the web server as proof of delivery.

A FileOutputStream is a specialised OutputStream that writes to a file in the file system. All write requests made by calling methods in this class are directly forwarded to the equivalent function of the underlying operating system. Since this may induce some performance penalty, in particular if many small write requests are made, a FileOutputStream is often wrapped by a BufferedOutputStream.

Base64 encoding schemes are commonly used when there is a need to encode binary data that needs be stored and transferred over media that are designed to deal with textual data. This is to ensure that the data remains intact without modification during transport. Base64 is used commonly in a number of applications including email via MIME, and storing complex data in XML.



So whatever your Android application development requirements, contact us today.


© 2011 New Media Aid Ltd. All rights reserved.

Portions of this page are reproduced from work created and shared by Google and used according to terms described in the Creative Commons 2.5 Attribution License. Android is a trademark of Google Inc.