What Is Android Studio

Android Tutorial (Basic): 1st

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.

Android Resources Organizing

There are many more items which you use to build a good Android application. Apart from coding for the application, you take care of various other resources like static content that your code uses, such as bitmaps, colors, layout definitions, user interface strings, animation instructions, and more. These resources are always maintained separately in various sub-directories under res/ directory of the project.

Organize resource in Android Studio

Sr.No. Directory & Resource Type
1

anim/

XML files that define property animations. They are saved in res/anim/ folder and accessed from the R.anim class.

2

color/

XML files that define a state list of colors. They are saved in res/color/ and accessed from the R.color class.

3

drawable/

Image files like .png, .jpg, .gif or XML files that are compiled into bitmaps, state lists, shapes, animation drawable. They are saved in res/drawable/ and accessed from the R.drawable class.

4

layout/

XML files that define a user interface layout. They are saved in res/layout/ and accessed from the R.layout class.

5

menu/

XML files that define application menus, such as an Options Menu, Context Menu, or Sub Menu. They are saved in res/menu/ and accessed from the R.menu class.

6

raw/

Arbitrary files to save in their raw form. You need to call Resources.openRawResource() with the resource ID, which is R.raw.filename to open such raw files.

7

values/

XML files that contain simple values, such as strings, integers, and colors. For example, here are some filename conventions for resources you can create in this directory -

  • arrays.xml for resource arrays, and accessed from the R.array class.

  • integers.xml for resource integers, and accessed from the R.integer class.

  • bools.xml for resource boolean, and accessed from the R.bool class.

  • colors.xml for color values, and accessed from the R.color class.

  • dimens.xml for dimension values, and accessed from the R.dimen class.

  • strings.xml for string values, and accessed from the R.string class.

  • styles.xml for styles, and accessed from the R.style class.

8

xml/

Arbitrary XML files that can be read at runtime by calling Resources.getXML(). You can save various configuration files here which will be used at run time.


If you think I should post another chapter Please comment and like.