An Overview of the Android Programming

Similar documents
EMBEDDED SYSTEMS PROGRAMMING Android Services

register/unregister for Intent to be activated if device is within a specific distance of of given lat/long

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

Applied Cognitive Computing Fall 2016 Android Application + IBM Bluemix (Cloudant NoSQL DB)

Diving into Android. By Jeroen Tietema. Jeroen Tietema,

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

Android Application Development. By : Shibaji Debnath

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

Mobile Programming Practice Background processing AsynTask Service Broadcast receiver Lab #5

INTRODUCTION TO ANDROID

Android UI Development

Introduction to Android Development

EMBEDDED SYSTEMS PROGRAMMING Application Basics

Introduction to Android

Android Application Development

SD Module-1 Android Dvelopment

Mobile Development Lecture 9: Android & RESTFUL Services

User Interface Design & Development

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

CS 403X Mobile and Ubiquitous Computing Lecture 5: Web Services, Broadcast Receivers, Tracking Location, SQLite Databases Emmanuel Agu

Real-Time Embedded Systems


Getting Started. Dr. Miguel A. Labrador Department of Computer Science & Engineering

Fragments. Lecture 11

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

Android Fundamentals - Part 1

Android - JSON Parser Tutorial

Mobile Software Development for Android - I397

Introduction to Android

MAD ASSIGNMENT NO 3. Submitted by: Rehan Asghar BSSE AUGUST 25, SUBMITTED TO: SIR WAQAS ASGHAR Superior CS&IT Dept.

CS378 -Mobile Computing. Services and Broadcast Receivers

Embedded Systems Programming - PA8001

1. Location Services. 1.1 GPS Location. 1. Create the Android application with the following attributes. Application Name: MyLocation

Produced by. Mobile Application Development. Higher Diploma in Science in Computer Science. Eamonn de Leastar

EMBEDDED SYSTEMS PROGRAMMING Application Tip: Switching UIs

Software Practice 3 Before we start Today s lecture Today s Task Team organization

Group B: Assignment No 8. Title of Assignment: To verify the operating system name and version of Mobile devices.

CS 370 Android Basics D R. M I C H A E L J. R E A L E F A L L

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

MOBILE APPLICATION DEVELOPMENT LECTURE 10 SERVICES IMRAN IHSAN ASSISTANT PROFESSOR

Fragment Example Create the following files and test the application on emulator or device.

Required Core Java for Android application development

Mobile Programming Lecture 5. Composite Views, Activities, Intents and Filters

PENGEMBANGAN APLIKASI PERANGKAT BERGERAK (MOBILE)

Android App Development. Mr. Michaud ICE Programs Georgia Institute of Technology

ELET4133: Embedded Systems. Topic 15 Sensors

Services. Background operating component without a visual interface Running in the background indefinitely

IPN-ESCOM Application Development for Mobile Devices. Extraordinary. A Web service, invoking the SOAP protocol, in an Android application.

Android - Widgets Tutorial

Mobile Application Development Android

Tip Calculator. xmlns:tools=" android:layout_width="match_parent"

Tutorial: Setup for Android Development

Android Ecosystem and. Revised v4presenter. What s New

COLLEGE OF ENGINEERING, NASHIK-4

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

Android Help. Section 8. Eric Xiao

Android Basics. Android UI Architecture. Android UI 1

M.A.D ASSIGNMENT # 2 REHAN ASGHAR BSSE 15126

Introduction To Android

Multiple Activities. Many apps have multiple activities

Applications. Marco Ronchetti Università degli Studi di Trento

Mobile Computing. Introduction to Android

Mobile Programming Lecture 9. Bound Services, Location, Sensors, IntentFilter

Introduction to Android development

Create Parent Activity and pass its information to Child Activity using Intents.

Produced by. Mobile Application Development. Eamonn de Leastar

Tutorial: Setup for Android Development

Services. service: A background task used by an app.

EMBEDDED SYSTEMS PROGRAMMING Application Tip: Saving State

Agenda. Overview of Xamarin and Xamarin.Android Xamarin.Android fundamentals Creating a detail screen

ANDROID SYLLABUS. Advanced Android

Security model. Marco Ronchetti Università degli Studi di Trento

Mobile Application Development - Android

CMSC436: Fall 2013 Week 3 Lab

32. And this is an example on how to retrieve the messages received through NFC.

Getting started: Installing IDE and SDK. Marco Ronchetti Università degli Studi di Trento

Introduction to Android

Software Practice 3 Today s lecture Today s Task

Android Apps Development for Mobile and Tablet Device (Level I) Lesson 2

Programming Android UI. J. Serrat Software Design December 2017

Services. Marco Ronchetti Università degli Studi di Trento

Android for Java Developers Dr. Markus Schmall, Jochen Hiller

Android App Development

MAD ASSIGNMENT NO 2. Submitted by: Rehan Asghar BSSE AUGUST 25, SUBMITTED TO: SIR WAQAS ASGHAR Superior CS&IT Dept.

Android Navigation Drawer for Sliding Menu / Sidebar

Minds-on: Android. Session 2

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.

Produced by. Mobile Application Development. Higher Diploma in Science in Computer Science. Eamonn de Leastar

Answers to Exercises

Embedded Systems Programming - PA8001

IEMS 5722 Mobile Network Programming and Distributed Server Architecture

EMBEDDED SYSTEMS PROGRAMMING Application Tip: Managing Screen Orientation

Android Programming (5 Days)

App Development for Android. Prabhaker Matet

Xin Pan. CSCI Fall

COSC 3P97 Mobile Computing

Solving an Android Threading Problem

Created By: Keith Acosta Instructor: Wei Zhong Courses: Senior Seminar Cryptography

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

Overview of Activities

Transcription:

ID2212 Network Programming with Java Lecture 14 An Overview of the Android Programming Hooman Peiro Sajjad KTH/ICT/SCS HT 2016

References http://developer.android.com/training/index.html Developing Android Apps by Google (online course) Course ID2216 Developing Mobile Applications Offered by the Communication Systems department Course responsible: Associate Professor Konrad Tollmar 2

Outline Mobile Web Apps vs. Native Apps Android Platform Android Programming User Experience 3

Mobile Web App / Native App 4

Mobile Web Apps (1/2) Accessing browser-based internet services from a handheld mobile device Core technologies: HTML, CSS and JavaScript 5

Mobile Web Apps (2/2) Advantages*: Cross-platform compatibility Cheaper and easier to maintain Simple and ubiquitous access Disadvantages: Requires customization across different browser versions Limited access to mobile s hardware and software Generally requires internet connection * www.lionbridge.com: Mobile Web Apps vs. Native Apps: How to Make the Right Choice 6

Mobile Native Apps Built specifically for a particular device and operating system Advantages: Leverage the device specific hardware and software Work offline Better visibility in app stores, making money immediately Disadvantages: Different versions of the app for different platforms Keeping apps up to date is costly Content publishers have to share information about their subscribers with the app store 7

A Sample Architecture of a Mobile Application 8

Overview of Android Platform Android Operating System Application Lifecycle 9

Android Operating System (1/2) Google s Linux based open-source OS that includes: Linux kernel optimized for mobile and embedded devices Open-source application development libraries such as SQLite, OpenGL, and a media manager A runtime to host and execute Android applications, including Android Runtime (ART) An application framework to expose system services to the application layer, including the window manager and location manager, databases, telephony and sensors A user interface framework used to host and launch applications A set of core pre-installed applications 10

Android Operating System (2/2) 11

Dalvik Virtual Machine (1/2) The process virtual machine (VM) in Google's Android operating system Runs the apps on Android devices. Programs are commonly written in Java and compiled to bytecode. 12

Dalvik Virtual Machine (2/2) Then converted from Java Virtual Machine-compatible.class files to Dalvik-compatible.dex (Dalvik Executable) files before installation on a device. In Android 5, a new virtual machine Android Runtime (ART) replaced Dalvik as the platform default. 13

Application Lifecycle (1/2) Android applications have limited control over their own lifecycle. Each application runs in its own process. Applications have different priorities. 14

Application Lifecycle (2/2) Android can kill applications without warning, to free resources for higher-priority applications. An application s priority is equal to that of its highestpriority component. It s important to structure the application to ensure that it has the right priority for the work it s doing. 15

Application Lifecycle: Application States (1/3) Figure taken from Professional Android 4 Application Development (3rd Edition). 16

Application Lifecycle: Application States (2/3) Active: includes application components the user is interacting with. Visible: those activities which aren t in the foreground but still can affect what the user sees on screen. Started service: processes hosting services. Background: processes hosting Activities which aren t visible and don t have any running services. Empty: a process having no active application component 17

Application Lifecycle: Application States (3/3) And now let s watch an example! 18

Android Programming Android SDK Application Model and Components Processes and Threads Permissions Networking Location 19

Development Environment First, download Android Studio. It includes: Integrated Development Environment (IDE) Android SDK Tools Android Platform-tools The latest Android platform The latest Android system image for the emulator Notice that, you need to have JDK installed beforehand. 20

Android SDK (1/3) Provides the API libraries and developer tools necessary to build, test, and debug apps for Android. Includes: Build Tools: all the tools required to compile and build the app. SDK Tools: Contains main tools for debugging and testing, plus other utilities that are required to develop an app. 21

Android SDK (2/3) SDK Platform-tools: Contains platform-dependent tools for developing and debugging your application. Documentation: the latest documentation for the Android platform APIs. SDK Platform: It includes an android.jar file with a fully compliant Android library. System Images: Required system images for the Android emulator. Google APIs: APIs which adds special Google features to your apps. 22

Android SDK (3/3) Android support: a set of code libraries that provide backwardcompatible versions of Android framework APIs as well as features that are only available through the library APIs Google Play Billing: Provides the static libraries and samples that allow you to integrate billing services in your app with Google Play. Google Play Licensing: Provides the static libraries and samples that allow you to perform license verification for your app when distributing with Google Play. 23

Application Model and Components Every Android application consists of some loosely coupled components and the application manifest. The manifest defines application s metadata and the components bindings. 24

Application Components Activities & UI design elements: The application s presentation layer. Services: components that run in the background to perform longrunning operations. Intents: a powerful inter-application message passing framework. Broadcast Receivers: Intent listeners (not covered in this lecture) Content Provider: manages a shared set of application data (not covered in this lecture) 25

Application Manifest Every Android project includes a manifest file. Defines the structure and metadata of the application, its components and requirements. AndroidManifest.xml 26

Manifest Example <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name=".mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> </activity> </application> </manifest> <category android:name="android.intent.category.launcher" /> </intent-filter> 27

Activities Each activity represents a screen that an application can present to its users. To create an activity, you must create a subclass of Activity. Implement callback methods inherited from Activity class. Two important callback methods: oncreate(): called when creating the activity. onpause(): indicates that the user might be leaving. 28

Activities: Example public class MainActivity extends Activity { } @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } 29

Activity Lifecycle Figure taken from developer.android.com/training/basics/activity-lifecycle/starting.html. 30

User Interface Design Some UI terminologies in Android: Views: the base class for all visual interface elements. View Groups: extensions of the View class that can contain multiple child Views. Fragments: A Fragment represents a behavior or a portion of user interface in an Activity. Fragments have their own lifecycle, state, and back stack. Activities: represents the window or screen being displayed. To display a UI, you assign a View to an Activity. 31

User Interface: Example (1/2) <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="top" android:orientation="vertical" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".mainactivity" > <TextView android:id="@+id/chattextview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/sendbutton" android:layout_alignparenttop="true" android:layout_gravity="top" android:background="@android:color/holo_green_light" /> 32

User Interface: Example (2/2) <Button android:id="@+id/sendbutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbottom="@+id/chattextinput" android:layout_alignright="@+id/chattextview" android:layout_aligntop="@+id/chattextinput" android:layout_torightof="@+id/chattextinput" android:text="@string/send" /> <EditText android:id="@+id/chattextinput" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/chattextview" android:layout_alignparentbottom="true" android:layout_marginbottom="16dp" android:ems="10" android:inputtype="textmultiline" > <requestfocus /> </EditText> </RelativeLayout> 33

Intent Intents work as a message-passing mechanism both within and between applications. Using Intents you can: Explicitly, start a particular Service or Activity using its class name Implicitly, start an Activity or Service by requesting an action on a piece of data Broadcast the occurrence of an event 34

Explicit Start of a New Activity Intent intent = new Intent(MainActivity.this, MyContactsActivity.class); startactivityforresult(intent, PICK_CONTACT); 35

Implicit Start of a New Activity Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI); startactivityforresult(intent, PICK_CONTACT); 36

Service (1/3) A Service is an application component that can perform long-running operations in the background and does not provide a user interface. A service can run in the background to perform work even while the user is in a different application. A component can bind to a service to interact with it and even perform inter-process communication (IPC). A service might handle network transactions, play music, perform file I/O 37

Service (2/3) To create a service, you must create a subclass of Service. You need to override the callback methods to control the behavior of the service: onstartcommand(): when another component requests the service to start. onbind(): when another component wants to bind with the service oncreate(): when the service is first created. ondestroy(): when the service is no longer used and is being destroyed. 38

Service (3/3) Declare the service in the manifest <manifest... >... <application... > <service android:name=".exampleservice" />... </application> </manifest> 39

Processes By default, all components of the same application run in the same process. You can define in the manifest, that different components of the same application are to be run in different processes. android:process="string" 40

Threads (1/2) When an application is launched, the system creates a thread of execution for the application, called "main. The main thread is called UI thread because: it interacts the Android UI components. Performing long operations such as network access or database queries will block the whole UI. 41

Threads (2/2) The Andoid UI toolkit is not thread-safe, so do not manipulate your UI from a worker thread. Remember these two rules: 1. Do not block the UI thread 2. Do not access the Android UI toolkit from outside the UI thread 42

Threads: Example (1/3) An example of wrong implementation: public void onclick(view v) { new Thread(new Runnable() { public void run() { } Bitmap b = loadimagefromnetwork("http://example.com/image.png"); mimageview.setimagebitmap(b); } }).start(); Worker thread is updating ImageView which is not threadsafe. 43

Threads: AsyncTask (1/3) Correct implementation using AsyncTask AsyncTask performs the blocking operations in a worker thread and then publishes the results on the UI thread. you must subclass AsyncTask and implement the doinbackground() callback method. To update the UI, you should implement onpostexecute() 44

Threads: AsyncTask (2/3) public void onclick(view v) { new DownloadImageTask().execute("http://example.com/image.png"); } private class DownloadImageTask extends AsyncTask<String, Integer, Bitmap> { } protected Bitmap doinbackground(string... urls) { return loadimagefromnetwork(urls[0]); } protected void onprogressupdate(integer progress) { setprogresspercent(progress[0]); } protected void onpostexecute(bitmap result) { mimageview.setimagebitmap(result); } 45

Threads: AsyncTask (3/3) private class DownloadImageTask extends AsyncTask<String, Integer, Bitmap> { protected Bitmap doinbackground(string... urls) { return loadimagefromnetwork(urls[0]); } params progress protected void onprogressupdate(integer progress) { setprogresspercent(progress[0]); } result } protected void onpostexecute(bitmap result) { mimageview.setimagebitmap(result); } 46

Permissions A basic Android application has no permission associated with it by default, so it cannot access data on the device. To make use of protected features of the device, you must give the related to permissions to your application. Permissions must be added to AndroidManifest.xml. Example: <uses-permission android:name="android.permission.read_contacts" /> 47

Network and Internet Connectivity (1/4) There are different network technologies with different speed, reliability and cost: Wi-Fi, GPRS, 3G, LTE and so on Application can manage these connections to ensure the efficiency and responsiveness Networking in Android is handled via ConnectivityManager. Changes in network connectivity are broadcasted by Android to Intents. 48

Network and Internet Connectivity (2/4) To utilize the network connectivity, following user permissions are required: INTERNET: Allows applications to open network sockets. ACCESS_NETWORK_STATE: Allows applications to access information about networks. 49

Network and Internet Connectivity (3/4) To check if the network is connected: ConnectivityManager connmgr = (ConnectivityManager) getsystemservice(context.connectivity_service); NetworkInfo networkinfo = connmgr.getactivenetworkinfo(); if (networkinfo!= null && networkinfo.isconnected()) { // do network operations } else { // display error } 50

Network and Internet Connectivity (4/4) The NetworkInfo object includes the type of the network connection which is available. gettype() returns the network connection type: TYPE_MOBILE TYPE_WIFI TYPE_WIMAX TYPE_ETHERNET TYPE_BLUETOOTH 51

Location (1/4) The central component of the location framework is the LocationManager system service. Using Google Maps Android API, you can add maps to your app based on Google Maps data. The application can acquire the user location utilizing GPS and Android s Network Location Provider. 52

Location (2/4) Network Location Provider: Determines location through cell tower and Wi-Fi signals Works indoors and outdoors Responds faster Less battery power GPS: Most accurate Only works outdoor Consumes battery quickly Slow 53

Location (3/4) You need to request user permission for either: ACCESS_FINE_LOCATION: Allows an app to access precise location from location sources such as GPS, cell towers, and Wi-Fi. ACCESS_COARSE_LOCATION: Allows an app to access approximate location derived from network location sources such as cell towers and Wi-Fi. 54

Location (4/4) Getting user location in Android works by means of callback. First, acquire a reference to the system Location Manager LocationManager locationmanager = (LocationManager)this.getSystemService( Context.LOCATION_SERVICE); 55

Location: Define a Listener Define a listener that responds to location updates LocationListener locationlistener = new LocationListener() { public void onlocationchanged(location location) { makeuseofnewlocation(location); } public void onstatuschanged(string provider, int status, Bundle extras) {} public void onproviderenabled(string provider) {} public void onproviderdisabled(string provider) {} }; 56

Location : Register the Listener Register the listener with the Location Manager to receive location updates locationmanager.requestlocationupdates( LocationManager.NETWORK_PROVIDER, 0, 0, locationlistener); 57

Location: Last Known Location If you need to Get the last known location for the quick location information: String locationprovider = LocationManager.NETWORK_PROVIDER; // Or use LocationManager.GPS_PROVIDER Location lastknownlocation = locationmanager.getlastknownlocation(locationprovider ); 58

User Experience A high quality app is more probable to have higher user ratings, better rankings, more downloads. Improve stability and eliminate bugs Improve UI responsiveness, a slow and unresponsive UI will disappoint the users. Improve the ease of use 59

User Experience High quality User Interface Having the right set of features You can find many good suggestions and best practices to improve your application following the link: http://developer.android.com/training/index.html 60