MobileSession1x - Unitec

eyelashesnectarineSoftware and s/w Development

Nov 3, 2013 (3 years and 5 months ago)

53 views

Mobile

Software Development

ISCG 7424

Department of Computing

UNITEC

Introduction



Content

2


Course Orientation


Course Schedule


Mobile Computing


Readings


Unit Staff

3


Dr Dmitry
Shuvaev


dshuvaev@unitec.ac.nz


Room 183
-
3049


Consultation time 10:00 AM on Tuesday



E
-
mail to make an appointment


Pre
-
requisite Knowledge

4


You need to have taken all of the Pre
-
requisite
programming subjects


Be familiar with C# or Java


We will cover the basics quickly, and give you
pointers to various reference material if you
need to catch up

Qualities of a Good Programmer

5


Ability to quickly learn new things


A curious and inquisitive mind


A good mental model of how computers work


A firm grasp of
boolean

algebra


Infinite patience: bugs can


be really difficult to fix


Marking Schedule

6


Assignment 1


30%


Simple Mobile Application


Individual assessment


Assignment 2


30%


System implementation


Individual assessment


Assignment 3


40 %


System design, implementation, test, and presentation


Group work

How this unit will be run

7


Each class will be run as a Workshop


I will demonstrate / provide examples of various technologies


Provide links to online / print resources


Come and ask questions format


Assignments will be designed to showcase student skills to
potential employers


All of the course content will be available on
Moodle


Theory will be demonstrated using practical examples where
possible



Study Strategy

8


Self study


lectures / practicals summarize content


Critical study


Weekly exercises


7

weeks


Come and ask me questions any time


Online resources posted weekly


Class time is the best time to come and ask questions

Resources

9


Programming Android,
Zigurd

Mednieks
, O’Reilly


Google Android site


+Lots of online resources





Mobile Computing

10


Screen Size


Computer Architecture


Network Connections


Input / Output

Screen Sizes

11


Small variable in size


Some devices have limited

hardware acceleration




Computer Architecture

12


Processors


Most seem to be ARM based, clock speed is mostly on the low
end, but highly variable.


Some processors feature built in
GPUs

and multiple cores (see
Nvidia

Tegra
)


Memory


Limited: mainly 256 MB


1024 MB


Storage


20+ GB is common



Network Connections

13


Network connections


Low bandwidth


High latency (poor
RTTs

/ pings)


Poor connectivity


Dependent on how busy the network is


Devices generally support 3G/4G,
Wi
-
Fi
, GSM etc. and
switch between different networks often


Need to make sure applications can tolerate transient
network / internet connectivity and dropouts

Input / Output

14


Keyboard still exists


But might be a virtual keyboard


Might have a small hardware keyboard


Upside: writing a long novel is going to be hard


Mouse


Most devices are touch screen, which is similar to a mouse


Lots of devices have extra navigation buttons like a home screen
button or a back button


Input / Output

15


Sound


Speech recognition: see
Siri

on
iPhone


GPS


Typically interfaces to a
MAPs

API


Vibrate


Accelerometer


Cameras


Compass

Mobile Market

16


Applications are a lot cheaper or free


A lot easier to distribute and easier to develop your own
application


Developing a successful desktop application is probably going to
be difficult unless you work for Microsoft or Adobe


Any one can create a mobile phone application, upload their app
to an online store and start making money


Mobile Market

17


Lots of apps supported by advertisement ala shareware


All the behind the scenes infrastructure, financial payments,
statistics, marketing etc. is taken care of


Developers typically get ~70% of the revenue after the app
store takes their cut


Apps are rated by their users


Users leave a rating and comments


Make sure your application is good!


Android Architecture

18


Based on a small optimised Linux kernel compiled against
Google’s Bionic
libc

library


Optimised for low clock speeds and small memory footprints


Bionic is non
-
standard so applications written for Linux cannot be
ported to Android directly


Bionic supports all the standard c
-
functions like
printf
,
scanf

etc. But
omits some of the more obscure C library functions and the STL.


The Bionic library is one of the Native interfaces to the Android
architecture


Android Kernel = Linux Kernel + extra power management
functionality + other stuff

Android Architecture

19


Android Architecture

20


The Linux kernel includes drivers for hardware, networking, file
system access and inter
-
process
-
communication


Most Android
userland

applications run in the
Dalkvik

VM


The
Dalvik

VM runs
dex

code programs which are Java language
programs compiled to .
dex

files


Java is used as a language for application programming, but it is
converted into a non
-
java byte code for runtime interpretation by
a custom interpreter (
Dalvik
).


Each app runs in its own secure
DalvikVM

instance


Libraries shared across JVM instances

Java Language

21


The Android
Java libraries replicate much of the basic Java
APIS
ie
.


java.*;


However, no Swing, RMI, etc. libraries


android.*
-

Android
-
specific libraries


UI elements


SQLite

data storage


Media support (audio/video)


Access to camera, GPS, accelerometer

Final Note

22


This subject does not specifically teach you Android
development


If you are confident enough to use another architecture (
iOS
,
Windows Mobile etc.) to develop your software then you can
do that


You just need to be able to demonstrate that all the code is
yours, and you need to be able to answer some pretty tough
technical questions about your code

Readings

23


http://en.wikipedia.org/wiki/Comparison_of_Android_de
vices