Introduction to Android and Android Studio
-
Upload
suyash-srijan -
Category
Software
-
view
3.863 -
download
5
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/