Introduction to Android and Android Studio

Post on 16-Apr-2017

3.863 views 5 download

Transcript of Introduction to Android and Android Studio

INTRODUCTION TO ANDROID AND ANDROID STUDIOSuyash Srijan

ABOUT THE SPEAKER• Computer science student at Oxford Brookes• A kickass Android developer with nearly 6 years of experience• Experience with building ROMs and porting Android to different devices• Experience with other platforms (iOS, Windows, Blackberry) and Wearables (Pebble & Android Wear)• Overall a very cool guy

@suyashsrijanfb.com/suyashsrijangithub.com/theblixguy

WHAT WILL WE LEARN TODAY• What is Android• Why develop for Android• Android platform overview• Android app overview• Android app lifecycle• Android app fundamentals (activities, intents, etc)• Design• Device compatibility• Distribution• What we need to get started with Android development• Android Studio and development tools

WHAT IS

Android is the world’s most popular and dominant mobile operating system. It is based on Linux kernel 3.4/3.10 (depending on device) and is open-source (with proprietary bits). It runs on a wide variety of hardware, including smartphones, smart watches, cars, televisions, digital cameras, game consoles and more. It was founded by Andy Rubin and three others in October 2003 and got acquired by Google in August 2005.

WHY DEVELOP FOR

is gigantic• Over 1B users• Over 1.5M activations per day• Over 200M smartphones running Android sold annually• Over 1.43M apps available• Over 76% smartphone operating system market share

is freedom• Thousands of third party libraries available• Free SDK, IDE and emulator• No restrictions; access anything*• Faster access to new form factors and hardware• Distribute your app anywhere (Playstore, Amazon Appstore, …)

* well, not anything, but you get the point

PLATFORM OVERVIEW

APP OVERVIEW

• Java: Java class files containing app logic• Res: Different resource files• Anim: Animation resource files• Drawable: Images• Drawable-Xdpi: Images depending on screen density• Layout: App layout files• Menu: Layout menu files• Values: Value files (strings, colors, arrays, etc)• Values-vX: Value files depending on API level• Values-Xdp: Value files depending on screen density• XML: XML files (duh)• AndroidManifest.xml: App metadata file• build.gradle: Build related settings

APP LIFECYCLE

APP FUNDAMENTALS

ACTIVITY

• A window/interface which a user can interact with

• Every app has at least one activity

• Activities can be full-screen, floating or embedded inside another activity

startActivity(new Intent(this, newActivity.class));

FRAGMENTS

• A piece of user interface that is meant to be reused

• Adds modularity to your app and makes dynamic UI design easy

• It has its own layout, behavior and lifecycle callbacks, but it killed/stop if the activity is too

getFragmentManager().beginTransaction().add(android.R.id.content, new MyFragment()).commit();

INTENTS

• An intent is an abstract description of an operation to be performed. Think of it as an “intention” to do something

• Intents can be used to start activities, services or send a broadcast

• Intents are of two types – Explicit (when you know what exactly you want to do), and Implicit (when you’re not sure what you want to do)

Intent viewAmazon = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(“http://www.amazon.com”));startActivity(viewAmazon);

SERVICES

• A service is a long running operation in the background

• There are two types of services in Android – Bounded (which runs as long as components which bind to it run) and Unbounded (which runs indefinitely) but a service can also be both

• Services run on the main thread of the application by default

startService(new Intent(this, myService.class));

BROADCAST RECIEVERS

App/

Serv

ice

System sends a broadcast

Battery level changes

SMS received

Photo captured

• A broadcast is a system or app event that can be “broadcasted” so other apps/services can listen for it

• Broadcasts are handled by a BroadcastReceiver, which is a component that allows you to listen for broadcasts

• A BroadcastReceiver can be implemented in AndroidManifest.xml, or dynamically by calling registerReceiver(), or both

• An app’s/services’s BroadcastReceiver is never called if the app/service hasn’t been explicitly started by the user

CONTENT PROVIDERS/RESOLVERS

App Database

Insert

Update Delete

Fetch

• A content provider allows you to store data in your app in a structured way, similar to a relational database like SQL, for the purpose of providing it to other apps. Example usage: Contacts app, SMS app, etc

• A content resolver allows you to get data from a content provider or manipulate its data (modify, delete, update, etc)

• You cannot request to read data from a content provider at runtime, it has to be declared in AndroidManifest.xml

ANDROIDMANIFEST.XML

LAYOUTS

• A layout defines the visual structure for a user interface, such as the UI for an activity or app widget

• Layouts can be defined both in XML or programmatically using View and ViewGroup objects

• There are 5 different types of Layouts in Android: LinearLayout, RelativeLayout, FrameLayout, TableLayout and AbsoluteLayout

DESIGN

DEVICE COMPATIBILITY

Android is designed to run on many different types of devices, from phones to tablets and televisions. As a developer, the range of devices provides a huge potential audience for your app. In order for your app to be successful on all these devices, it should tolerate some feature variability and provide a flexible user interface that adapts to different screen configurations. To facilitate your effort toward that goal, Android provides a dynamic app framework in which you can provide configuration-specific app resources in static files (such as different XML layouts for different screen sizes). Android then loads the appropriate resources based on the current device configuration. So with some forethought to your app design and some additional app resources, you can publish a single application package (APK) that provides an optimized user experience on a variety of devices. If necessary, however, you can specify your app's feature requirements and control which types of devices can install your app from Google Play Store.

DISTRIBUTION

WHAT DO I NEED TO BUILD ANAPP?

JAVA PROGRAMMING LANGUAGE & XML

docs.oracle.com/javase/tutorial/java/

ANDROID SDK & SDK TOOLSdeveloper.android.com/sdk

ANDROID STUDIOtools.android.com/download/studio

AND OF COURSE…

MORE ON ANDROID STUDIO

ADB

• Connect to an Android device or emulator• Read logcat• Install, reinstall or uninstall apps• Send/retrieve files to/from device storage• Forward ports• Record screen or take screenshots• Reboot your phone into boot loader or recovery

mode• Take backups or restore them• Execute shell commands

DEVICE MONITOR

LOGCAT

SDK MANAGER

WORKFLOW

THERE’S STILL A LOT TO COVER…NDK, Support Library, Google services APIs, Monetization, etc.

THANK YOU

PLEASE FOLLOW US ON SOCIAL MEDIA CHANNELS FOR INFORMATION ON UPCOMING

EVENTS, TALKS AND MORE

@gdgoxfordfb.com/gdgoxford

plus.google.com/+GdgoxfordUkGoogleDevelopers/