Summary

A huge industry has grown up in the last few years delivering a wide range of apps for mobile devices, including application areas such as games, social networking, information, and productivity. Given the power of modern mobile devices coupled with their range of inputs (audio, camera, GPS, motion sensor, touchscreen) this creates an exceptionally interesting platform to develop applications for. Furthermore, these platforms come complete with their own marketplaces meaning that successful applications can achieve a large market share based largely on their merit.

The purpose of this module is to teach the main aspects of programming applications for such devices. Such a course could be taught at an abstract level, independent of the particular type of device in question, but the approach taken on this module is to explore one particular platform (Android), in a hands-on and in-depth manner. This is a popular platform with a range of excellent devices (including low cost ones) from a variety of manufacturers. The platform is well designed and well documented, and has the significant advantage of being Java based, meaning that students can get up to speed relatively quickly and concentrate on the interesting issues involved in developing a high quality app without having to learn a new language at the same time.

Learning Outcomes

On successful completion of the course students should be able to:

1. Demonstrate an understanding of the business models behind mobile and social applications and the issues involved in publishing an app for a mobile platform
2. Demonstrate an ability to use the main elements of the Android API
3. Implement mobile applications that connect with social networking sites
4. Utilise appropriate date persistence mechanisms
5. Design and implement a non-trivial Android app

Outline Syllabus

HelloAndroid: Android SDK, using an IDE, Application Structure, XML descriptors, Intents, Activities, Fragments, Tasks. Resources and context, components and lifecycles, packaging an Android app, porting apps to Android.

GUI Building: main elements of Android GUIs and interactions between the GUI and the application.

Graphics: writing interactive graphics applications with fast and smooth animation for applications such as games.

Handling and persisting data: SQLite, JSON, binary serialization, XML serialization.

Developing and exploring content providers: defining a public content provider API, implementing a content provider, content observation, declaring a content provider. Using and exploring an existing content provider. Integrating with social networking sites.

Rich applications: multimedia, handling audio and video. Location-based applications, GPS, integration with mapping services such as Google maps. Utilising sensor inputs: audio, camera, gesture, motion (tilt, accelerometer).

Google Play Store: deploying an app to the market, maintaining and updating an app, utilising feedback from users. Charging for apps. Using advertisement APIs. Internationalisation.