Alma Mater Studiorum University of Bologna CdS Laurea Magistrale (MSc) in Computer Science Engineering

Size: px
Start display at page:

Download "Alma Mater Studiorum University of Bologna CdS Laurea Magistrale (MSc) in Computer Science Engineering"

Transcription

1 Mobile Systems M Alma Mater Studiorum University of Bologna CdS Laurea Magistrale (MSc) in Computer Science Engineering Mobile Systems M course (8 ECTS) II Term Academic Year 2016/ Development and Runtime Platforms: Overview, J2ME, ios, and Android Paolo Bellavista paolo.bellavista@unibo.it Development/Runtime Platforms Mobile Systems M 1 Overview on Development/Runtime Platforms Many solutions have been proposed in the literature for development/runtime support of mobile systems middleware and applications. Why? Heterogeneity and fragmentation Market-driven choice Very heterogeneous and differentiated characteristics of available devices, platforms, and app requirements Plethora of solutions: Symbian, Palm, RIM, Maemo/Meego, ios, Android, Java Mobile Edition (J2ME),.NET Compact Framework (CF), Python, Lazarus, Brew, Flash Lite, Web runtime environment (microbrowser, HTML5, XHTML/CSS, JavaScript, Mobile Ajax, ), Let s try to put in order Which involved layers? Development/Runtime Platforms Mobile Systems M 2 1

2 Overview on Development/Runtime Platforms Operating system layer (e.g., is Android an operating system?) Runtime execution support layer (frameworks, containers, virtual machines, ) Development support layer - SDK (libraries, support components, containers, ) Again, layers with NO clear borders and NOT easily disjoint Mainly at OS layer: Symbian, Palm, RIM (BlackBerry), Maemo/Meego, ios, Linux?, Mainly at runtime execution support layer: Kernel-based Virtual Machine (KVM) or Dalvik Virtual Machine for Java, Common Language Runtime (CLR) for.net, Flash Lite, Web runtime environment Development/Runtime Platforms Mobile Systems M 3 Overview on Development/Runtime Platforms Mainly at development support layer: J2ME world,.net CF world, ActionScript for Flash Lite, Android world, Web runtime environment Two primary approach categories: Based on native applications Based on Web integration (in particular, see standardization efforts associated with HTML5) Let s start with the first approach, by choosing to have a rapid overview on 4 main families of solutions: J2ME,.NET CF, Flash Lite, and Android Development/Runtime Platforms Mobile Systems M 4 2

3 Overview on J2ME,.NET CF, Flash Lite, and Android Development/Runtime Platforms Mobile Systems M 5 J2ME in a Single Slide Java edition for resource-limited devices (smart phones, settop boxes) embedded/javame/index.html Bytecode is run over Kernel-based Virtual Machines (KVM), full OS independency Configuration concept: minimum feature set for VM + support libraries for a horizontal family of devices Connected Limited Device Configuration (CLDC) Profile concept: specialized libraries for the characteristics of a given type/class of devices Mobile Information Device Profile (MIDP), on top of CLDC Java apps over CLDC/MIDP are called MIDlet Do you already know what Java Community Process (JCP) and Java Specification Request (JSR) are? Development/Runtime Platforms Mobile Systems M 6 3

4 .NET CF in a Single Slide Subset of.net platform (around 30% of classes and features) for MS Windows Mobile devices Exploitation of Common Language Runtime (CLR); in principle, support for different OSs and different programming languages (actually only WinMobile, C#, and VB.NET) Idea of smooth transition from desktop app development to mobile app development, anyway pushed by a big vendor with a large community of developers Cost associated with intermediate code execution (Common Intermediate Language CIL) Relatively high cost in terms of memory footprint It has NO fragmentation problems, differently from J2ME Development/Runtime Platforms Mobile Systems M 7 Adobe Flash Lite in a Single Slide Proprietary technology that was popular for the development of multimedia contents and games Basically, support for vectorial graphics and animations; add-ons of application and presentation logics via ad-hoc programming language, i.e., ActionScript, which runs over a dedicated runtime support Smooth transition for expert Flash developers Incomplete solution for stand-alone full-fledged apps; NO ambition of general purpose solution Strng integration with low-level capabilities of devices, therefore with good efficiency Limited performance due to cost of vectorial graphics management See similar approach in the Java world with JavaFX Mobile Development/Runtime Platforms Mobile Systems M 8 4

5 Android in a Single Slide Launched by Google in 2007 as an Apache free-software platform, based on Linux Applications were developed in Java and compiled into Dalvik Executable format (DEX custom bytecode, e.g., more concise than usual.class) Quite large subset of J2SE facilities + rich library of support features (Android SDK) available for the community of developers Touch screen management, local sensors (accelerometers, gyroscopes, GPS, ), 3D graphics, advanced support for locationbased services, Also here possible? fragmentation issues due to different OS versions and to usage of different extensions of the support stack (given the potential openness of the adopted approach ) Development/Runtime Platforms Mobile Systems M 9 A Comparison with a Toy Application (Gavalas et al, IEEE Software, 2011) Development/Runtime Platforms Mobile Systems M 10 5

6 A First Comparison Development/Runtime Platforms Mobile Systems M 11 A First Comparison Development/Runtime Platforms Mobile Systems M 12 6

7 A First Comparison Development/Runtime Platforms Mobile Systems M 13 A First Comparison Development/Runtime Platforms Mobile Systems M 14 7

8 A First Comparison Development/Runtime Platforms Mobile Systems M 15 By delving into finer technical details: Java 2 Micro Edition In general terms, different editions of Java distributions Central role of the KVM + CLDC + MIDP stack Development/Runtime Platforms Mobile Systems M 16 8

9 Actually, more complex and articulated situation Important fragmentation issues JSR 248: Mobile Service Architecture (MSA) MSA, in two versions: full (17/14) or subset (8/9) Development/Runtime Platforms Mobile Systems M 17 J2ME: Configurations and Profiles A configuration defines a minimal platform for a horizontal group of devices Similar requirements on memory and computing power It defines Java language and virtual machine characteristics that have to be available on the targeted group of devices A Configuration is a specification that defines a minimum Java Platform functionality for a family of devices. It defines the minimum number of Java libraries, VM capabilities, Security specification, and a Generic Connection Framework Profile as a set of additional APIs that extend a configuration with capabilities that are useful for a specific group of devices A Profile is a collection of Java APIs that supplement a Configuration to provide capabilities for a specific device group or market type Development/Runtime Platforms Mobile Systems M 18 9

10 J2ME: Defined Configurations Connected Device Configuration (CDC) Typically for devices with higher resources if compared with lowend phone devices (no more valid nowadays) For example, set-top boxes, initially some kinds of PDAs, Connected, Limited Device Configuration (CLDC) For devices with very limited onboard resources Virtual machine for CLDC: Sun s Kilo Virtual Machine (KVM) Small memory footprint (60K) Overall minimum memory = 160K 16/32-bit processors Processor speed = at least in the range 8-32MHz Typical hardware of CLDC configuration For CLDC the only STRONG requirement is available memory size: At least non-volatile 128K for KVM and CLDC libraries At least volatile 32K for KVM runtime Development/Runtime Platforms Mobile Systems M 19 J2ME Profiles Any profile defines requirements for a family of devices associated with a specific vertical market It extends (with a upper overlay layer) a configuration. Always on top of one defined configuration It defines a standardized Java platform for a device family/class in order to achieve interoperability (effort towards the reduction of fragmentation issues) It includes class libraries with finer granularity if compared with the ones in a configuration Available profiles: Mobile Information Device Profile (MIDP) on top of CLDC. It includes additional features for GUIs, multimedia and gaming support, end-to-end security, extended support to network connectivity for mobile phones and entry-level PDAs Development/Runtime Platforms Mobile Systems M 20 10

11 Defined J2ME Profiles (continued ) Foundation Profile on top of CDC. Set of basic Java APIs for resource-limited devices; crucial and central factor is lack of standard GUI support Personal Profile on top of CDC. Together with Foundation Profile, Personal Profile implements the support for development of high-end PDA applications. Personal Profile includes complete set of AWT APIs, support for applets and Xlets Personal Basis Profile on top of CDC. It provides developers with an environment for the support of applications with network connectivity and an elementary degree of grahics support for content presentation Development/Runtime Platforms Mobile Systems M 21 MIDP: Hardware Requirements Memory (in addition to the one requested by CLDC) 128K non-volatile for MIDP components 8K non-volatile for persistent application data 32K volatile for KVM Display Screen with at least 96x54 pixels Display depth (or color depth or bit per pixel) at least equal to 1-bit Form factor of pixels (aspect ratio) = 1:1 Input peripherals (one or multiple) One-handed keypad Two-handed keypad Touch screen Networking Two-way Wireless Management of intermittent connectivity Limited bandwidth Development/Runtime Platforms Mobile Systems M 22 11

12 Original Equipment Manufacturer (OEM) MIDP Architecture MIDP Applications MIDP OEM-Specific Applications OEM-Specific Classes Device-Native Applications CLDC Native OS + System Software Mobile Information Device (MID) Development/Runtime Platforms Mobile Systems M 23 Class Libraries CLDC java.lang java.io java.util javax.microedition.io MIDP javax.microedition.lcdui javax.microedition.midlet javax.microedition.rms Development/Runtime Platforms Mobile Systems M 24 12

13 destroyapp destroyapp pauseapp startapp MIDP Application Model MIDP applications are called MIDlets MIDlet model is, under many perspectives, similar to the applet model in J2SE: component-container model and lifecycle management Also security support for applications that share resources/data (via MIDlet Suite) MIDlet lifecycle is described as state transitions, indicated as: Start resource acquisition and execution start Pause resource release and entrance in the wait state Destroy resource release, thread destruction, and ending of all activities Java Application Manager (JAM) for MIDlet lifecycle management Pause Active Destroyed Development/Runtime Platforms Mobile Systems M 25 Typical J2ME Support Stack KVM + CLDC + MIDP: applications are developed and run on top of this standardized stack, independently from OS and hw details CLDC = KVM + J2ME Core API in this example Mobile Information Device Profile KVM Your MIDlet J2ME core APIs DSP chip (e.g., ARM) Yellow pages, train timetable and ticketing, games, UI, HTTP networking,... Thread support, no floating point 32-bit RISC, 256K ROM, 256K Flash, 64K RAM Development/Runtime Platforms Mobile Systems M 26 13

14 Package CLDC/MIDP: some Detail about the Primary Packages javax.microedition.io javax.microedition.lcdui (user interface for lcd displays) javax.microedition.midlet javax.microedition.rms (persistent storage) Widget support for user GUIs Form, TextField, TextBox, DateField, List, Image, Gauge, Alert, Canvas, Graphics, Display Two different types of APIs (lower and higher abstraction layers) for GUI management High level for widget, scrolling,... Low level for graphics fine-grained GUI control Classes for event management Command and CommandListener Most relevant: is obvious for all, isn t it?, which is the underlying threading model? Development/Runtime Platforms Mobile Systems M 27 import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class HiMIDlet extends MIDlet { Usual Hello World as a MIDlet private TextBox textbox; public HiMIDlet() { textbox = new TextBox ("", "Hello World!", 20, 0); } public void startapp() { Display.getDisplay(this).setCurrent(textbox); } public void pauseapp() {} public void destroyapp(boolean unconditional) {} } Development/Runtime Platforms Mobile Systems M 28 14

15 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; MIDlet: Simple GUI Management public class HelloWorld extends MIDlet implements CommandListener { private Form mainscreen; private Form detailsscreen; private Display mydisplay; private Command exitcommand; private Command resetcommand; private Command detailscommand; public HelloWorld(){ } mydisplay = Display.getDisplay(this); mainscreen = new Form("Hello World"); detailscommand = new Command("Details",Command.SCREEN, 1); resetcommand = new Command("Reset",Command.SCREEN,1); exitcommand = new Command("Exit", Command.EXIT, 1); Development/Runtime Platforms Mobile Systems M 29 MIDlet: Simple GUI Management StringItem stritem = new StringItem("Hello", " World"); mainscreen.addcommand(detailscommand); mainscreen.addcommand(resetcommand); mainscreen.addcommand(exitcommand); mainscreen.append(stritem); mainscreen.setcommandlistener(this); public void startapp() { mydisplay.setcurrent(mainscreen); } protected void pauseapp() { } protected void destroyapp(boolean unconditional) { } Development/Runtime Platforms Mobile Systems M 30 15

16 MIDlet: Simple GUI Management public void commandaction(command c, Displayable s) { if (c == exitcommand) { destroyapp(false); notifydestroyed(); } else if (c == detailscommand) { detailsscreen = new Form("Details"); detailsscreen.addcommand(resetcommand); detailsscreen.setcommandlistener(this); mydisplay.setcurrent(detailsscreen); } else if (c == resetcommand) { mydisplay.setcurrent(mainscreen); } } } Development/Runtime Platforms Mobile Systems M 31 import java.io.*; import javax.microedition.io.*; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; MIDlet: a more Realistic Example public class PrimitiveMIDlet extends MIDlet implements CommandListener { private Display mdisplay; private Form mmainform; private Command mexitcommand, mconnectcommand; public void startapp() { mdisplay = Display.getDisplay(this); if (mmainform == null) { mmainform = new Form("PrimitiveMIDlet"); mmainform.append(new StringItem("", "Select Connect to make a network connection")); mexitcommand = new Command("Exit", Command.EXIT, 0); mconnectcommand = new Command("Connect", Command.SCREEN, 0); Development/Runtime Platforms Mobile Systems M 32 16

17 mmainform.addcommand(mexitcommand); mmainform.addcommand(mconnectcommand); mmainform.setcommandlistener(this); } mdisplay.setcurrent(mmainform); } MIDlet: a more Realistic Example public void commandaction(command c, Displayable s) { if (c == mexitcommand) notifydestroyed(); else if (c == mconnectcommand) connect(); } private void connect() { String url = getappproperty("networkthreading.url"); try { //interroga server e riceve risposta HttpConnection hc = (HttpConnection)Connector.open(url); InputStream in = hc.openinputstream(); int contentlength = (int)hc.getlength(); if (contentlength == -1) contentlength = 255; byte[] raw = new byte[contentlength]; int length = in.read(raw); Development/Runtime Platforms Mobile Systems M 33 } MIDlet: a more Realistic Example in.close(); hc.close(); // Show the response to the user. String s = new String(raw, 0, length); Alert a = new Alert("Response", s, null, null); a.settimeout(alert.forever); mdisplay.setcurrent(a, mmainform); } catch (IOException ioe) { Alert a = new Alert( "Exception", ioe.tostring(), null, null); a.settimeout(alert.forever); mdisplay.setcurrent(a, mmainform); } } public void pauseapp() {} public void destroyapp(boolean unconditional) {} Which possible issues in a real usage scenario? Development/Runtime Platforms Mobile Systems M 34 17

18 MIDlet: a more Realistic Example Which possible issues in a real usage scenario? NO GUI feedback during the time interval needed for connection establishment => «no-waiting» user that generates other useless commands Most relevant: threading model System threads are offered for MIDlet execution The only threads fully and exclusively owned by a MIDlet are the ones that MIDlet explicitly instantiates As in other technologies, e.g., for GUI management: a system thread works as event dispatcher; event managers have to rapidly return control in order not to block the MIDlet interface Therefore, the «right and sound» solution would be Development/Runtime Platforms Mobile Systems M 35 MIDlet: a more Realistic Example } public void commandaction(command c, Displayable s) { if (c == mexitcommand) notifydestroyed(); else if (c == mconnectcommand) { Thread t = new Thread() { public void run() { connect(); } }; t.start(); } Which possible issues in this case? Development/Runtime Platforms Mobile Systems M 36 18

19 SingleWorker class public synchronized void run() { while (mtrucking) { try { wait(); } catch (InterruptedException ie) {} if (mtrucking) connect(); } } public synchronized void go() { notify(); } MIDlet: a more Realistic Example SingleMIDlet class import java.io.*; public class SingleMIDlet extends MIDlet implements CommandListener { private Display mdisplay; private Form mmainform, mwaitform; private SingleWorker mworker; private Command mexitcommand, mconnectcommand, mcancelcommand; Development/Runtime Platforms Mobile Systems M 37 public void startapp() { mdisplay = Display.getDisplay(this); if (mmainform == null) { //preparazione form mworker = new SingleWorker(this, url); mworker.start(); } mdisplay.setcurrent(mmainform); } public void commandaction(command c, Displayable s) { if (c == mexitcommand) notifydestroyed(); else if (c == mconnectcommand) { mdisplay.setcurrent(mwaitform); mworker.go(); } else if (c == mcancelcommand) { mdisplay.setcurrent(mmainform); mworker.cancel(); } } public void pauseapp() {} public void destroyapp(boolean unconditional) { mworker.stop(); } MIDlet: a more Realistic Example Development/Runtime Platforms Mobile Systems M 38 19

20 J2ME: Types of Supported Web Connections HTTP/HTTPS Simple to use XML over HTTP/HTTPS Recently most widespread usage thanks to availability of several lightweight parsers Model: it creates object-based representation of a doc n memory, e.g., DOM Push: it parses a whole document, by distributing then events to the registered listeners, e.g., SAX Pull: it parses the document a part after the other (fragment), by returning a single element or tag In addition, very often, exploitation of features defined in additional JSRs: among the others, JSR82 (Bluetooth), JSR179 (Location), JSR135 (Mobile Media), JSR180 (SIP), and JSR172 (Web Services) Development/Runtime Platforms Mobile Systems M 39 Identifying the target devices Exercise on J2ME: How to Design a MIDlet Application Identifying the profiles that are supported by those devices Developing the application For instance, if as a MIDlet because CLDC/MIDP is supported, application suitable for cellphones and small pagers The development environment should be integrated with CLDC/MIDP: MIDP reference implementation Possibility of execution (for validation and testing purposes) over MIDP emulators For example, usage of J2ME Wireless Toolkit and ktoolbar to create a project and to design, implement, configure, and validate a MIDlet Probably you will appreciate more working with Eclipse ME Development/Runtime Platforms Mobile Systems M 40 20

21 For example, Nokia J2ME SDK Development/Runtime Platforms Mobile Systems M 41 Remember: MIDlet Upload Process Advertise App on Web Page User Selects App JAM Downloads App Web Page (Name, Version, Size, ) Descriptor File Network Transfer Java Application Manager Jar File Development/Runtime Platforms Mobile Systems M 42 21

22 Optional Exercise on J2ME: How to Design a MIDlet Application To design and develop a simple context-dependent MIDlet (e.g., able to play sounds or multimedia files that are differentiated depending on current user location), by exploiting features of JSR 135 (known as Mobile Media API, and of JSR 179 (known as Location API, different implementation more or less easily available, e.g., Exploiting, as preferred, development tools and IDEs such as JavaME Wireless Toolkit or Eclipse ME Note that the support for old-fashioned technologies such as Java ME is decreasing and decreasing Development/Runtime Platforms Mobile Systems M 43 A Superficial Overview of the Security Model JME CANNOT support the regular and complete security model of J2SE The implementation of the only J2SE protection domains is larger than the whole CLDC implementation (footprint) Therefore, how to implement a security solution for JME? Main guideline to split the problem into two parts: VM-level security (low-level) Obtained via the 2-phase verifier for class files that is included in CLDC Application-level security Sandbox model Development/Runtime Platforms Mobile Systems M 44 22

23 Security: Class File Verifier in 2 Phases Off-device verification Tool for pre-verification adds a stack map attribute to any method in the Java class file in order to facilitate in-device verification Pre-verification process (computationally heavyweight) is run on server/desktop side before that the class file is downloaded on mobile device stack map then helps to make more efficient the in-device verification Faster Less code in VM and minor memory consumption In-device verification Environment verification (e.g., memory requirements at runtime) Bytecode check Type check Proper termination, i.e., adequate and robust (e.g., no instructions for unconditional jump) Development/Runtime Platforms Mobile Systems M 45 Security: Class File Verifier in 2 Phases Stack map attribute grows the size of classfile of around 5% Development/Runtime Platforms Mobile Systems M 46 23

24 Application-level Security: Sandbox Model Applications (MIDlets, but not only them) have to execute in a close environment from where they can access only the APIs defined by configuration, profile, and licensed classes that are supported by the used device Do you remember the sandbox execution model for applets? More specifically, MIDlet sandbox model specifies: Class files have to pass an adequate verification step (to guarantee they are valid) Only the APIs defined by CLDC, profile, and licensed extension classes have to be available Application download occurs at so-called native layer (native code level), mandatorily via the Java Application Manager (JAM) Forbidden to override the standard class loading mechanism Forbidden the access to the set of native functions that the VM can instead use Development/Runtime Platforms Mobile Systems M 47 Android: Architecture Classical hierarchical architecture, structured into layers (growing complexity from bottom to top) Layers: Linux kernel Libraries (native Linux) + Android runtime (Dalvik VM + core libraries) Application Framework Applications Development/Runtime Platforms Mobile Systems M 48 24

25 Android: Architecture Kernel Layer Based on traditional Linux v3.x kernel and evolutions It introduces Hardware Abstraction Layer (HAL) Libraries in native language (C/C++) Android Runtime Execution environment for applications, written in Java Based on Dalvik VM Application Framework It provides applications with advanced services, encapsulated in Java objects, Application Core Apps: provided by the «initial» onboard system Developers written apps Development/Runtime Platforms Mobile Systems M 49 Android: Elements about Version Evolution Ice Cream Sandwich (October 2011) Linux kernel 3.0.1; customizable launcher; "Contacts" app fully integrated with main social network applications; Android Beam (data exchange via NFC); Wi-Fi Direct, etc. etc. Development/Runtime Platforms Mobile Systems M 25

26 Android: Elements about Version Evolution Jelly Bean (July 2012) Linux kernel ; new features for picture/video sharing via NFC; advanced voice recognition; official end of the support of Adobe Flash, etc. etc. Kit Kat 4.4 (October 2013) Support for 3 new types of sensors (geomagnetic rotation vector, step detector and counter), added step counter feature; decreased battery consumption during audio playing; Android RunTime (ART) and new compiler, experimental in this version, that can be activated in Developers Options (not on all devices); optimized working on devices with limited RAM, Development/Runtime Platforms Mobile Systems M Android: Elements about Version Evolution Lollipop (November 2014) Introduction of Google Fit for physical activity; new Linux 3.10.x. kernel; removal of Dalvik runtime, that is officially replaced by ART; native 64 bit support; Bluetooth 4.1; improvement of graphical performance thanks to OpenGL ES 3.1 support; improvement of camera support thanks to dedicated APIs; added multi-user features on smartphones; Marshmallow 6.0 (October 2015) Doze mode, with CPU speed reduction when display is switched off; native support to fingerprint readers; Direct Share for sharing among apps; request of post-install/run-time permissions; USB Type-C support; support to External storage to make it uniform to Internal Storage; MIDI support for music instruments; experimental multi-window feature Development/Runtime Platforms Mobile Systems M 26

27 Android: Elements about Version Evolution Nougat «N» (August 2016) Ability to display multiple apps on-screen at once in a split-screen view; support for inline replies to notifications; OpenJDK-based Java environment; support for the Vulkan graphics rendering API; "seamless" system updates on supported devices; Development/Runtime Platforms Mobile Systems M Kernel Linux 3.x Hardware Abstraction Layer (HAL) Memory management Process management Network stack Standard Linux power management Android: OS Kernel Layer Kernel extensions Ashmem: shared memory manager; reference counting and automatic deallocation by the kernel IPC binder: low overhead thanks to the usage of Ashmem (rigid access discipline via memory block descriptors) Advanced power management: exploitation of different energy management policies via WakeLocks It is NOT a real complete Linux OS kernel. It lacks: Native window manager system Complete support to GNU C library Complete support to standard Linux utilities 54 Development/Runtime Platforms Mobile Systems M 54 27

28 Power Management and WakeLocks Manifest example of cross-layering Android apps (with permission to access Power Manager) can achieve control of energy consumption by enforcing the desired policy: Always active CPU, also with switched-off display Prioritary CPU with display that is at least backlit Via WakeLocks: access locks to the features of Power Manager (different types of WakeLock). For protected void oncreate(bundle savedinstancestate) { PowerManager pm = (PowerManager) getsystemservice(context.power_service); wl = pm.newwakelock(powermanager.full_wake_lock, "DoNotDimScreen"); protected void onpause() { super.onpause(); wl.release(); } Development/Runtime Platforms Mobile Systems M 55 Native libraries for graphics and multimedia App Android: Native Libraries and Dalvik VM 3D Surface 2D Surface Media Player Service Media Server Media Recorder Service Surface Flinger Camer a Service Frame Buffer Audio Flinger Vorbis MIDI OpenCORE Camera Surface Manager + Media Framework Dalvik VM designed for mobile devices: registry-based (exploiting the ARM architecture). Instead, how is the traditional JVM organized? It interprets and runs dex files, obtained via transformation of class files (30% reduction of necessary instructions and improvement of runtime perf) optimized support to garbage collection Development/Runtime Platforms Mobile Systems M 56 28

29 Android: Application Framework Activity A single action that one user can accomplish via a window (it corresponds usually to a single screen) It is the fundamental Android component E.g., home activity Intent Maximum reusability of activity Request to perform an operation (e.g., choice of a phone number) Received by a component that has a compatibile Intent Filter Service Running in background (no interaction with user, differently from activity) Usable by 1+ components No dedicated process/thread in background Broadcast Receiver Responds to compatible Intents by executing the associated operations Typically, notify actions (calls, sms transmissions, ) Lifecycle is limited to the response Differently from activities and services, multiple receivers can be activated by a single intent Development/Runtime Platforms Mobile Systems M 57 Package and Activity Manager Manage the lifecycle of Activities and apps, included in Android Packages (APK). Each APK includes a descriptor (manifest), executable dex, and the associated «static» resources (xml, png, ), according to a predefined file structure Window Manager and View System Offer advanced graphics features that can be used directly in apps. View System is based on the View class, and consists of GUI components that interact with user and with event managers (no Java Swing, no AWT) Resource Manager and Content Provider Resource manager for any resource (all files except for code) and shared access to local data (SQLite RDBMS and persistence through files) Telephony, Notification, and Location Manager Allow to access functionality for telephony, notification, and positioning Android: Application Framework Applications Development/Runtime Platforms Mobile Systems M 58 29

30 Bundle Core Applications Real and regular apps (same execution model as for apps developed by third parties and downloaded by users), pre-installed at default over an Android device Home application (and associated activity): manager app frm which it is possible to launch execution of other apps. Which threading model? Message management Client app for Contact book Map management Applications Web browser: WebKit browser engine (open-source); used also in Safari and Google Chrome Only browser engine (HTML parser + renderer + JavaScript engine) Android: Core Applications Development/Runtime Platforms Mobile Systems M 59 Activity is the component for user interaction It extends the Activity Java class In general, many activities are running concurrently: the active one (RUNNING) is only ONE. If visible but not active, it is PAUSED, otherwise STOPPED For lifecycle management, it is possible to redefine callback methods OnCreate, OnStart, OnResume, Activities use resources: an activity may be deallocated due to resource shortage KILLED state Android offers an info container called Bundle, where to save the state to be recovered at re-allocation Lifecycle Management of Android Activities Activity comes back in foreground INACTIVE (KILLED) Resource shortage OnCreate() OnStart() OnRestoreInstanceState(Bundle) OnResume() RUNNING a) New activity b) Back button OnSaveInstanceState(Bundle) OnPause() PAUSED Activity is no more visible OnStop() STOPPED OnDestroy() INACTIVE Activity comes back in foreground OnRestart() Activity comes back in foreground Development/Runtime Platforms Mobile Systems M 60 30

31 MyActivity it.mypackage process Contacts Dialer Dialer process App Dialer MyFirstProject TASK Contacts MyActivity top of the stack root activity Conversation Concept: Android Task One App may include several activities: Independent and disjoint Associated the one with the other Activities are different from forms They should be simple They should be usable and reusable there is the need to structure activities to compose a more complex conversation with user (as for Web pages) A task models a conversation It includes an activity stack, also of different apps: on top the only active activity in the task Activity start pushes it on top of the stack; its closing discards the activity from the stack It may be in foreground or in background Development/Runtime Platforms Mobile Systems M 61 Intent and Intent Filter Activation of a component is triggered by an Intent (usually to pass from an activity to the following one) explicit: component to activate is known at compile time; it needs the Class descriptor of the component implicit: component to activate is NOT known at compile time; it needs that the following data are specified action and category: they describe respectively action and type of the component to activate for execution url: it specifies data to be processed by the activated component mime type: it specifies the data type used Intent intent = new Intent(Intent.ACTION_VIEW); intent.setdata(uri.parse( )); Component is selected based on applicable Intent Filters (description of which intents an activity can handle) that are declared in the manifest, according to an algorithm of Intent Resolution Intent repository on Development/Runtime Platforms Mobile Systems M 62 31

32 Intent and Intent Filter <activity android:name="intentactivity"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category. LAUNCHER" /> <category android:name="it.mypackage.intent. category.cat_name" /> <data android:mimetype="vnd.android.cursor.item/ vnd.mytype" /> </intent-filter> </activity> Example of manifest file protected void oncreate(bundle savedinstancestate) {... Intent intent = new Intent(); intent.setaction(my_action); intent.addcategory(intent.category_alternative); intent.addcategory(intent.category_browsable); Uri uri = Uri.parse("content://it.mypackage/items/"); intent.setdata(uri); intent.settype("vnd.android.cursor.item/vnd.mytype"); startactivity(intent);... } Development/Runtime Platforms Mobile Systems M 63 Threading Model in Android Each application has a single thread (at default) => simple single-threaded model (1 app: 1 thread) 1 app: 1 system thread assigned to the app: multiple activities Possibility to save the state in info bundle (not very different from execution model of stateful session beans in J2EE) Each thread has a Looper for message queue management Development/Runtime Platforms Mobile Systems M 64 32

33 Threading Model in Android Two options: 1) to launch different apps in a single Dalvik VM (single heavy process); 2) to have a single Dalvik VM (process) dedicated to each single app The default is the second option: any app is put in execution into a separated VM (separated isolated process), also when triggered by startactivity(intent) or startservice(intent) How is it possible? Which potential issues? For instance, how to perform response return to the «invoking» activity? startactivityforresult(intent, int) second parameter identifies the call callback function onactivityresult(int, int, Intent) If it is crucial to optimize system resource consumption, there is the need to impose that different apps share the same userid Android.sharedUserId= PaoloBellavista in manifest file Which potential security issues? Development/Runtime Platforms Mobile Systems M 65 Android Scheduling Process level: 1. Foreground 2. Visible 3. Service 4. Background App A App B Foreground Thread Group App A Background Thread Group App B > 90% Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); < 10% Development/Runtime Platforms Mobile Systems M 66 33

34 Asynchronous Techniques Thread Executor HandlerThread AsyncTask Service (already partially discussed) IntentService AsyncQueryHandler Loader Development/Runtime Platforms Mobile Systems M 67 Android Threads Act much like usual Java Threads Cannot work directly on external User Interface objects (throw the Exception CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views ) Cannot be stopped by executing destroy() nor stop(). Use instead interrupt() or join() (by case) As usual, two main ways of having a Thread that executes application code: Providing a new class that extends Thread and overriding its run() method Providing a new Thread instance with a Runnable object during its creation. In both cases, start() method must be explicitly called to actually execute the new Thread Development/Runtime Platforms Mobile Systems M 68 34

35 Android Handler Associated with a single thread and that thread's message queue Bound to the thread/message queue of the thread that has created it It delivers messages and runnables to that message queue It executes them as they come out of the message queue Two main types of usage for a Handler: To schedule messages and runnables to be executed as some point in the future To add an action into a queue performed on a different thread Development/Runtime Platforms Mobile Systems M 69 Handler Example Development/Runtime Platforms Mobile Systems M 70 35

36 Android AsyncTask Created on the UI thread and can be executed only once Run on a background thread and result is published on the UI thread The three parameters of an AsyncTask are: Params, the type of the parameters sent to the async task upon execution Progress, the type of the progress units published during the background computation Result, the type of the result of the background computation Go through 4 steps: onpreexecute(): invoked on the UI thread immediately after the async task is started doinbackground(param...): invoked on the background thread immediately after onpreexecute() finishes executing onprogressupdate(progress...): invoked on the UI thread after a call to publishprogress(progress...) onpostexecute(result): invoked on the UI thread after background computation finishes Development/Runtime Platforms Mobile Systems M 71 AsyncTask Example Development/Runtime Platforms Mobile Systems M 72 36

37 To Summarize: Pay Attention Violate the single thread model: the Android UI toolkit is not thread-safe and must always be manipulated on the UI thread In this piece of code, ImageView is manipulated on a worker thread, which can cause really weird problems. Tracking down and fixing such bugs can be difficult and time-consuming Development/Runtime Platforms Mobile Systems M 73 To Summarize: Pay Attention Classes and methods also tend to make the code more complicated and more difficult to read It becomes even worse when implementing complex operations that require frequent UI updates Development/Runtime Platforms Mobile Systems M 74 37

38 To Summarize: Pay Attention Development/Runtime Platforms Mobile Systems M 75 Example: Developing a Launcher for Replacing the usual Home As already mentioned, home allows starting any app, serving as a launcher Android as an open platform All Apps are created equal it is possible to customize the system with our own home A custom home can be created by: 1. Defining a new Activity 2. Declaring the launcher s action MAIN in the Intent Filter 3. Searching installed apps via Package Manager 4. Selecting the only apps that have an Intent Filter related to launch 5. Creating a selection View (Button) for each suitable app 6. Defining the click event: Intent notification 7. Association of the event to the View Development/Runtime Platforms Mobile Systems M 76 38

39 Example: Developing a Launcher for Replacing the usual Home // Step 1: definition of a new activity public class CategoryTestActivity extends Activity { public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); LinearLayout activitieslist; activitieslist = (LinearLayout) findviewbyid(r.id.activitieslist); // Steps 3 and 4: app search and selection based on IntentFilter Intent intent = new Intent(); intent.setaction(intent.action_main); intent.addcategory(intent.category_launcher); PackageManager pkgmanager = getpackagemanager(); List<ResolveInfo> activities = pkgmanager.queryintentactivities(intent, 0); Development/Runtime Platforms Mobile Systems M 77 Example: Developing a Launcher for Replacing the usual Home for (ResolveInfo resolveinfo : activities) { final ResolveInfo ri = resolveinfo; Button button = new Button(this); //Step 5: one button per app button.settext(resolveinfo.loadlabel(pkgmanager)); // Step 7: event-view association button.setonclicklistener(new OnClickListener() { public void onclick(view v) { Intent intent = new Intent(); //Step 6: intent launch ComponentName cn = new ComponentName(ri. activityinfo.packagename, ri.activityinfo.name); intent.setcomponent(cn); intent.addflags(intent.flag_activity_new_task); intent.addflags(intent.flag_activity_multiple_task); startactivity(intent);}}); activitieslist.addview(button);}}} Development/Runtime Platforms Mobile Systems M 78 39

40 Example: Developing a Launcher for Replacing the usual Home <manifest xmlns:android=... package="it.mypackage"> <application android:label="@string/app_name"> <activity android:name=".homeactivity" android:label="@string/app_name"> <intent-filter> <! Step 2 --> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> <category android:name="android.intent.category. HOME"> </category> <category android:name="android.intent.category. DEFAULT"></category> </intent-filter> </activity> </application> </manifest> Development/Runtime Platforms Mobile Systems M 79 Typical guidelines for security in Linux Android Security in a Single Slide At default any Android app runs in a dedicated Dalvik VM and within its own separated process. Which PID/GID? Process and group identifiers are selected from an interval that is defined system-level: FIRST_APPLICATION_UID, LAST_APPLICATION_UID Process-level permissions are assigned and controlled depending on user ID & group ID assigned to processes. Typically what do you expect? Finer grain permissions are assigned (and revocable) even for a single operation via manifest file <manifest xmlns:android=" android package="com.google.android.app.myapp" > <uses-permission id="android.permission.receive_sms" /> </manifest> Development/Runtime Platforms Mobile Systems M 80 40

41 Exercise on Android To design and develop a simple context-dependent Android app (for example, able to play different audio/video files depending on current user location), by employing the APIs of the Media Framework library (native) and the APIs of the Location Manager (Java-based, application framework level) Suggestion to use, but free personal choice : Android Studio and SDK tools It could be the initial starting seed for a possible project activity As additional examples of Android usage and project activities, please see also Development/Runtime Platforms Mobile Systems M 81 Many and Many Available Sources for Additional Info Many good (not only good ) books on Android: E. Hellman, Android Programming: Pushing the Limits, Wiley, Nov Z. Mednieks, L. Dornin, Programming Android: Java Programming for the New Generation of Mobile Devices, O Reilly, Ott R. Meier, Professional Android 4 Application Dev., Wrox, 2012 F. Ableson, R. Sen, Android in Action, Manning, Feb Android SDK has good manuals and how-tos, e.g., description of available APIs, presentation of examples of apps, Further info and documents are available at the Android Studio Web site: Development/Runtime Platforms Mobile Systems M 82 41

42 ios (or iphoneos): a Very Rapid Overview Approach is very similar to Android from many perspectives and in terms of realization of a wide support ecosystem, i.e., development model + support API: ios exploits a variantof the XNU kernel, which is at the basis of MacOSX Chain of development tools is similarly based on Xcode SDK includes APIs at different layers to support: Events and multi-touch controls Accelerometer Localization (i18n) Camera and media in general (audio mixing&recording, video playback, several image file formats, OpenGL ES ) Networking Embedded SQLite database Core Location (GPS, Skyhook WiFi, ) Thread Power management File system Security SDK also includes iphone Simulator, i.e., a tool to emulate iphone look&feel over developer desktop. It is not a real emulator: it runs code that is actually generated for another target (x86) SDK requires a Mac OS X Leopard host (or more recent) Development/Runtime Platforms Mobile Systems M 83 ios (or iphoneos): Rules Rules Rules Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the ios WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple s Documented APIs and built-in interpreter(s) Even the SDK can be downloaded for free but calls for registration to iphone Developer Program if developers are willing to release some software (paying a fee + subject to Apple s approval) Apple has not announced any plan for supporting Java over iphones; initially some partial support instead for J2ME over ios Development/Runtime Platforms Mobile Systems M 84 42

43 Multitasking ios Multitasking Earlier than iosv4, multitasking was limited to a subset of apps defined by producers. Apple was worried about excessive battery consumption due to the concurrent execution of third-party apps Starting from iosv4, multitasking is supported through 7 APIs for background execution: Audio in background - Voice over IP Location service in background - Push notifications Local notifications - Task termination Fast switching of apps Is ios an open system? ios Android Open Source NO YES Write anything you want NO YES Device Homogeneity YES NO Development/Runtime Platforms Mobile Systems M 85 To start: Download the ios SDK, which includes: Xcode iphone emulation tools Monitoring tools Interface builder How to Develop in ios: First Steps Please note that apps are subject to Apple s approval (included in the signed agreement for SDK download), with the idea of performing reliability tests and other investigations Apps may be rejected if evaluated as of "limited utility" Development/Runtime Platforms Mobile Systems M 86 43

44 Alternative Possibilities for ios Development Primary option: exploitation of Xcode and Objective C, exactly same way as in traditional MacOSX Alternatively: Web applications that employ AJAX/Javascript technologies; possibility to access via Safari Usage of Java J2ME and AlcheMo for iphone Xmlvm Java installation over unlocked and jailbroken iphone By the way, do you know what the terms unlocking and jailbreaking mean? Development/Runtime Platforms Mobile Systems M 87 Unlocking & Jailbreaking To be precise, unlocking and jailbreaking identify two different procedures Unlocking is the process through which a device is made compatible with telco networks for which it was not specifically licensed (overcoming the locking with a given dedicated telco operator) Jailbreaking is the process through which a developer exits her own jail in UNIX-like OS and/or breaks the imposed system of Digital Right Management (DRM). It is a specific form of growth of execution privilege In ios, it allows a user to execute arbitrary code and apps, by bypassing the regular mechanism of distribution of Apple code (based on itunes App Store and itunes Application) To enjoy yourself with experimentation, tools such as: PwnageTool, QuickPwn, Yellowsn0w Pusher - Linux on iphone - ZIPhone - Development/Runtime Platforms Mobile Systems M 88 44

45 ios: AJAX & JavaScript AJAX ( maybe Asynchronous JavaScript and XML): set of correlated techniques for the development of highly interactive Web applications (rich Internet applications) Possibility of asynchronous data retrieval in background, with no interference on behavior and visualization of current page To some extent and from some perspectives, applets as AJAX precursors With Safari browser, possibility of highly interactive and native looking Web applications Question: which pros in using Web applications in place of native apps? AJAX plugin per Eclipse (available also as a standalone version): Development/Runtime Platforms Mobile Systems M 89 Also proposals that succeeed in terms of standardization. For example: Canvas element as third-party JavaScript extension that allows dynamic rendering of bitmap images Introduced by Apple for usage within Webkit component of MacOSX (forming the basis of Safari browser), then adopted by Mozilla and Firefox Standardized by WHATWG (see last slide) for the new specification proposals towards HTML5 Canvas is a drawable area defined in the HTML code, with attributes for height and size. JavaScript code can use a wide set of drawing functions, by allowing to use dynamically generated graphics (drawings, animations, image compositions/elaborations, ) In competition with Macromedia Flash/FlashLite. For instance, see these two examples: ios: AJAX & JavaScript Development/Runtime Platforms Mobile Systems M 90 45

Alma Mater Studiorum University of Bologna CdS Laurea Magistrale (MSc) in Computer Science Engineering

Alma Mater Studiorum University of Bologna CdS Laurea Magistrale (MSc) in Computer Science Engineering Mobile Systems M Alma Mater Studiorum University of Bologna CdS Laurea Magistrale (MSc) in Computer Science Engineering Mobile Systems M course (8 ECTS) II Term Academic Year 2016/2017 04 Development and

More information

Mobile Application Development. Introduction. Dr. Christelle Scharff Pace University, USA

Mobile Application Development. Introduction. Dr. Christelle Scharff Pace University, USA Mobile Application Development Introduction Dr. Christelle Scharff cscharff@pace.edu Pace University, USA Objectives Getting an overview of the mobile phone market, its possibilities and weaknesses Providing

More information

Who am I? Wireless Online Game Development for Mobile Device. What games can you make after this course? Are you take the right course?

Who am I? Wireless Online Game Development for Mobile Device. What games can you make after this course? Are you take the right course? Who am I? Wireless Online Game Development for Mobile Device Lo Chi Wing, Peter Lesson 1 Email: Peter@Peter-Lo.com I123-1-A@Peter Lo 2007 1 I123-1-A@Peter Lo 2007 2 Are you take the right course? This

More information

Wireless Java Technology

Wireless Java Technology Wireless Java Technology Pao-Ann Hsiung National Chung Cheng University Ref: http://developers.sun.com/techtopics/mobility/learning/tutorial/ 1 Contents Overview of Java 2 Platform Overview of J2ME Scope

More information

Android App Development. Muhammad Sharjeel COMSATS Institute of Information Technology, Lahore

Android App Development. Muhammad Sharjeel COMSATS Institute of Information Technology, Lahore Android App Development Muhammad Sharjeel COMSATS Institute of Information Technology, Lahore Mobile devices (e.g., smartphone, tablet PCs, etc.) are increasingly becoming an essential part of human life

More information

DAY 3 J2ME March 2007 Aalborg University, Mobile Device Group Mobile Phone Programming

DAY 3 J2ME March 2007 Aalborg University, Mobile Device Group Mobile Phone Programming DAY 3 J2ME Mobile Phone Programming Module 2 Micro (J2ME) Overview Introduction J2ME architecture Introduction 1 J2ME Key Factors Portability: Write once run anywhere Security: Code runs within the confines

More information

Mobile Information Device Profile (MIDP) Alessandro Cogliati. Helsinki University of Technology Telecommunications Software and Multimedia Laboratory

Mobile Information Device Profile (MIDP) Alessandro Cogliati. Helsinki University of Technology Telecommunications Software and Multimedia Laboratory Multimedia T-111.5350 Mobile Information Device Profile (MIDP) Alessandro Cogliati Helsinki University of Technology Telecommunications Software and Multimedia Laboratory 1 Outline Java Overview (Editions/Configurations/Profiles)

More information

Introduction to Android

Introduction to Android Introduction to Android http://myphonedeals.co.uk/blog/33-the-smartphone-os-complete-comparison-chart www.techradar.com/news/phone-and-communications/mobile-phones/ios7-vs-android-jelly-bean-vs-windows-phone-8-vs-bb10-1159893

More information

Lecture 1 Introduction to Android. App Development for Mobile Devices. App Development for Mobile Devices. Announcement.

Lecture 1 Introduction to Android. App Development for Mobile Devices. App Development for Mobile Devices. Announcement. CSCE 315: Android Lectures (1/2) Dr. Jaerock Kwon App Development for Mobile Devices Jaerock Kwon, Ph.D. Assistant Professor in Computer Engineering App Development for Mobile Devices Jaerock Kwon, Ph.D.

More information

DAY 3 J2ME Aalborg University, Mobile Device Group. Mobile. Mobile Phone Programming

DAY 3 J2ME Aalborg University, Mobile Device Group. Mobile. Mobile Phone Programming DAY 3 J2ME Mobile Phone Programming Java 2 Micro Edition (J2ME) Overview Introduction J2ME architecture MIDlets Application development Introduction J2ME Key Factors Portability: Write once run anywhere

More information

Android. Lesson 1. Introduction. Android Developer Fundamentals. Android Developer Fundamentals. to Android 1

Android. Lesson 1. Introduction. Android Developer Fundamentals. Android Developer Fundamentals. to Android 1 Android Lesson 1 1 1 1.0 to Android 2 Contents Android is an ecosystem Android platform architecture Android Versions Challenges of Android app development App fundamentals 3 Android Ecosystem 4 What is

More information

Introduction To Android

Introduction To Android Introduction To Android Mobile Technologies Symbian OS ios BlackBerry OS Windows Android Introduction to Android Android is an operating system for mobile devices such as smart phones and tablet computers.

More information

Produced by. Mobile Application Development. David Drohan Department of Computing & Mathematics Waterford Institute of Technology

Produced by. Mobile Application Development. David Drohan Department of Computing & Mathematics Waterford Institute of Technology Mobile Application Development Produced by David Drohan (ddrohan@wit.ie) Department of Computing & Mathematics Waterford Institute of Technology http://www.wit.ie Android Anatomy Android Anatomy 2! Agenda

More information

Android Overview. Most of the material in this section comes from

Android Overview. Most of the material in this section comes from Android Overview Most of the material in this section comes from http://developer.android.com/guide/ Android Overview A software stack for mobile devices Developed and managed by Open Handset Alliance

More information

Introduction to Mobile Application and Development

Introduction to Mobile Application and Development Introduction to Mobile Application and Development Mobile Phones A mobile phone (also called mobile, cellular telephone, cell phone, or hand phone is an electronic device used to make 1. Calls across a

More information

Android Fundamentals - Part 1

Android Fundamentals - Part 1 Android Fundamentals - Part 1 Alexander Nelson September 1, 2017 University of Arkansas - Department of Computer Science and Computer Engineering Reminders Projects Project 1 due Wednesday, September 13th

More information

Real-Time Embedded Systems

Real-Time Embedded Systems Real-Time Embedded Systems DT8025, Fall 2016 http://goo.gl/azfc9l Lecture 8 Masoumeh Taromirad m.taromirad@hh.se Center for Research on Embedded Systems School of Information Technology 1 / 51 Smart phones

More information

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna Programming with Android: System Architecture Luca Bedogni Marco Di Felice Dipartimento di Scienze dell Informazione Università di Bologna Outline Android Architecture: An Overview Android Dalvik Java

More information

COSC 3P97 Mobile Computing

COSC 3P97 Mobile Computing COSC 3P97 Mobile Computing Mobile Computing 1.1 COSC 3P97 Prerequisites COSC 2P13, 3P32 Staff instructor: Me! teaching assistant: Steve Tkachuk Lectures (MCD205) Web COSC: http://www.cosc.brocku.ca/ COSC

More information

Android. (XKE Mars 2009) Erwan Alliaume.

Android. (XKE Mars 2009) Erwan Alliaume. Android (XKE Mars 2009) Erwan Alliaume ealliaume(*at*)xebia(*dot*)fr http://www.xebia.fr http://blog.xebia.fr History August 2005 Google acquires Android November 2007 Open Handset Alliance announcement

More information

Chapter 1 Hello, Android

Chapter 1 Hello, Android Chapter 1 Hello, Android OPEN HANDSET ALLIANCE OPEN HANDSET ALLIANCE OPEN HANDSET ALLIANCE A commitment to openness, a shared vision for the future, and concrete plans to make the vision a reality. To

More information

IJRDTM Kailash ISBN No Vol.17 Issue

IJRDTM Kailash ISBN No Vol.17 Issue ABSTRACT ANDROID OPERATING SYSTEM : A CASE STUDY by Pankaj Research Associate, GGSIP University Android is a software stack for mobile devices that includes an operating system, middleware and key applications.

More information

Another difference is that the kernel includes only the suspend to memory mechanism, and not the suspend to hard disk, which is used on PCs.

Another difference is that the kernel includes only the suspend to memory mechanism, and not the suspend to hard disk, which is used on PCs. 9. Android is an open-source operating system for mobile devices. Nowadays, it has more than 1.4 billion monthly active users (statistic from September 2015) and the largest share on the mobile device

More information

Android Software Development Kit (Part I)

Android Software Development Kit (Part I) Android Software Development Kit (Part I) Gustavo Alberto Rovelo Ruiz October 29th, 2010 Look & Touch Group 2 Presentation index What is Android? Android History Stats Why Andriod? Android Architecture

More information

Introduction to Android

Introduction to Android Introduction to Android Ambient intelligence Alberto Monge Roffarello Politecnico di Torino, 2017/2018 Some slides and figures are taken from the Mobile Application Development (MAD) course Disclaimer

More information

Chapter 13 Add Multimedia to Your MIDlets

Chapter 13 Add Multimedia to Your MIDlets Chapter 13 Add Multimedia to Your MIDlets The Mobile Media API (MMAPI), which extends the functions of Java 2 Platform, Micro Edition (J2ME), allows easy and simple access and control of basic audio and

More information

Android. Operating System and Architecture. Android. Screens. Main features

Android. Operating System and Architecture. Android. Screens. Main features Android Android Operating System and Architecture Operating System and development system from Google and Open Handset Alliance since 2008 At the lower level is based on the Linux kernel and in a higher

More information

Mobile Computing. Introduction to Android

Mobile Computing. Introduction to Android Mobile Computing Introduction to Android Mobile Computing 2011/2012 What is Android? Open-source software stack for mobile devices OS, middleware and key applications Based upon a modified version of the

More information

Why Android? Why Android? Android Overview. Why Mobile App Development? 20-Nov-18

Why Android? Why Android? Android Overview. Why Mobile App Development? 20-Nov-18 Why Android? Android Overview Dr. Siddharth Kaza Dr. Josh Dehlinger A lot of students have them 2010 survey by University of CO 1 : 22% of college students have Android phone (26% Blackberry, 40% iphone)

More information

Minne menet, Mobiili-Java?

Minne menet, Mobiili-Java? Minne menet, Mobiili-Java? Java Platform, Micro Edition Status and Future Directions Antero Taivalsaari Sun Microsystems, Inc. December 2005 Growth Continues (2005 vs. 2003) 1 Billion Installed Base as

More information

Mobile development initiation

Mobile development initiation Mobile development initiation Outline Mobile development: o Why? o How? o New issues Android ios 2 Mobile growth ¼ Internet access Sales of smartphones and tablets increase o + 70% tab Community 3 Why

More information

Embedded Systems Programming - PA8001

Embedded Systems Programming - PA8001 Embedded Systems Programming - PA8001 http://goo.gl/ydeczu Lecture 8 Mohammad Mousavi m.r.mousavi@hh.se Center for Research on Embedded Systems School of Information Science, Computer and Electrical Engineering

More information

PAPER ON ANDROID ESWAR COLLEGE OF ENGINEERING SUBMITTED BY:

PAPER ON ANDROID ESWAR COLLEGE OF ENGINEERING SUBMITTED BY: PAPER ON ANDROID ESWAR COLLEGE OF ENGINEERING SUBMITTED BY: K.VENU 10JE1A0555 Venu0555@gmail.com B.POTHURAJU 10JE1A0428 eswr10je1a0410@gmail.com ABSTRACT early prototypes, basic building blocks of an android

More information

Android Ecosystem and. Revised v4presenter. What s New

Android Ecosystem and. Revised v4presenter. What s New Android Ecosystem and Revised v4presenter What s New Why Mobile? 5B 4B 3B 2B 1B Landlines PCs TVs Bank users Mobiles 225M AOL 180M 135M 90M 45M 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Quarters

More information

Acknowledgments Introduction p. 1 The Wireless Internet Revolution p. 1 Why Java Technology for Wireless Devices? p. 2 A Bit of History p.

Acknowledgments Introduction p. 1 The Wireless Internet Revolution p. 1 Why Java Technology for Wireless Devices? p. 2 A Bit of History p. Figures p. xiii Foreword p. xv Preface p. xvii Acknowledgments p. xxi Introduction p. 1 The Wireless Internet Revolution p. 1 Why Java Technology for Wireless Devices? p. 2 A Bit of History p. 3 J2ME Standardization

More information

SHWETANK KUMAR GUPTA Only For Education Purpose

SHWETANK KUMAR GUPTA Only For Education Purpose Introduction Android: INTERVIEW QUESTION AND ANSWER Android is an operating system for mobile devices that includes middleware and key applications, and uses a modified version of the Linux kernel. It

More information

Android. Mobile operating system developed by Google A complete stack. Based on the Linux kernel Open source under the Apache 2 license

Android. Mobile operating system developed by Google A complete stack. Based on the Linux kernel Open source under the Apache 2 license Android Android Mobile operating system developed by Google A complete stack OS, framework A rich set of applications Email, calendar, browser, maps, text messaging, contacts, camera, dialer, music player,

More information

Android Overview. Francesco Mercaldo, PhD

Android Overview. Francesco Mercaldo, PhD Android Overview Francesco Mercaldo, PhD Post-Doctoral researcher Corso di Sicurezza delle Reti e dei Sistemi Software Università degli Studi del Sannio (fmercaldo@unisannio.it) Things are not always what

More information

Understand applications and their components. activity service broadcast receiver content provider intent AndroidManifest.xml

Understand applications and their components. activity service broadcast receiver content provider intent AndroidManifest.xml Understand applications and their components activity service broadcast receiver content provider intent AndroidManifest.xml Android Application Written in Java (it s possible to write native code) Good

More information

CM0256 Pervasive Computing

CM0256 Pervasive Computing CM0256 Pervasive Computing Lecture 17 Software Development Approaches Tom Goodale t.r.goodale@cs.cardiff.ac.uk Lecture Outline In this lecture we: J2ME applications Palm. Device Limitations Limited Power

More information

INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY

INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY INTERNATIONAL JOURNAL OF PURE AND APPLIED RESEARCH IN ENGINEERING AND TECHNOLOGY A PATH FOR HORIZING YOUR INNOVATIVE WORK A REVIEW ON THE ARCHITECTURE OF ANDROID IN SMART PHONES RAVNEET KAUR T. BAGGA 1,

More information

ORACLE UNIVERSITY AUTHORISED EDUCATION PARTNER (WDP)

ORACLE UNIVERSITY AUTHORISED EDUCATION PARTNER (WDP) Android Syllabus Pre-requisite: C, C++, Java Programming SQL & PL SQL Chapter 1: Introduction to Android Introduction to android operating system History of android operating system Features of Android

More information

Developer s overview of the Android platform

Developer s overview of the Android platform Developer s overview of the Android platform Erlend Stav SINTEF November 10, 2009 mailto:erlend.stav@sintef.no 1 Overview Vendors and licensing Application distribution Platform architecture Application

More information

Introduction to Android

Introduction to Android Introduction to Android Ambient intelligence Teodoro Montanaro Politecnico di Torino, 2016/2017 Disclaimer This is only a fast introduction: It is not complete (only scrapes the surface) Only superficial

More information

Programming with Android: System Architecture. Luca Bedogni. Dipartimento di Scienze dell Informazione Università di Bologna

Programming with Android: System Architecture. Luca Bedogni. Dipartimento di Scienze dell Informazione Università di Bologna Programming with Android: System Architecture Luca Bedogni Dipartimento di Scienze dell Informazione Università di Bologna Outline Android Architecture: An Overview Android Java Virtual Machine Android

More information

Android App Development

Android App Development Android App Development Course Contents: Android app development Course Benefit: You will learn how to Use Advance Features of Android with LIVE PROJECTS Original Fees: 15000 per student. Corporate Discount

More information

Android - open source mobile platform

Android - open source mobile platform Android - open source mobile platform Alexander Schreiber http://www.thangorodrim.de/ Chemnitzer Linux-Tage 2009 Alexander Schreiber Android - open source mobile

More information

Minds-on: Android. Session 2

Minds-on: Android. Session 2 Minds-on: Android Session 2 Paulo Baltarejo Sousa Instituto Superior de Engenharia do Porto 2016 Outline Activities UI Events Intents Practice Assignment 1 / 33 2 / 33 Activities Activity An activity provides

More information

An overview of mobile and embedded platforms

An overview of mobile and embedded platforms ES3 Lecture 2 An overview of mobile and embedded platforms Basic Classes Embedded devices: These are in toasters, cars, mice, etc. Usually very real-time focused (us accuracy) Very small memory, not usually

More information

EMBEDDED SYSTEMS PROGRAMMING Application Basics

EMBEDDED SYSTEMS PROGRAMMING Application Basics EMBEDDED SYSTEMS PROGRAMMING 2015-16 Application Basics APPLICATIONS Application components (e.g., UI elements) are objects instantiated from the platform s frameworks Applications are event driven ( there

More information

Android for Ubiquitous Computing Researchers. Andrew Rice University of Cambridge 17-Sep-2011

Android for Ubiquitous Computing Researchers. Andrew Rice University of Cambridge 17-Sep-2011 Android for Ubiquitous Computing Researchers Andrew Rice University of Cambridge 17-Sep-2011 Getting started Website for the tutorial: http://www.cl.cam.ac.uk/~acr31/ubicomp/ Contains links to downloads

More information

J2ME crash course. Harald Holone

J2ME crash course. Harald Holone J2ME crash course Harald Holone 2006-01-24 Abstract This article gives a short, hands-on introduction to programming J2ME applications on the MIDP 2.0 platform. Basic concepts, such as configurations,

More information

Developing Mobile Applications

Developing Mobile Applications Developing Mobile Applications J2ME Java 2 Micro Edition 1 Virtual machines portable apps virtual machine native apps operating system hardware 2 Java - important issues Symbolic language not a random

More information

Introduction to Android development

Introduction to Android development Introduction to Android development Manifesto Digital We re an award winning London based digital agency that loves ideas design and technology We aim to make people s lives better, easier, fairer, more

More information

ios vs Android By: Group 2

ios vs Android By: Group 2 ios vs Android By: Group 2 The ios System Memory Section A43972 Delta Core OS Layer Core Services Layer Media Layer CoCoa Touch Layer Memory Section A43972 Delta Aaron Josephs Core OS Layer - Core OS has

More information

CS378 - Mobile Computing. Anatomy of an Android App and the App Lifecycle

CS378 - Mobile Computing. Anatomy of an Android App and the App Lifecycle CS378 - Mobile Computing Anatomy of an Android App and the App Lifecycle Application Components five primary components different purposes and different lifecycles Activity single screen with a user interface,

More information

IGEEKS TECHNOLOGIES. Software Training Division. Academic Live Projects For BE,ME,MCA,BCA and PHD Students

IGEEKS TECHNOLOGIES. Software Training Division. Academic Live Projects For BE,ME,MCA,BCA and PHD Students Duration:40hours IGEEKS TECHNOLOGIES Software Training Division Academic Live Projects For BE,ME,MCA,BCA and PHD Students IGeekS Technologies (Make Final Year Project) No: 19, MN Complex, 2nd Cross, Sampige

More information

Introduction. Lecture 1. Operating Systems Practical. 5 October 2016

Introduction. Lecture 1. Operating Systems Practical. 5 October 2016 Introduction Lecture 1 Operating Systems Practical 5 October 2016 This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/.

More information

Android Programmierung leichtgemacht. Lars Vogel

Android Programmierung leichtgemacht. Lars Vogel Android Programmierung leichtgemacht Lars Vogel Twitter: @vogella Lars Vogel Arbeitet als unabhängiger Eclipse und Android Berater und Trainer Arbeit zusätzlichen für SAP AG als Product Owner in einem

More information

MC Android Programming

MC Android Programming MC1921 - Android Programming Duration: 5 days Course Price: $3,395 Course Description Android is an open source platform for mobile computing. Applications are developed using familiar Java and Eclipse

More information

Android Development Tutorial. Yi Huang

Android Development Tutorial. Yi Huang Android Development Tutorial Yi Huang Contents What s Android Android architecture Android software development Hello World on Android More 2 3 What s Android Android Phones Sony X10 HTC G1 Samsung i7500

More information

SD Module- Android Programming

SD Module- Android Programming Assignment No. 1 SD Module- Android Programming R (2) C (4) V (2) T (2) Total (10) Dated Sign Title: Download Install and Configure Android Studio on Linux /windows platform. Problem Definition: Install

More information

CS260 Intro to Java & Android 04.Android Intro

CS260 Intro to Java & Android 04.Android Intro CS260 Intro to Java & Android 04.Android Intro Winter 2015 Winter 2015 CS260 - Intro to Java & Android 1 Android - Getting Started Android SDK contains: API Libraries Developer Tools Documentation Sample

More information

INTRODUCTION TO ANDROID

INTRODUCTION TO ANDROID INTRODUCTION TO ANDROID 1 Niv Voskoboynik Ben-Gurion University Electrical and Computer Engineering Advanced computer lab 2015 2 Contents Introduction Prior learning Download and install Thread Android

More information

COLLEGE OF ENGINEERING, NASHIK-4

COLLEGE OF ENGINEERING, NASHIK-4 Pune Vidyarthi Griha s COLLEGE OF ENGINEERING, NASHIK-4 DEPARTMENT OF COMPUTER ENGINEERING 1) What is Android? Important Android Questions It is an open-sourced operating system that is used primarily

More information

Android App Development

Android App Development Android App Development Outline Introduction Android Fundamentals Android Studio Tutorials Introduction What is Android? A software platform and operating system for mobile devices Based on the Linux kernel

More information

Syllabus- Java + Android. Java Fundamentals

Syllabus- Java + Android. Java Fundamentals Introducing the Java Technology Syllabus- Java + Android Java Fundamentals Key features of the technology and the advantages of using Java Using an Integrated Development Environment (IDE) Introducing

More information

CSCU9YH Development with Android

CSCU9YH Development with Android CSCU9YH Development with Android Computing Science and Mathematics University of Stirling 1 Android Context 3 Smartphone Market share Source: http://www.idc.com/promo/smartphone-market-share/os 4 Smartphone

More information

Android Online Training

Android Online Training Android Online Training IQ training facility offers Android Online Training. Our Android trainers come with vast work experience and teaching skills. Our Android training online is regarded as the one

More information

ANDROID NATIVE APP: INTRODUCTION TO ANDROID. Roberto Beraldi

ANDROID NATIVE APP: INTRODUCTION TO ANDROID. Roberto Beraldi ANDROID NATIVE APP: INTRODUCTION TO ANDROID Roberto Beraldi Role of an operating system APPLICATIONS OPERATING SYSTEM CPU MEMORY DEVICES Android = OS + Middleware Based on Linux Not just another distribution.

More information

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) Lecture 3: Android Life Cycle and Permission Entire Lifetime An activity begins its lifecycle when entering the oncreate() state If not interrupted

More information

Mobile Station Execution Environment (MExE( MExE) Developing web applications for PDAs and Cellphones. WAP (Wireless Application Protocol)

Mobile Station Execution Environment (MExE( MExE) Developing web applications for PDAs and Cellphones. WAP (Wireless Application Protocol) Developing web applications for PDAs and Cellphones Mobile Station Execution Environment (MExE( MExE) MExE is a standard for defining various levels of wireless communication These levels are called classmarks

More information

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) Lecture 3: Android Life Cycle and Permission Android Lifecycle An activity begins its lifecycle when entering the oncreate() state If not

More information

Android Programming (5 Days)

Android Programming (5 Days) www.peaklearningllc.com Android Programming (5 Days) Course Description Android is an open source platform for mobile computing. Applications are developed using familiar Java and Eclipse tools. This Android

More information

Understanding Application

Understanding Application Introduction to Android Application Development, Android Essentials, Fifth Edition Chapter 4 Understanding Application Components Chapter 4 Overview Master important terminology Learn what the application

More information

Developing Applications for ios

Developing Applications for ios Developing Applications for ios Lecture 1: Mobile Applications Development Radu Ionescu raducu.ionescu@gmail.com Faculty of Mathematics and Computer Science University of Bucharest Evaluation Individual

More information

ANDROID SYLLABUS. Advanced Android

ANDROID SYLLABUS. Advanced Android Advanced Android 1) Introduction To Mobile Apps I. Why we Need Mobile Apps II. Different Kinds of Mobile Apps III. Briefly about Android 2) Introduction Android I. History Behind Android Development II.

More information

Android Essentials with Java

Android Essentials with Java Android Essentials with Java Before You Program o Exercise in algorithm generation Getting Started o Using IntelliJ CE Using Variables and Values o Store data in typed variables Static Methods o Write

More information

DROID. By S.Gokulakrishnan AP/CSE SCSVMV

DROID. By S.Gokulakrishnan AP/CSE SCSVMV Mobile Applicatio on Development with AND DROID By S.Gokulakrishnan AP/CSE SCSVMV The Players Android Open source mobile OS developed ny the Open Handset Alliance led by Google. Based on Linux 2.6 kernel

More information

Course Learning Outcomes (CLO): Student Outcomes (SO):

Course Learning Outcomes (CLO): Student Outcomes (SO): Course Coverage Course Learning Outcomes (CLO): 1. Understand the technical limitations and challenges posed by current mobile devices and wireless communications; be able to evaluate and select appropriate

More information

Android-Basics. Praktikum Mobile und Verteilte Systeme. Prof. Dr. Claudia Linnhoff-Popien André Ebert, Sebastian Feld

Android-Basics. Praktikum Mobile und Verteilte Systeme. Prof. Dr. Claudia Linnhoff-Popien André Ebert, Sebastian Feld Praktikum Mobile und Verteilte Systeme Android-Basics Prof. Dr. Claudia Linnhoff-Popien André Ebert, Sebastian Feld http://www.mobile.ifi.lmu.de WS 2017/18 Programming with Android Today: Android basics

More information

Solving an Android Threading Problem

Solving an Android Threading Problem Home Java News Brief Archive OCI Educational Services Solving an Android Threading Problem Introduction by Eric M. Burke, Principal Software Engineer Object Computing, Inc. (OCI) By now, you probably know

More information

Mobile Internet Devices and the Cloud

Mobile Internet Devices and the Cloud Mobile Internet Devices and the Cloud What Is a Smartphone? Mobile Operating Systems for Smartphones 1. iphone 2. Google (Android) 3. Blackberry 4. Windows Mobile 5. Ubuntu Mobile Internet Device (MID)

More information

IEMS 5722 Mobile Network Programming and Distributed Server Architecture

IEMS 5722 Mobile Network Programming and Distributed Server Architecture Department of Information Engineering, CUHK MScIE 2 nd Semester, 2016/17 IEMS 5722 Mobile Network Programming and Distributed Server Architecture Lecture 1 Course Introduction Lecturer: Albert C. M. Au

More information

BVRIT HYDERABAD College of Engineering for Women Department of Information Technology. Hand Out

BVRIT HYDERABAD College of Engineering for Women Department of Information Technology. Hand Out BVRIT HYDERABAD College of Engineering for Women Department of Information Technology Hand Out Subject Name: Mobile Application Development Prepared by: 1. S. Rama Devi, Assistant Professor, IT Year and

More information

Application Fundamentals

Application Fundamentals Application Fundamentals CS 2046 Mobile Application Development Fall 2010 Announcements CMS is up If you did not get an email regarding this, see me after class or send me an email. Still working on room

More information

An Introduction to Android. Jason Chen Developer Advocate Google I/O 2008

An Introduction to Android. Jason Chen Developer Advocate Google I/O 2008 An Introduction to Android Jason Chen Developer Advocate Google I/O 2008 Background What is Android? Latest News 4,000,000,000 Internet and Mobile Phone Users, Worldwide 3,000,000,000 2,000,000,000 1,000,000,000

More information

Four Components of a Computer System

Four Components of a Computer System Four Components of a Computer System Operating System Concepts Essentials 2nd Edition 1.1 Silberschatz, Galvin and Gagne 2013 Operating System Definition OS is a resource allocator Manages all resources

More information

Accessing DB2 Everyplace using J2ME devices, part 1

Accessing DB2 Everyplace using J2ME devices, part 1 Accessing DB2 Everyplace using J2ME devices, part 1 Skill Level: Intermediate Naveen Balani (naveenbalani@rediffmail.com) Developer 08 Apr 2004 This two-part tutorial assists developers in developing DB2

More information

CS 528 Mobile and Ubiquitous Computing Lecture 3b: Android Activity Lifecycle and Intents Emmanuel Agu

CS 528 Mobile and Ubiquitous Computing Lecture 3b: Android Activity Lifecycle and Intents Emmanuel Agu CS 528 Mobile and Ubiquitous Computing Lecture 3b: Android Activity Lifecycle and Intents Emmanuel Agu Android Activity LifeCycle Starting Activities Android applications don't start with a call to main(string[])

More information

Determining the Best Approach

Determining the Best Approach 2 Determining the Best Approach The remaining chapters of this book cover the capabilities of the BlackBerry application platform and then dig into each application development option in detail. Before

More information

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna

Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna Programming with Android: System Architecture Luca Bedogni Marco Di Felice Dipartimento di Scienze dell Informazione Università di Bologna Outline Android Architecture: An Overview Android Dalvik Java

More information

Introduction What is Android?

Introduction What is Android? Introduction What is Android? CS 2046 Mobile Application Development Fall 2010 Everything you know is wrong Most desktop/web applications: Large screen size vs. Everything you know is wrong Most desktop/web

More information

Android OS. Operating System based on Linux [ ] [Jonas Teuscher, Alex Cuordileone, Cédric Glaus]

Android OS. Operating System based on Linux [ ] [Jonas Teuscher, Alex Cuordileone, Cédric Glaus] 1 Android OS Operating System based on Linux [24-02-16] [Jonas Teuscher, Alex Cuordileone, Cédric Glaus] 1 https://www.androidpit.com/android-marshmallow-update-overview-for-smartphones-and-tablets 2 https://blog.idrsolutions.com/2014/12/android-apps-ide-for-java-coder-programmers/

More information

JAVA. Java Micro Edition

JAVA. Java Micro Edition JAVA Java Micro Edition Overview predecessors Personal Java (1997) Embedded Java (1998) JME definition via JCP JCP Java Community Process JME is not a single SW package a set of technologies and specifications

More information

JSR 248: Taking Java Platform, Micro Edition (Java ME) to the Next Level

JSR 248: Taking Java Platform, Micro Edition (Java ME) to the Next Level JSR 248: Taking Java Platform, Micro Edition (Java ME) to the Next Level Kay Glahn Consultant Mobile Service Architecture, Vodafone http://www.vodafone.com Erkki Rysä Technologist Nokia Corporation http://www.nokia.com

More information

System Energy Efficiency Lab seelab.ucsd.edu

System Energy Efficiency Lab seelab.ucsd.edu Motivation Embedded systems operate in, interact with, and react to an analog, real-time world Interfacing with this world is not easy or monolithic Sensors: provide measurements of the outside world Actuators:

More information

Lecture 1 - Introduction to Android

Lecture 1 - Introduction to Android Lecture 1 - Introduction to Android This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/

More information

Praktikum Mobile und Verteilte Systeme. Android-Basics. Prof. Dr. Claudia Linnhoff-Popien André Ebert, Sebastian Feld

Praktikum Mobile und Verteilte Systeme. Android-Basics. Prof. Dr. Claudia Linnhoff-Popien André Ebert, Sebastian Feld Praktikum Mobile und Verteilte Systeme Android-Basics Prof. Dr. Claudia Linnhoff-Popien André Ebert, Sebastian Feld http://www.mobile.ifi.lmu.de SoSe 2018 Programming with Android Today: Android basics

More information

UNIT:2 Introduction to Android

UNIT:2 Introduction to Android UNIT:2 Introduction to Android 1 Syllabus 2.1 Overview of Android 2.2 What does Android run On Android Internals? 2.3 Android for mobile apps development 2.5 Environment setup for Android apps Development

More information