Thunderhead.com is a leading provider of enterprise solutions for customer experience management. With its cloud-based ONE platform, Thunderhead.com provides powerful SaaS solutions for customer engagement across all touchpoints.

Mar
2014 -
May
2014

Mobile Solutions Architect / Monitise Create

Jan
2012 -
Mar
2014

Technical Architect / Developer Team Lead / Chelsea Apps Factory

o Led project teams to successfully deliver native Android, iOS, Blackberry and Windows 8 mobile products on time and within budget.

o Worked together with Product Owners, Agile Coaches, QA Engineers and other teams to develop and shape up new product ideas.

May
2006 -
Jan
2012

Experienced Customer Consultant (part-time) / Legal & General

I was part of a team that administered investment products. The team dealt mainly with update, information and performance requests. My role as an Experienced Customer Consultant was to deal directly with customers, financial advisors and business partners via telephone, letter, email and face to face. As an Experienced Consultant, my role was also to deputise for my manager, attend meetings, hold briefings and provide other team members with training and support. I also reviewed and analysed processes and MI data within the team to ensure efficiency and deliver improvements.

text1.setText( Html.fromHtml( "We got rid of over 60 different privacy policies across Google and replaced them with one that’s a lot shorter and easier to read. " + "<a href=\"http://www.google.co.uk/intl/en/policies\"> Find out more on our website.</a> ")); text1.setMovementMethod(LinkMovementMethod.getInstance());

Simple API for XML (SAX) is one of the two most common and simple ways to retrieve information from an XML document. Unlike, DOM parsing, data parsed with SAX is not entirely stored in memory, making it the 'memory efficient' parser.

If we take for example the BBC Latest UK News feed - http://feeds.bbci.co.uk/news/uk/rss.xml - and open up the XML's document source, we can take a closer look at the way in which the document is structured. This is important as it will give us an idea of how to structure our application from a programming point of view.

Using a SAX parser we will seek to produce an application which will display the latest news in a ListView.

If we analyse the XML source document - view-source:http://feeds.bbci.co.uk/news/uk/rss.xml - we notice that there is a clear structure to it. Each news item has a title, description, link, guide etc. Understanding the structure of the XML source will help us develop a good object orientated back-end.

Having created the interface, ensure that you allow the application permissions to connect to the internet. This can be done by adding the following line of code, above the tag in the Android Manifest.

<uses-permission android:name="android.permission.INTERNET" />

Implementation

The application has been split into 4 classes as follows.

XMLItem - Holds the news item mutator and accessor methods will be defined

package com.android.bbcxmlfeed;

/** * This class handles the mutator and accessors methods of a news item. * For each news item the title and the description is assigned as a string value. * * @author Andrei * */ public class XMLItem{ // class fields private String title = null; private String description = null;

/** * Empty constructor. */ public XMLItem(){

}

/** * Assign the news title to the title field. * @param value Set item title. */ public void setTitle(String value){ title = value; }

/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // processThread(); //Get the UI controls - in this case we only have the refresh button. initControls(); } /** * This method is used to handle all the UI controls. In this case it only deals with the refresh button. */ public void initControls(){

refreshFeed = (Button) findViewById(R.id.refresh);

refreshFeed.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v){ processThread(); } }); } /** * Tracks to see if onResume has been called before, * to avoid for both onResume and onCreate to be called. */ protected void onResume() { super.onResume();

public void run(){ //Retrieve the news items from the BBC link. getNews(); //Sends message to the handler so it updates the UI. handler.sendMessage(Message.obtain(handler, THREAD_FINISHED));; }

};

t.start();

} /** * The handler mainly deals with the UI of the application. * It handles the loading of the ListView with all the items in it, * and also it handles the dismissal of the progress dialog after the UI has been loaded. */ private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg);

Text-to-Speech (TTS) was made available on the Android platform starting with Android 1.6. The TTS library, which comes free with the Android OS, enables the device to speak text of different languages. This post will look to outline the steps one has to take in order to create a simple speech synthesiser in Android.

Application layout

The first step is to implement the application layout. We are going to keep it simple, therefore we will only use 4 layout features:

A text box where users can type what they want to say;

A speak button, which would enable user to "speak" what they have typed;

A clear option used for clearing typed text;

A seek bar, which will allow the user to control the volume of the synthesiser.

SQLite, is a small yet powerful database engine, which is also one of the most widely deployed SQL database engine in the world. SQLite comes packaged with the Android SDK and it helps easily store and manage data in your Android app.

In developing the application firstly we will have to think of the kind of data we want to hold on the database; in our case purely the login information - a username and a password. It is good practice to also use a unique id which could help at a later stage if you would want to link to tables where data held in a different table is specific to a user.

This database adapter is handling the queries and works mainly “like an API” which uses the SQLiteHelper built-in methods - add, remove and update items. In implementing this class you would have to take the following steps:

You will first have to start with defining the table name and columns - row id, username and password;

Implement a constructor which handles the relationship with the SQLHelper;

Define some database query methods e.g. in our case createUser, deleteUser, fetchUser etc. - basically the whole idea is to create methods which allow to create, open, close or update the table and table columns.

Each of the activities mentioned above serve as a class object which handles the interface behaviour.

Firstly we implement a Login class which handles the application login behaviour and will also work as application's main activity. Here we define the database, buttons, text boxes and other controls we use in our application.

Having written the code for the Login activity we move to implementing the Register class which handles the registration process of the application. The tools and methods we use for this activity are similar to those used in the Login class, the only noticeable difference would be that we now have to define a register method rather than a login method.

//Check if all fields have been completed. if (username.equals("") || password.equals("")){ Toast.makeText(getApplicationContext(), "Please ensure all fields have been completed.", Toast.LENGTH_SHORT).show(); return; }

A simple SQLite login application developed for Android. I'm looking to slowly start developing this into a more complex database which would link to an external database and would be able handle more user data.