Android Tutorial (Basic)
Friends Please share you ideas to improve this code. I will appreciate your Suggestion and Comment. This will be theoretical.
Let's Start!What is Android?
Android is an open source and Linux-based Operating System for mobile devices such as smartphones and tablet computers. Android was developed by the Open Handset Alliance, led by Google, and other companies.
Android offers a unified approach to application development for mobile devices which means developers need only develop for Android, and their applications should be able to run on different devices powered by Android.
Features of Android
Sr.No. | Feature & Description |
---|---|
1 | Beautiful UI Android OS basic screen provides a beautiful and intuitive user interface. |
2 | Connectivity GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, NFC and WiMAX. |
3 | Storage SQLite, a lightweight relational database, is used for data storage purposes. |
4 | Media support H.263, H.264, MPEG-4 SP, AMR, AMR-WB, AAC, HE-AAC, AAC 5.1, MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, and BMP. |
5 | Messaging SMS and MMS |
6 | Web browser Based on the open-source WebKit layout engine, coupled with Chrome's V8 JavaScript engine supporting HTML5 and CSS3. |
7 | Multi-touch Android has native support for multi-touch which was initially made available in handsets such as the HTC Hero. |
8 | Multi-tasking User can jump from one task to another and same time various application can run simultaneously. |
9 | Resizable widgets Widgets are resizable, so users can expand them to show more content or shrink them to save space. |
10 | Multi-Language Supports single direction and bi-directional text. |
11 | GCM Google Cloud Messaging (GCM) is a service that lets developers send short message data to their users on Android devices, without needing a proprietary sync solution. |
12 | Wi-Fi Direct A technology that lets apps discover and pair directly, over a high-bandwidth peer-to-peer connection. |
13 | Android Beam A popular NFC-based technology that lets users instantly share, just by touching two NFC-enabled phones together. |
Android Applications
Android applications are usually developed in the Java language using the Android Software Development Kit.Recently Google announced Kotlin as the official language for Android development. So it's great time to learn Kotlin.
Once developed, Android applications can be packaged easily and sold out either through a store such as Google Play, SlideME, Opera Mobile Store, Mobango, F-droid and the Amazon Appstore.
Android - Environment Setup
The only things you need is Jdk & Android Studio, and you are good to develop your first Android app.
Android - Architecture
Android operating system is a stack of software components which is roughly divided into five sections.
Linux kernel
At the bottom of the layers is Linux - Linux 3.6 with approximately 115 patches. This provides a level of abstraction between the device hardware and it contains all the essential hardware drivers like camera, keypad, display etc. Also, the kernel handles all the things that Linux is really good at such as networking and a vast array of device drivers, which take the pain out of interfacing to peripheral hardware.
Libraries
On top of Linux kernel there is a set of libraries including open-source Web browser engine WebKit, well known library libc, SQLite database which is a useful repository for storage and sharing of application data, libraries to play and record audio and video, SSL libraries responsible for Internet security etc.
Android Libraries
This category encompasses those Java-based libraries that are specific to Android development. Examples of libraries in this category include the application framework libraries in addition to those that facilitate user interface building, graphics drawing and database access. A summary of some key core Android libraries available to the Android developer is as follows −
android.app − Provides access to the application model and is the cornerstone of all Android applications.
android.content − Facilitates content access, publishing and messaging between applications and application components.
android.database − Used to access data published by content providers and includes SQLite database management classes.
android.opengl − A Java interface to the OpenGL ES 3D graphics rendering API.
android.os − Provides applications with access to standard operating system services including messages, system services and inter-process communication.
android.text − Used to render and manipulate text on a device display.
android.view − The fundamental building blocks of application user interfaces.
android.widget − A rich collection of pre-built user interface components such as buttons, labels, list views, layout managers, radio buttons etc.
android.webkit − A set of classes intended to allow web-browsing capabilities to be built into applications.
Android Runtime
This is the third section of the architecture and available on the second layer from the bottom. This section provides a key component called Dalvik Virtual Machine which is a kind of Java Virtual Machine specially designed and optimized for Android.
The Dalvik VM makes use of Linux core features like memory management and multi-threading, which is intrinsic in the Java language. The Dalvik VM enables every Android application to run in its own process, with its own instance of the Dalvik virtual machine.
The Android runtime also provides a set of core libraries which enable Android application developers to write Android applications using standard Java programming language.
Application Framework
The Application Framework layer provides many higher-level services to applications in the form of Java classes. Application developers are allowed to make use of these services in their applications.
The Android framework includes the following key services −
Activity Manager − Controls all aspects of the application lifecycle and activity stack.
Content Providers − Allows applications to publish and share data with other applications.
Resource Manager − Provides access to non-code embedded resources such as strings, color settings and user interface layouts.
Notifications Manager − Allows applications to display alerts and notifications to the user.
View System − An extensible set of views used to create application user interfaces.
Applications
You will find all the Android application at the top layer. You will write your application to be installed on this layer only. Examples of such applications are Contacts Books, Browser, Games etc.
Android - Application Components
Application components are the essential building blocks of an Android application. These components are loosely coupled by the application manifest file AndroidManifest.xml that describes each component of the application and how they interact.
There are following four main components that can be used within an Android application −
Sr.No | Components & Description |
---|---|
1 |
Activities They dictate the UI and handle the user interaction to the smart phone screen. |
2 | Services They handle background processing associated with an application. |
3 |
Broadcast Receivers They handle communication between Android OS and applications. |
4 |
Content Providers They handle data and database management issues. |
Activities
An activity represents a single screen with a user interface,in-short Activity performs actions on the screen. For example, an email application might have one activity that shows a list of new emails, another activity to compose an email, and another activity for reading emails. If an application has more than one activity, then one of them should be marked as the activity that is presented when the application is launched.
Services
A service is a component that runs in the background to perform long-running operations. For example, a service might play music in the background while the user is in a different application, or it might fetch data over the network without blocking user interaction with an activity.
Broadcast Receivers
Broadcast Receivers simply respond to broadcast messages from other applications or from the system. For example, applications can also initiate broadcasts to let other applications know that some data has been downloaded to the device and is available for them to use, so this is broadcast receiver who will intercept this communication and will initiate appropriate action.
Content Providers
A content provider component supplies data from one application to others on request. Such requests are handled by the methods of the ContentResolver class. The data may be stored in the file system, the database or somewhere else entirely.
Additional Components
There are additional components which will be used in the construction of above mentioned entities, their logic, and wiring between them. These components are −
S.No | Components & Description |
---|---|
1 | Fragments Represents a portion of user interface in an Activity. |
2 |
Views UI elements that are drawn on-screen including buttons, lists forms etc. |
3 |
Layouts View hierarchies that control screen format and appearance of the views. |
4 | Intents Messages wiring components together. |
5 | Resources External elements, such as strings, constants and drawable pictures. |
6 |
Manifest Configuration file for the application. |
Android Studio
As Android Studio is the ide used for developing Apk's, assuming that you have set-up your Android development environment properly. Let's look at how android files look on Android Studio.
Anatomy of Android Application
Directories and Files in the Android project −
Sr.No. | Folder, File & Description |
---|---|
1 | Java This contains the .java source files for your project. By default, it includes an MainActivity.java source file having an activity class that runs when your app is launched using the app icon. |
2 | res/drawable-hdpi This is a directory for drawable objects that are designed for high-density screens. |
3 | res/layout This is a directory for files that define your app's user interface. |
4 | res/values This is a directory for other various XML files that contain a collection of resources, such as strings and colours definitions. |
5 | AndroidManifest.xml This is the manifest file which describes the fundamental characteristics of the app and defines each of its components. |
6 | Build.gradle This is an auto generated file which contains compileSdkVersion, buildToolsVersion, applicationId, minSdkVersion, targetSdkVersion, versionCode and versionName |
Following section will give a brief overview few of the important application files.
The Main Activity File
The main activity code is a Java file MainActivity.java. This is the actual application file which ultimately gets converted to a Dalvik executable and runs your application.
The Manifest File
Whatever component you develop as a part of your application, you must declare all its components in a manifest.xml which resides at the root of the application project directory. This file works as an interface between Android OS and your application, so if you do not declare your component in this file, then it will not be considered by the OS.
The Strings File
The strings.xml file is located in the res/values folder and it contains all the text that your application uses. For example, the names of buttons, labels, default text, and similar types of strings go into this file.
The Layout File
The activity_main.xml is a layout file available in res/layout directory, that is referenced by your application when building its interface. You will modify this file very frequently to change the layout of your application.