Android in Hindi
Android in Hindi
c om
Kuldeep
97994-55505 With this eBook you can Learn Core Concepts of an
Android App Development with Deep Details in easy to
understand Hindi Language.
I am sure, you will not regret with this eBook. It’s a Value
for Money EBook that would help you to Learn and
Understand Underlying Basics and Core concepts of
Android App development.
Android in Hindi
Kuldeep Chand
1
Android in Hindi
Android in HINDI
Copyright © Updated on 2018 by Kuldeep Chand
All rights reserved. No part of this work may be reproduced or transmitted in any form
or by any means, electronic or mechanical, including photocopying, recording, or by
any information storage or retrieval system, without the prior written permission of the
copyright owner and the publisher.
Trademarked names may appear in this book. Rather than use a trademark symbol
with every occurrence of a trademarked name, we use the names only in an editorial
fashion and to the benefit of the trademark owner, with no intention of infringement of
the trademark.
e-mail [email protected],
or
visit http://www.bccfalna.com
Phone 097994-55505
The information in this book is distributed on an “as is” basis, without warranty.
Although every precaution has been taken in the preparation of this work, the author
shall not have any liability to any person or entity with respect to any loss or damage
caused or alleged to be caused directly or indirectly by the information contained in
this book.
2
Android in Hindi
ProfessionAl Developer
3
Android in Hindi
Index
of
Contents
4
Android in Hindi
Index of Content
Android – The Introduction .......................................... 15
Android App – The Basic Architecture..................................................................... 19
Views.....................................................................................................................19
Activity ...................................................................................................................26
Fragment...............................................................................................................27
Intents ...................................................................................................................28
Services ................................................................................................................30
Content Providers .................................................................................................32
AndroidManifest.xml .............................................................................................33
Android App – The Architecture Extensions............................................................ 33
Storage..................................................................................................................33
Network .................................................................................................................34
Multimedia.............................................................................................................34
Location Services .................................................................................................34
Phone Services.....................................................................................................34
5
Android in Hindi
app Directory.......................................................................................................100
build Directory .....................................................................................................100
gradle Directory ..................................................................................................100
.gitignore File ......................................................................................................100
build.gradle File ..................................................................................................100
gradle.properties File ..........................................................................................101
gradlew File.........................................................................................................101
gradlew.bat File ..................................................................................................101
local.properties File.............................................................................................101
.iml File................................................................................................................101
settings.gradle File..............................................................................................101
Android Application Modules .................................................................................102
build/ Directory ....................................................................................................102
lib/ Directory ........................................................................................................102
src/ Directory.......................................................................................................102
androidTest/ Directory ........................................................................................102
main/java/com.<domain.projectName> Directory .............................................. 103
main/jni/ Directory ...............................................................................................103
main/gen/ Directory.............................................................................................103
main/assets/ Directory ........................................................................................103
main/res/ Directory..............................................................................................104
anim/ Sub-Directory ........................................................................................104
color/ Sub-Directory ........................................................................................104
drawable/ Sub-Directory .................................................................................104
mipmap/ Sub-Directory ...................................................................................104
layout/ Sub-Directory ......................................................................................104
menu/ Sub-Directory .......................................................................................105
raw/ Sub-Directory ..........................................................................................105
values/ Sub-Directory......................................................................................105
xml/ Sub-Directory ..........................................................................................105
AndroidManifest.xml File ....................................................................................105
.gitignore/ ............................................................................................................106
app.iml/................................................................................................................106
build.gradle File ..................................................................................................106
Android Development Framework ......................................................................... 106
Android APIs .......................................................................................................107
6
Android in Hindi
7
Android in Hindi
8
Android in Hindi
Margins ...............................................................................................................218
Table Layout...........................................................................................................221
TableRow Object ................................................................................................222
Grid Layout .............................................................................................................246
FrameLayout ..........................................................................................................267
Relative Layout.......................................................................................................270
layout_marginStart, layout_marginEnd, layout_paddingStart, layout_paddingEnd
............................................................................................................................273
android:layoutDirection Attribute ........................................................................ 277
android:textDirection Attribute ............................................................................277
android:textAlignment Attribute .......................................................................... 278
layout_centerVertical="true" ...............................................................................279
layout_centerHorizontal="true" ........................................................................... 279
layout_centerInParent="true" .............................................................................280
layout_alignParentTop="true" layout_alignParentRight="true"
layout_alignParentBottom="true" layout_alignParentLeft="true"
layout_alignParentStart="true" layout_alignParentEnd="true" .......................... 281
android:layout_toRightOf Attribute ..................................................................... 286
android:layout_toLeftOf Attribute........................................................................ 288
android:layout_toStartOf and android:layout_toEndOf Attribute ....................... 290
android:layout_above and android:layout_below Attributes .............................. 291
android:layout_alignTop android:layout_alignBottom android:layout_alignLeft
android:layout_alignRight android:layout_alignStart android:layout_alignEnd . 297
android:layout_alignBaseline .............................................................................303
android:layout_alignWithParentIfMissing ........................................................... 305
Constraint Layout ...................................................................................................306
Relative Positioning ............................................................................................309
Margins ...............................................................................................................311
Centering Positioning..........................................................................................314
Visibility Behavior................................................................................................316
Dimension Constraints .......................................................................................317
Chains .................................................................................................................320
Virtual Helpers Objects .......................................................................................322
How to Create ConstraintLayout ........................................................................ 322
Android – GUI Event Programming ........................... 336
Event Handling Mechanism ...................................................................................336
Input Events and Event Handler Callbacks ........................................................... 337
Event Listeners.......................................................................................................338
9
Android in Hindi
10
Android in Hindi
11
Android in Hindi
12
Android in Hindi
13
Android in Hindi
The
Introduction
14
Android in Hindi
इसी�लए Android Platform आधा�रत न के वल Mobile Phones व Tablet PCs आ रहे ह�, ब�ल्क
Google ने इसे Set-Top Box व TVs म� भी Add करना शु� कर �दया है, �जसे Google TV के नाम
से जाना जाता है। ठ�क इसी तरह से Android Platform को �व�भ� �कार क� अन्य Digital Devices
जैसे �क Cars, Airplanes व Robots म� भी मुख्य Platform क� तरह Use �कया जाने लगा है।
�फर भी Android Platform को मूल �प से ऐसी Small Screen वाली Devices के �लए ही
Develop �कया गया था, �जनम� उसी तरह का Keyboard जैसा कोई Hardware Input Device नह�
होता, जैसा Computer System के साथ होता है, ब�ल्क Data Input करने के �लए इन Devices म�
इनक� Touch Screens को ही उपयोग म� लेते �ए उस पर ही Virtual Keyboard बना �दया जाता है।
इस�लए ऐसा माना जा सकता है �क Android Platform को भ�वष्य म� भी मूल �प से Small Screen
Devices जैसे �क Smart-Phones के �लए ही Develop �कया जाने वाला है और ये �स्थ�त एक
Android Developer के �प म� हमारे �लए Advantage भी है और कमी भी।
वतर्मान समय के Android आधा�रत Smart-Phones काफ� आकषर्क होते ह� ले�कन 1990 के दशक
के मध्य म� Mobile Devices पर Internet Services Provide करने के �लए Handheld Device
Markup Language (HDML) का �योग करना पडता था और इस HDML द्वारा Provide क� जाने
वाली Internet Services क� Capabilities भी काफ� Limited �आ करती थ�। जब�क वतर्मान समय
के Phones काफ� आसानी से Internet Services से सम्बं�धत Smart व Advance Capabilities से
यु� होते ह� और इसका मुख्य कारण है, Apple का iPhone.
Apple Company द्वारा iPhone को एक ऐसी Smart Device के �प म� Develop �कया गया था,
�जस पर Internet द्वारा Provide क� जाने वाली Services को उनक� पूणर् क्षमता के साथ ठ�क उसी
तरह से Use �कया जा सकता है, �जस तरह से उन्ह� एक Computer System पर Use �कया जाता है।
हालां�क iPhone से पहले भी कई कम्प�नय� के Smart Phones Devices Market म� उपलब्ध थे,
ले�कन �कसी भी Device को एक Smart Device बनाने हेतु सबसे महत् वपूणर् Role हम�शा उस
Device के Operating System द्वारा Play �कया जाता है और iPhone से पहले �जतने भी Smart
Devices उपलब्ध थे, उनके Operating Systems इतने Advance नह� थे �क Internet द्वारा
Provide �कए जाने वाले सभी Features को उनक� पूणर् क्षमता के साथ Run कर सक� ।
इस�लए उस समय के Smart Devices के Operating System क� इस कमी को सबसे पहले Apple
ने पहचाना और iOS नाम का वह Operating System Develop �कया �जसने Apple
के iPhone को एक Computer क� तरह ही Smart Internet Service Device बना �दया।
ले�कन क्य��क iOS को मूल �प से Apple Company द्वारा Develop �कया गया था और Apple
Company अपनी सभी Devices (Computer, Mobile, Tablet PC, Watch, Glass, etc…)
स्वयं बनाता है, इस�लए इन Devices के �लए उसके द्वारा Develop �कया गया iOS उसका स्वयं का
Intellectual Property है, �जसे कोई भी अन्य Company अपने Device म� Use नह� कर सकता था।
15
Android in Hindi
इसी ज�रत के प�रणाम के �प म� Android OS हमारे सामने है, जो �क पूरी तरह से iOS के समान ही
Features Provide कर सकता है ले�कन ये एक पूरी तरह से Open Source व Free Platform है,
�जसक� वजह से इस Platform को Use करते �ए कोई भी कम्पनी Android Platform पर आधा�रत
नए Device बना सकता है।
वास्तव म� Android Platform को Apple के iPhone के Market म� आने के कई साल� पहले 2003 से
ही Android Inc. नाम क� एक कम्पनी द्वारा Develop �कया जा रहा था, जो �क Andy Rubin,
Rich Miner, Nick Sears व Chris White नाम के चार लोग� क� Joint Development
Company थी और ये लोग Mobile Phone के �लए नह� ब�ल्क मूलत: Digital Cameras के �लए
एक Advance Operating System Develop कर रहे थे, ले�कन कु छ समय काम करने के बाद उन्ह�
महसूस �आ �क Digital Cameras का भ�वष्य अच्छा नह� है और Digital Cameras, वास्तव म�
Mobile Phone का एक Feature मा� रह जा�गे। इस�लए इन Developers ने Digital Cameras के
स्थान पर Smart Mobile Phones के �लए Operating System Develop करने पर अपना ध्यान
क� ��त कर �दया और जो Research Work इन्ह�ने Digital Cameras के �लए Advance Operating
System बनाने हेत ु �कया था, वो सारा Research Work इनके Mobile Phone का Operating
System Develop करने म� काम आ गया।
हालां�क इन लोग� द्वारा Android Platform के Development को पूरी तरह से Secret Project क�
तरह ही Develop �कया जा रहा था, ले�कन 2005 म� इन Developers क� कम्पनी को आ�थ�क तंगी का
सामना करना पड़ा �जसक� वजह से इनका Secret Project, Secret नह� रह गया और Google क�
नजर म� आ गया। गूगल को इस Android Project का भ�वष्य उज्ज वल �दखाई �दया क्या◌े◌ं�क
Google, Mobile Market म� Enter करना चाहता था, �जसके �लए उसे एक ऐसे ही Mobile
Operating System क� तलाश थी। प�रणामस्व�प गूगल ने पूरे Android Inc. को उनके
Developers स�हत 50 Million Dollars म� अ�ध��हत कर �लया।
गूगल ने कई तरीक� से अपने Android OS के साथ Mobile Market म� �वेश करने क� को�शश क�,
ले�कन �कसी भी तरह से वह Mobile Market म� ज्यादा स्थान नह� बना पाया, जब�क इसी दौरान Apple
के iPhone ने Launch होते ही जबरदस्त तरीके से Mobile Market को Capture कर �लया, �जसका
मूल कारण ये था �क Apple अपने Devices स्वयं ही बनाता था जब�क Android के वल एक
Operating System था �जसके �लए अन्य कम्प�नय� को Mobile Phone बनाने पड़ते थे और मा� इस
Android OS के �लए कोई भी कम्पनी Google को Pay करना नह� चाहता था।
Mobile Market म� �वेश करने के �लए गूगल ने कई तरीक� से और कई कम्प�नय� के साथ �व�भन्न
�कार के करार �कए थे और iPhone के Launch के बाद Smart Mobile Device क� ज बरदस्त
सफलता को दे खते �ए वे सभी कम्प�नयां आपस म� �मल� और Mobile जैसी Wireless Devices हेतु
16
Android in Hindi
Standard Operating System बनाने के �लए एक Open Standard Define करने हेतु �े�रत �ए
ता�क भ�वष्य म� �जतने भी Devices बन�, वे एक �सरे के साथ आसानी से Communicate कर सक�
अ◌ौर �जस समय इस Open Standard के �लए �व�भन्न कम्प�नयां स�म्म�लत ��, उस समय तक गूगल
Wireless Devices से सम्बं�धत �व�भन्न �कार के ढेर सारे Patent Register करवा चुका था इस�लए
गूगल का Android Operating System एक Standard के �प म� Prototype क� तरह Use �कए
जाने हेत ु सबसे उपयुक्त, Advance व Developed OS था।
इस�लए जब हम Android Platform के �लए कोई App Design कर रहे होते ह�, तो हम वास्तव म�
काफ� High Quality के Applications Develop कर रहे होते ह� जो �क Android के Open Source
Standards पर आधा�रत होते ह� और हम ये Android Application, User को iPhone/iPad क�
तुलना म� काफ� कम क�मत पर अथवा मुफ्त उपलब्ध करवा रहे होते ह� क्य��क Android आधा�रत
Devices काफ� सस्ते होते ह�।
साथ ही Android Devices (Smart Phone, Tablet PCs, Watch, Glass, TV, etc...) Apple
द्वारा Provide �कए जाने वाले iOS Devices क� तुलना म� काफ� कम क�मत पर उपलब्ध होते ह�,
इस�लए हमारे Android Apps क� प�ंच iPhone/iPad Users क� तुलना म� कई गुना ज्यादा Users
तक होती है। प�रणामस्व�प हम हमारे Android App क� क�मत काफ� कम या Free रखते भी अन्य
तरीक� से काफ� Earning कर सकते ह�।
17
Android in Hindi
ले�कन Android आधा�रत Devices के �लए Program Develop करना थोडा मु�श्कल होता है,
क्य��क इन Devices क� Screen सभी Dimensions म� काफ� छोट� होती है, इनके Keypad काफ�
छोटे होते ह� जो �क Hardware Keypad के स्थान पर Software Keypad होते ह�। इन Devices से
सम्बं�धत Pointing Devices भी काफ� छोटे होते ह� और �जन लोग� के हाथ क� अंग�ु लयां बडी होती ह�,
उनके �लए ये छोटे Pointing Device, छोट� Screen व छोटे Touch Keypad Buttons काफ�
परेशानी पैदा करते ह�।
ले�कन Mobile Phone के Applications क� सबसे बडी �वशेषता भी यही होती है, �क वे एक ऐसी
Device म� होते ह�, �जन्ह� User अपनी सु�वधानुसार कभी भी और कह� भी उपयोग म� लेते �ए अपनी
�कसी Specific ज�रत को पूरा कर सकता है।
हालां�क Mobile Phones के कम व Slow CPU, RAM तथा कम Internal व External Storage
एक Developer के �प म� हमारे �लए काफ� Challenges पैदा करते ह�, क्य��क Desktop
Applications Develop करते समय ये Limitations वास्तव म� कोई Limitation नह� होते और
वतर्मान समय के Modern Computers के CPU, RAM व Storage कोई �वशेष परेशानी पैदा नह�
करते, ब�ल्क हम ज�रत के अनुसार बडी ही आसानी से इन्ह� Change या Upgrade भी कर सकते ह�,
ले�कन Mobile Devices के साथ ऐसा नह� �कया जा सकता क्य��क Mobile Devices म� CPU,
RAM व Internal Storage को PCB पर ही Directly Sold कर �दया गया होता है, इस�लए Mobile
Devices को आसानी से Upgrade करना सम्भव नह� होता ब�ल्क Device को Upgrade करने का
सीधा सा मतलब यही होता है �क Device को Change �कया गया है।
यानी Android Applications Develop करने के �लए के वल Core Java का Basic Knowledge
होना ही पयार्प्त है और य�द आपको Core Java का Basic Knowledge है, तो Android
Applications Develop करने के �लए आपको के वल Android Framework को ही समझना होता
है, जो �क पूरी तरह से Java Classes को एक व्यव�स्थत तरीके से Use करना मा� है।
18
Android in Hindi
यानी एक Desktop Application Develop करते समय हमारे Application के �व�भ� Aspects पर
हमारा पूरा Control होता है, �जसक� �व�भ� ज�रत� को Operating System द्वारा पूरा �कया जाता
है।
ले�कन हमारे Application का �कसी भी अन्य Application के साथ Directly कोई भी Interaction
नह� होता, हालां�क अन्य Applications भी उसी Operating System पर Run हो रहे होते ह� और वही
Operating System उन अन्य Applications क� �व�भ� Requirements को भी पूरा कर रहा होता
है।
जब�क य�द हम� हमारे Application Program द्वारा �कसी अन्य Application के साथ Interact करना
हो, तो ये सु�वधा हम� एक Separate API (Application Programming Interface) जैसे �क Java
Database Connectivity (JDBC) या �कसी अन्य Framework द्वारा �ाप्त होती है।
Android Applications भी कु छ इसी तरह से काम करता है, ले�कन Android Applications को थोडा
अलग तरीके से Package �कया जाता है, ता�क �जस Phone पर इन Applications को Run �कया
जाए, उन Phone Devices पर �कसी भी �कार का Software Crash जैसा Issue पैदा न हो।
यानी �त्येक Android Application Crash-Registrant हो, इस�लए उन्ह� एक Specific तरीके से
Package �कया जाता है, �ज सके �नम्नानुसार �व�भ� Important Parts होते ह�:
Views
User Screen पर जो कु छ भी दे खता है, उसे ही User Interface (UI) कहते ह� और User के सामने
कौनसा User Interface �दखाई दे गा, इसे Set करने क� �जम्मेदारी Activity क� होती है।
�कसी भी Android App म� User Interface मूल �प से दो Sub-Components के बने होते ह�,
�ज न्ह� Views व Layouts या ViewGroups के नाम से जाना जाता है।
�कसी Android App के User Interface (UI) Elements जैसे �क Button, Label, Text Box,
Radio Button, Checkbox आ�द को Views कहते ह� जो �क Android App का User
Interface Create करते ह�, ता�क User उस Android App से Interact कर सके ।
जब�क इन View Elements को Hold करने के �लए Container क� तरह काम करने वाले अन्य
Container Views को Layouts अथवा ViewGroups कहते ह�, क्य��क ये Containers वास्तव
म� Multiple UI Views को Hold करते �ए हमारे Android App के User Interface का Layout
Define करते ह� और क्य��क एक User Interface, Multiple UI View Elements का Group
होता है इस�लए इन Container Views को ViewGroup भी कहा जाता है जो �क Group of
Views को Represent करते ह�।
19
Android in Hindi
चूं�क Layout, अन्य UI View Elements का Container होते ह�, इस�लए ये मूल �प से �कसी
Android App के Screen पर �दखाई दे ने वाले View Elements के Pattern को Specify करते
�ए इस बात को तय करते ह� �क �व�भन्न User Interface Elements Screen पर Visually
(Height, Width, Position, etc…) �कस तरह से �दखाई द� गे।
उदाहरण के �लए LinearLayout Use करने पर इसके अन्दर Render होने वाले �व�भन्न User
Interface Elements Vertically (एक UI Element के ऊपर या नीचे �सरा) अथवा
Horizontally (एक UI Element के पहले या बाद म� �सरा) Stack होते ह� जब�क
RelativeLayout Use करने पर इसके अन्दर Render होने वाले �व�भन्न User Interface
Elements अपने Parent अथवा Sibling UI Element के संदभर् म� Render होते ह�।
Android Application के User Interface को XML Markups के माध्यम से ठ�क उसी तरह से
Define �कया जाता है, �जस तरह से हम �कसी Webpage पर �कसी Registration Form को
HTML के <form> Markup द्वारा Define करते ह�।
यानी �जस तरह से एक Web Browser का HTML Parser हमारे HTML Webpage के <form>
Element म� Specify �कए गए <button>, <input>, <label> आ�द HTML Markups को
Button, TextBox व Label जैसे GUI Controls के �प म� Render करता है, ठ�क उसी तरह से
एक Android App के User Interface को हम �जन XML Markups का �योग करते �ए Define
करते ह�, Android App का XML Parser उन XML Markups के आधार पर Android Device
क� Screen पर User Interface Controls को Display कर दे ता है।
<TextView
android:text="Hello World!"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
20
Android in Hindi
Create होने वाली View File मूलत: एक XML File होती है इस�लए �कसी भी XML File क� तरह
ही इसक� शु�आत भी �नम्नानुसार <?xml /> Element से होती है:
उदाहरण के �लए जब MainActivity.java नाम का Activity File Create होता है, तो उसके साथ
Create होने वाले Layout View File का नाम activity_main.xml होता है। इसी तरह से य�द हम
हमारे Current Android App म� SecondActivity नाम क� एक और Activity Create कर�, तो
Create होने वाली SecondActivity.java File के साथ जो Layout View File Create होता है,
उसका नाम activity_second.xml होता है।
चूं�क Android App का Layout व GUI Part, XML Markup आधा�रत Language द्वारा Create
�कया जाता है, �जसे Android Framework का XML Parser Parse करता है, इस�लए हम जब
कोई नया Activity Create करते ह�, उसके साथ Create होने वाले Layout View म� उपरोक्तानुसार
Specified <RelativeLayout … /> व <TextView … /> नाम के दो Elements होते ह� और
जैसा�क हमने पहले बताया �क Android App के User Interface मूलत: दो �कार के Sub-
Components Views व Layout या GroupViews के बने होते ह�।
अन्य शब्द� म� कह� तो Layout/GroupViews Element स्वयं Visually �दखाई नह� दे ता, ले�कन
Android App का User Interface कै सा �दखाई दे गा और User Interface के �व�भन्न UI
Elements (Button, Textbox, Checkbox, Radio Button, Images, etc…) Screen पर कहां
Place ह�गे और कै से �दखाई द� गे, इस बात को तय करके User Interface को Organize करने का
काम Layout/GroupViews Element द्वारा ही तय होता है।
21
Android in Hindi
Android Framework हम� कई �कार के Layout Views Provide करता है, जहां
<RelativeLayout … />, Android Framework द्वारा Automatically Generated Code का
Default Layout View होता है और हम हमारे Android App के �लए अपनी ज�रत के अनुसार
चाहे जो भी Layout View Use कर�, सभी म� सबसे पहले हम� �नम्नानुसार दो XML Namespaces
को Specify करना ज�री होता है, जो �क Android के View Parser को इस बात क� जानकारी दे ते
ह�, �क उन्ह� �कसी Mobile/Tablet Screen पर Android App के GUI को �कस �कार से Render
करना है:
xmlns:android=http://schemas.android.com/apk/res/android
xmlns:tools=http://schemas.android.com/tools
चूं�क जब Android Framework का UI Part पूरी तरह से XML File द्वारा Control होता है, तब
एक XML File म� Specify �कए जाने वाले �व�भन्न Elements क� कु छ न कु छ Descriptions होती
ह�, �जनके आधार पर XML Parser उस XML File क� Parsing करना है, यानी XML File को Run
करता है और Description के आधार पर ही Output Generate करता है। इसी Description को
XML Namespace के नाम से xmlns Attribute द्वारा Specify �कया जाता है।
उदाहरण के �लए C/C++ म� <stdio.h> नाम क� Header File म� scanf() नाम के Function को
प�रभा�षत (Define) �कया गया है, जो �क Keyboard से अपने वाले Input Data को �कस तरह से
Accept करना है, इस बात को Describe करता है।
प�रणामस्व�प जब हम ऐसे C/C++ Program को Compile करते ह�, �जसम� User Input Accept
करने के �लए scanf() Function को तो Use �कया गया है, ले�कन <stdio.h> Header File को
Include नह� �कया गया है, तो Compilation के दौरान C/C++ का Compiler, Program म� Use
22
Android in Hindi
�कए गए scanf() Function का Description खोजता है, ता�क उसे पता चल सके �क उस इस
Function के माध्यम से क्या और कै से करना है।
�कन क्य��क हमने हमारे C/C++ Program म� <stdio.h> नाम क� Header File को Include ही
नह� �कया है, इस�लए Compiler को पता ही नह� चलता �क scanf() नाम के Code को Execute
कै से करना है, फलस्व�प Program Compile नह� होता और Compiler हम� “Missing Symbol
: scanf” का Error दे त ा है।
ठ�क इसी तरह से उपरोक्त Code म� xmlns Attribute के माध्यम से हम Android Framework के
XML Parser को बताते ह� �क Current XML File म� �लखे गए XML Codes को कै से Parse
करना है।
xmlns:android=http://schemas.android.com/apk/res/android
xmlns:tools=http://schemas.android.com/tools
क्य��क Layout/View XML File क� Parsing के दौरान <TextView … /> XML Code �मलने
पर एक Label Control बनना चा�हए और <Button … /> XML Code �मलने पर Screen पर
एक Button �दखाई दे ना चा�हए, XML Parser को इस बात का Description, xmlns Attribute म�
Value के �प म� Specify �कए गए URI द्वारा ही चलता है और हम अपने View (User Interface)
को Create करने से सम्बं�धत �जतने भी Symbols (<RelativeLayout … />, <TextView … />,
<Button … />, आ�द) Use करते ह�, उन सभी का Description इसी URI से सम्बं�धत होता है।
य�द �बल् कु ल ही सरल शब्द� म� कह�, तो ये xmlns Attribute म� Value के �प म� Specify �कए गए
जाने वाले ये URIs एक �कार से C/C++ क� Header Files के समान ही होते ह� अत: य�द xmlns म�
इन्ह� Specify नह� �कया, तो User Interface नह� बनेगा, ठ�क उसी तरह से, �जस तरह से य�द
<stdio.h> Header File को अपने C/C++ Program म� Include नह� �कया, तो Keyboard से
Input Accept नह� होगा।
XML Specification हम� एक ही XML File म� एक से ज्यादा URI से सम्बं�धत Symbols यानी
XML Elements को एक ही XML File म� ठ�क उसी तरह से Use करने क� सु�वधा Provide करता
है, �जस तरह से हम �कसी C/C++ Program म� एक से ज्यादा Header Files को Include करते
�ए उनक� Functionalities को समान Program File म� �ाप्त कर लेते ह�। ले�कन �कसी XML File
म� एक से ज्यादा URI से सम्बं�धत Symbols को Use करने के �लए हम� xmlns के Prefix Concept
का �योग करना पडता है।
23
Android in Hindi
हम समझ सकते ह� �क दोन� ही URI Definitions म� <red> Symbol Exist है, ले�कन XML File म�
जब हम <android:red … /> XML Element Use करते ह�, तो Parsing के बाद Output म� एक
Red Line Render होता है, जब�क <tools:red … /> XML Element Use करते ह�, तो
Parsing के बाद Output म� एक Error Message Render होता है और हम इन Prefixes को तभी
Use कर सकते ह�, जब�क हमने Prefix युक्त Namespaces को Specify �कया हो। य�द हमने इन्ह�
Prefixed तरीके से Specify न �कया हो, तो उस �स्थ�त म� एक से अ�धक Namespaces म� समान
Symbol होने पर XML Parsing के दौरान Name Conflict होगा।
चूं�क Android Platform व इसका Development Environment दोन� अभी पूरी तरह से Stable
नह� ह� और Google इनम� समय-समय पर उपयुक्त Modifications करके Different Defaults Set
करता रहता है। इसी�लए Android Studio 2.2 तक जब भी कोई नया Android Project Create
करते थे, Default �प से RelativeLayout आधा�रत Layout ही Create होता था। ले�कन
Android Studio 2.2 के बाद के Versions वाले Android Studio म� हम जब भी कोई नया
Project Create करते ह�, तो Default Layout के �प म� RelativeLayout के स्थान पर अब
ConstraintLayout Create होता है �जसका XML Codes �नम्नानुसार होता है-
24
Android in Hindi
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</ RelativeLayout>
25
Android in Hindi
चूं�क Android अभी पूरी तरह से �वक�सत Platform नह� है ब�ल्क ज�रत के अनुसार �नरंतर
�वकासशील है इस�लए Google समय-समय पर Android Studio के �व�भन्न �कार के Defaults
को भ�वष्य म� भी Change करेगा। इस�लए अब ConstraintLayout ही हम�शा के �लए Android
Studio का Default Layout रहेगा, ऐसा मान लेना ठ�क नह� है ब�ल्क हो सकता है �क Google इस
ConstraintLayout को भी और Improve करके कु छ और नए तरह का Layout Define कर दे जो
�क आने वाले भ�वष्य म� Android Studio का Default Layout बन जाए।
अत: Google जब भी कोई नया Recommendation दे , हम�शा उसी को Follow करना अपने
Android App को Long Term तक Maximum Android Devices के �लए Useful व
Supported बनाए रखने का एकमा� तरीका है।
Activity
Activity एक User Interface (UI) Concept होता है जो सामान्यत: �कसी Android
Application क� एक Single Screen को Represent करता है। इस User Interface Screen
पर ज�रत के अनुसार एक या अ�धक Views हो सकते ह� ले�कन Views का होना Compulsory
नह� होता। यानी एक ऐसा Android App भी हो सकता है �क �जसक� Activity म� कोई भी View न
हो।
�कसी Activity को हम हमारे Android App का एक ऐसा Part मान सकते ह�, जो User को कोई
Action Perform करने म� मदद करता है। सरल शब्द� म� कह� तो Activity, User Interface के �प
म� वह माध्यम होता है, जो User Interactions के कारण Perform होने वाले �व�भन्न Actions को
Handle करता है।
उदाहरण के �लए जब User �कसी Android App क� �कसी Screen पर �दखाई दे ने वाले �कसी
Button को Tap करता है, तो उस Tapping Action के Response म� Perform होने वाले Task
को इसी Activity Part म� Specify व Implement �कया जाता है।
मानलो �क हम चाहते ह� �क जब User �कसी Button को Click करे, तो वह Android App Close
हो जाए।
इस ज�रत को पूरा करने के �लए Button Click Action के Response म� Android App को
Close करने से सम्बं�धत Programming Codes (Program Logics) को Activity के अन्तगर्त
ही �लखा जाता है, जो �क एक Java Class होती है।
क्य��क Android App क� �त् येक Activity एक Java Class File ही होती है �जसके Program
Codes द्वारा इस Java Class File से Linked Layout View File के User Interface द्वारा जो
भी Action Perform �कया जाता है, उसे Linked Activity Class File द्वारा ही Handle �कया
जाता है।
�कसी Activity के अन्तगर्त Data View करना, Data Create करना व Data Edit करने से सम्बं�धत
ज�रत� को पूरा �कया जाता है। सरल शब्द� म� कह� तो CRUID (Create, Read, Update, Insert,
Delete) Operations को Android App के Activity Part म� Perform �कया जाता है।
26
Android in Hindi
सरल शब्द� म� कह� तो कोई भी Activity �बना User Interface के नह� हो सकता। �फर भले ही User
Interface, View नाम क� एक Separate XML File के �प म� हो अथवा User Interface को
Activity Class म� ही Hard Code �कया गया हो।
साथ ही जैसा�क हमने पहले कहा �क �कसी भी Android App म� एक या अ�धक Activity हो सकते
है, ले�कन सभी Activities म� एक ऐसा Activity होता है, जो �क उस Android App का Entry
Point होता है और एक Android App म� ऐसा के वल एक ही Activity हो सकता है, �जसे सामान्यत:
Launcher Activity अथवा Main Activity के नाम से Refer �कया जाता है। यही वह Activity
होता है, जो उस Android App के Start होते ही सबसे पहले Screen पर �दखाई दे ता है।
�कसी भी Android App क� �त् येक Activity का एक �न��त Life Cycle भी होता है, �ज सके
�वषय म� हम आगे �वस्तार से जान�गे।
Activity मूलत: एक Java Class File होता है। इस�लए य�द हम चाह� तो User Interface Create
करने से सम्बं�धत �व�भन्न Program Logics को इसी Class File म� Hard Code के �प म� �लख
सकते ह�।
Fragment
जब �कसी Android App क� Screen इतनी बड़ी हो �क उसक� सभी Functionalities को एक
Single Activity म� Manage करना क�ठन हो, तो इस �स्थ�त म� उस बड़ी Activity को कई छोट�–
छोट� Sub-Activities म� Divide कर �दया जाता है। इन्ह� छोट�–छोट� Sub-Activities को
Fragments कहते ह� और एक Activity समान समय पर एक या अ�धक Fragments को Screen
पर Display कर सकता है।
27
Android in Hindi
Fragments क� सबसे बडी �वषेशता यही है �क एक बार Create कर लेने के बाद हम �जतनी चाह�
उतनी Activities म� इन्ह� बार-बार Reuse कर सकते ह�। साथ ही Activity क� तरह ही �त् येक
Fragment का स्वयं का भी एक अलग Lifecycle होता है और हर Fragment स्वयं स्वतं� �प से
Separate Input Events Receive कर सकता है और उसे Response कर सकता है, �जनका
Main Activity से कोई Direct संबंध नह� होता।
�कसी Fragment को हम�शा �कसी न �कसी Activity म� Embedded होना ज�री होता है और �जस
Activity म� कोई Fragment Embedded होता है, उसक� Lifecycle का Direct Effect,
Fragment क� Lifecycle पर पड़ता है। यानी Parent Activity क� Lifecycle का End हो जाए, तो
Fragment क� Lifecycle चाहे Run ही क्य� न हो रही हो, उसका भी End हो जाता है। इसी तरह से
जब Parent Activity Pause होता है, तो उसके सभी Embedded Fragments भी Pause हो
जाते ह�।
हालां�क जब Activity Resumed यानी Running Stat म� होता है, तो उस �स्थ�त म� उसके सभी
Fragments को हम स्वतं� �प से Access व Manipulate कर सकते ह�। यानी हमारी ज�रत के
अनुसार एक या अ�धक Fragments को अपनी �कसी भी Activity म� स्वतं� �प से Add/Remove
कर सकते ह�।
�कसी Fragment को अपनी Activity Layout म� Insert करने के �लए हम� हमारे Activity क�
Layout File म� <fragment> Element को Existing ViewGroup के अन्दर ही Use करना
होता है अथवा अपने Application क� Code File म� Code के माध्यम से भी इसे Add �कया जा
सकता है, �जसके बारे म� हम आगे जान�गे।
हालां�क हम हमारी ज�रत व इच्छानुसार �कसी Fragment को अपनी Activity म� Add कर सकते ह�,
ले�कन �कसी भी Android App म� इसे Compulsory �प से Use करना ज�री नह� होता और �बना
Fragment का �योग �कए �ए भी हम हमारा पूरा Android App Create कर सकते ह�। साथ ही जब
हम �कसी Fragment को Use करते ह�, तब ये भी ज�री नह� होता �क हमारे Fragment का UI
Part भी Create �कया जाए। य�द हम चाह�, तो Fragment को �बना UI के एक Invisible
Background Worker के �प म� भी Create कर सकते ह�, जो �क हमारी Main Activity के �लए
ज�री �कसी Functionality को Invisibly Fulfill करता हो।
Intents
Intents वास्तव म� System Messages होते ह�, जो �क Android Platform को Device के अन्दर
Running रखते ह� और उस Android Platform पर Run होने वाले �व�भ� Applications को
�व�भ� �कार के Events के �लए Notify करते ह�।
यानी �जस �कार से हमारे Computer System म� Operating System �व�भ� �कार के
Hardware व Software Events को Trigger करके Applications को कोई Specific Task
Complete करने के �लए Notify करता है, ठ�क उसी तरह से Android Device म� �कसी भी �कार
के Hardware State Change (जैसे �क SD Card को Device म� Insert या Remove करने)
अथवा Software State Change (जैसे �क SMS के �प म� नए Incoming Data के आने अथवा
28
Android in Hindi
जाने या �फर Application के Menu Option को Touch करने, आ�द) के �प म� �व�भ� �कार के
Events के Trigger होने पर भी Android System, Android App को �कसी Specific Task के
Complete होने के �लए Notify करता है।
अन्य शब्द� म� कह� तो �जन्ह� अन्य Operating Systems म� Messages या Events के नाम से
जाना जाता है, उन्ह� ही Android Platform के अन्तगर्त Intents कहते ह� और हम न के वल �कसी
Intent को Respond कर सकते ह�, ब�ल्क अपनी ज�रत के अनुसार नया Intent Create भी कर
सकते ह� और उन Intents के Response म� �कसी Specific Activity को Launch भी कर सकते ह�
अथवा इस बात को तय कर सकते ह� �क वह Situation कब आएगी, जब कोई Specific Intent
Trigger होगा।
उदाहरण के �लए य�द हम� �कसी Intent को उस समय Trigger करना हो जब�क वह �कसी Specific
Location के 200 Meter के दायरे म� आए, तो इस �कार के Intent को Schedule करने के �लए
हम� हमारे स्वयं के Intent Create करने क� ज�रत पडती है।
उदाहरण के �लए मानलो �क हमारे Android App म� Main Activity पर एक Button है, �जसे Click
करने पर एक नया Alert Box Display होता है। इस �स्थ�त म� एक Button के Click होने पर
Response �प म� Display होने वाला Alert Box एक �कार का Intent होता है।
Intents का �योग करते �ए हम एक Activity के Data को �सरी Activity बीच Pass करने का काम
करते ह�। हम अपनी �कसी Specific ज�रत को पूरा करने के �लए एक Intent के माध्यम से ही सम्पूणर्
Current Activity को भी एक Object क� तरह �सरी Activity पर Pass कर सकते ह�। इतना ही नह�
हम चाह� तो Intents का �योग करते �ए �कसी नए Android Application को भी Open कर सकते
ह� अथवा �कसी Service को Launch/Activate कर सकते ह�, जो �क Background म� Run होते
�ए Current Android Application क� �कसी Requirement को Invisibly पूरा करने लगता है।
सरल शब्द� म� कह� तो Intent ही वह तरीका ह�, �जनके माध्यम से Current Android Application
क� Current Activity के �कसी Trigger होने वाले Event के Response म� Current Application
अथवा �कसी अन्य Android Application क� �कसी �सरी Activity को Launch कर सकते ह�।
जब�क सामान्यत: �कसी Intent को Current Activity के User Interface म� �स्थत �कसी UI
Control को Click करने पर Trigger होने वाले Click Event के Response म� ही Fire �कया जाता
है।
Intents का �योग सामान्यत: कोई SMS Send करने, �कसी Service को Start करने, �कसी
Activity को Launch करने, �कसी Webpage को Display करने, Contact List को Display
करने, कोई Phone Number Dial करने अथवा �कसी Phone Call को Receive करने जैसी
ज�रत� को पूरा करने के �लए �कया जाता है।
Intents को हम�शा Android App द्वारा ही Initiate �कया जाता हो, ऐसा ज�री नह� है, ब�ल्क इन्ह�
Android Operating System द्वारा भी Initiate �कया जाता है ता�क वह हमारे Android
Application को कोई Specific Notification दे सके ।
29
Android in Hindi
उदाहरण के �लए जब आप �कसी Android App को Use कर रहे होते ह�, उसी समय कोई SMS
आता है तो आपको उस नए आने वाले SMS का जो Notification �ाप्त होता है, वह एक Intent के
माध्यम से ही �ाप्त होता है, ले�कन इस Intent को �कसी Application द्वारा नह� ब�ल्क Android OS
द्वारा Initiate �कया गया होता है।
Intents, Implicit व Explicit यानी Automatic व Manual दोन� तरीक� से Initiate हो सकते ह�।
उदाहरण के �लए जब आप अपने Android Device के Mail App म� आए �ए �कसी Email म� Exist
�कसी URL को दे खने के �लए उसे Tap करते ह�, तो आपके Intention को समझते �ए उस URL से
Associated Webpage को �दखाने के �लए आपके Android Device का Operating System
स्वयं Intent के माध्यम से Web Browser Application को Launch कर दे ता है क्य��क Android
OS को पता है �क एक URL को Web Browser द्वारा ही दे खा जा सकता है। इस �स्थ�त म� Create
होने वाला Intent, Android System द्वारा Automatically (Implicitly) Create होता है।
जब�क अपने Android App के �कसी Button को Click करने पर Web Browser Application
को Launch के �लए, हम� हमारे Intent को Manually Create करके Execute करना पडता है और
इस Situation म� हमारा Intent, Trigger होने वाले Action (Event) और उसके Response म�
Execute होने वाले Action Handler या Event Handler के साथ Loosely Coupled रहता है।
Services
Activities का Lifetime काफ� कम होता है और वे कभी भी Shut-Down हो सकते ह� अथवा
ज�रत के अनुसार उन्ह� Close �कया जा सकता है। जब�क Services वे Background Programs
होते ह�, जो User क� जानकारी के �बना Background म� Continually Run होते रहते ह�।
30
Android in Hindi
उदाहरण के �लए जब हम हमारे Android Device पर कोई Music सुन रहे होते ह�, उसी दौरान हम
अपने WhatsApp Application पर �कसी को Reply भी कर रहे होते ह� अथवा Hangone App या
Facebook App पर �कसी के साथ Chat भी कर रहे ह�, ले�कन हमारा Music, WhatsApp,
Facebook या Hangout App को Use करते समय भी Continuously Run हो रहा होता है,
क्य��क वह हमारी जानकारी के �बना Background म� एक Service क� तरह Run हो रहा होता है।
Services क� यही �वशेषता है �क उनका कोई User Interface होना ज�री नह� होता और �बना
User Interface के भी वे Background म� Invisibly Run होते �ए हमारी �कसी Requirement
को पूरा कर रहे होते ह�।
चूं�क Services के �लए कोई User Interface होना ज�री नह� होता, इस�लए Services के Start,
Activate, Pause, Resume या End आ�द से सम्बं�धत Stat Related Information को
Notifications के माध्यम से Handle �कया जाता है।
31
Android in Hindi
1. पहले तरीके के अन्तगर्त �कसी Service को Activity के माध्यम से Create �कया जाता है।
इस �कार क� Services, उस Activity के Stop होने के साथ ही समाप्त हो जाती ह�, �जसके
माध्यम से इन्ह� Create �कया गया होता है।
2. जब�क �सरे तरीके के अन्तगर्त इन Activities को स्वतं� �प से Create �कया गया होता है,
�जसक� वजह से ये �कसी Application क� �कसी Activity के साथ Bound नह� होते,
प�रणामस्व�प �कसी Application के Start या Stop होने से इनके Run होने पर कोई
�भाव नह� पड़ता और एक बार Start होने के बाद ये Background म� Invisibly
Continually Run होते रहते ह�।
इसी बात को य�द हम �सरे तरीके से कह� तो एक Android System, Local Service व
Remote Service के �प म� दो �कार क� Services Define कर सकता है। Local Service के
�प म� जो Service Create क� जाती है, उसे Current Device का के वल वही Applications Use
कर सकता है, �जसने Service को Create �कया होता है, जब�क Remote Service के �प म� �जस
Service को Create �कया गया होता है, उसे उस Device के �व�भन्न Applications अपनी ज�रत
के अनुसार Use कर सकते ह�।
अत: Local Service को हम �कसी Activity द्वारा �कसी Application के माध्यम से Create क� गई
Service कह सकते ह�, जब�क Remote Service को हम एक स्वतं� �प से Create क� गई
Service कह सकते ह�।
Content Providers
ऐसे Data, �जन्ह� Device के Multiple Applications द्वारा Access �कया जाना हो, को इन
Applications हेत ु Access करवाने के �लए �जस तरीके का �योग �कया जाता है, उसे Content
Provider कहते ह�।
यहां Content Providers द्वारा Provide �कए जाने वाले Content को हम �कसी भी �कार का ऐसा
Content मान सकते ह�, �जसे हमारे Application म� Use �कया जा सकता हो। उदाहरण के �लए
RSS Feed, Local SQL Database, �कसी Text File म� Stored Data आ�द, सभी Content
के Example ह�, क्य��क हम इन्ह� हमारे Android Device के �कसी भी Application म� Android
Architecture म� Defined Content Providers के माध्यम से Use कर सकते ह�।
उदाहरण के �लए हमारे Android Device का Contacts App, एक Content Provider का Best
Example है क्य��क हम हमारे �कसी भी SMS या Phone Dialer Android App म� इस Contact
App के माध्यम से Stored Contact List को Access कर सकते ह�।
32
Android in Hindi
इसी �कार से य�द हम हमारे Android App के Data को Store करने के �लए SQLite Database
Use करना चाहते ह�, तो SQLite Database को Access व Manipulate करने के �लए Android
Architecture के Content Providers को Use कर सकते ह�, जो �क हम� एक Developer के
�प म� �कसी भी �कार के Content को Access/Manipulate करने हेतु आसान Encapsulated
Access Provide करता है।
इस �कार से Content Providers वास्तव म� हम� हमारे Android Device म� Stored Data को
Android Applications के माध्यम से Share करने क� सु�वधा Provide करता है, जो �क Android
Architecture द्वारा Define �कया गया एक Standard Mechanism है, �जसम� Data Sharing
हेत ु Underlying Storage, Structure व उनके Implementation को Expose करना ज�री नह�
होता।
AndroidManifest.xml
�त् येक Android App म� AndroidManifest.xml नाम क� एक Configuration File भी होती है,
�जसम� Android App से सम्बं�धत सभी Activities को Define व Specify �कया गया होता है साथ
ही Main Activity अथवा Android App क� Launcher Activity को भी इसी
AndroidManifext.xml File म� Mark �कया जाता है। यानी इसी File म� इस बात को तय �कया जाता
है �क हमारे Android App क� �व�भन्न Activities म� से कौन सी Activity Screen पर सबसे पहले
Display होगी।
Storage
हम हमारे Application से सम्बं�धत ऐसे Elements जो �क Change नह� होते जैसे �क Icons,
Help Files आ�द को अपने Application क� Data Files के �प म� Package कर सकते ह�। साथ
ही �जस Device पर हमारा Android Application Run होना होता है, उस Device पर Database
या Files के �लए कु छ Extra Space भी Reserved कर सकते ह�। इस Reserved Space पर उस
Database या File को Store �कया जाता है, �जसम� वे Data होते ह�, �जन्ह� User स्वयं हमारे
Android Application को Use करते समय उसम� Input करता है अथवा य�द User SD Card के
�प म� Extra Storage Use करता है, तो उस Extra Storage म� Application से सम्बं�धत Data
Files को ज�रत के अनुसार Read व Write �कया जा सकता है।
33
Android in Hindi
Network
Android Devices सामान्यत: Internet Ready होते ह�। यानी इन Devices पर Use होने वाले
ज्यादातर Applications �कसी न �कसी तरह से Internet से Connected रहते �ए ही Operate व
Update होते ह�। इस�लए हम हमारे Android Application म� ज�रत के अनुसार Java Sockets
का �योग करते �ए अथवा WebKit-Based Web Browser Widget को Embed करते �ए अपने
Application म� Internet Feature को Use कर सकते ह�।
Multimedia
Android Devices सामान्यत: Multimedia Ready भी होते ह�। यानी ये Devices Audio/Video
को Record व Playback करने क� क्षमता से यु� होते ह�। हालां�क Different Devices म� इन
Multimedia Devices क� Capabilities व Qualities म� अन्तर हो सकता है, ले�कन हम हमारे
Application द्वारा इस बात का पता लगाने के �लए Device क� Query कर सकते ह� �क उसम�
Audio, Video, Camera आ�द से सम्बं�धत क्या-क्या Capabilities Exist ह�।
Location Services
Android Devices सामान्यत: Location Providers जैसे �क GPS व Cell Triangulation
जैसी Services को Access करने म� सक्षम होते ह�, �जसक� वजह से ये Device इस बात को
Identify कर सकते ह� �क वे पूरी ��नयां म� धरती के �कस �हस्से पर ह� और इस बात क� जानकारी को
हम हमारे Application म� उपयोग म� ले सकते ह�।
साथ ही हम Location Data का उपयोग अन्य तरीक� से करते �ए Location का Map भी Display
कर सकते ह�, �जसक� वजह से Devices के Movements को Track करते �ए उस �स्थ�त म�
Device क� Location का पता लगा सकते ह�, जब�क वह चोरी हो गया हो अथवा खो गया हो।
Phone Services
चूं�क Android Devices मूलत: Phone ही होते ह�, इस�लए हमारा Application इन Devices पर
New Phone Calls को Initiate कर सकता है, SMS Messages Send/Receive कर सकता है
और वो सबकु छ कर सकता है, जो एक Modern Telephone के साथ �कया जा सकता है।
ले�कन सम्पूणर् Android Architecture अपने आप म� काफ� Technical व Theoretical है, इस�लए
इस Architecture के �व�भन्न Elements को �वस्तार से समझने से पहले हम एक Basic Android
App Create करना सीख�गे, ता�क जब हम Android Architecture के �व�भन्न Elements को
Discuss कर�, तो उन्ह� बेहतर तरीके से समझने के �लए छोटे -छोटे Android Apps Create करते �ए
Practical Approach Follow कर सक� क्य��क Practical Approach को Follow करने से ही App
Development का Confidence आता है।
34
Android in Hindi
�कसी IDE को Use करना होता है, ता�क हमारा Development Speed Fast हो सके उसी तरह से
Android App Develop करने का काम भी हम �कसी IDE का �योग करते �ए ही कर�गे।
क्य�?
हालां�क हम चाह� तो �बना कोई IDE Use �कए �ए भी मा� Notepad जैसे Text Editor का �योग
करते �ए Android Application Develop कर सकते ह�, ले�कन जब हम इस �कार के Manual
Approach का �योग करते �ए अपना Application Create करते ह�, तब अपने Android App को
Compile, Run, Build, Debug, Test व Deploy करने से सम्बं�धत सारे काम हम� Command
Line Tools के माध्यम से Manually करने पड़ते ह�, �जससे हमारे App के Develop होने क� Speed
काफ� कम हो जाती है।
जब�क य�द हम अपने Android App को �कसी IDE का �योग करते �ए Develop करते ह�, तो उस
�स्थ�त म� अपने App को Compile, Run, Build, Debug, Test व Deploy करने से सम्बं�धत �व�भन्न
काम� को ये IDE स्वयं अपने स्तर पर Automatically कर दे ते ह�। प�रणामस्व�प हम हमारा पूरा ध्यान
अपने App को Develop करने पर लगा सकते ह�, �जससे हमारे App Development क� Speed
काफ� तेज हो जाती है।
एक और महत् वपूणर् बात ये है �क हम चाहे �जस �कसी भी Operating System के �लए Application
Develop कर�, हर Operating System का काम करने का अपना अलग तरीका होता है �ज सके माध्यम
से वह Underlying Hardware के साथ Interact करता है और Device के �व�भन्न Hardware को
Access व Manipulate करने के �लए �जन Functions क� ज�रत होती है, सामान्यत: उन्ह�
Assembly या C/C++ जैसी Hardware Level क� Programming Languages म� ही Define
�कया गया होता है।
Windows Operating System के �लए Application Software Develop करने हेतु Microsoft
Company जो API Provide करता है, उसे Win32 API के नाम से जाना जाता है। Java
Programming Language का �योग करते �ए Application Software Develop करने हेतु
Oracle Company द्वारा हम� APIs के साथ Tools का जो Set �ाप्त होता है, उसे JDK के नाम से
जाना जाता है। ठ�क इसी तरह से Android Platform के �लए Apps Develop करने हेतु Google भी
हम� APIs के साथ कु छ Tools Provide करता है, �जन्ह� Android SDK के नाम से जाना जाता है।
35
Android in Hindi
36
Android in Hindi
Development
Environment
37
Android in Hindi
इस�लए Android Application Develop करते समय सबसे पहले Step के �प म� हम� हमारे
Computer System पर Java SDK को Install व Setup करना होता है, ता�क हम हमारे Android
Application के �लए Java Classes Create कर सक� , �जन्ह� Android Platform द्वारा .apk
Package File के �प म� Dalvik Bytecode म� Compile करने के �लए Use �कया जा सके ।
चूं�क Java SDK, Oracle Company द्वारा Free Provide �कया जाता है। इस�लए सबसे पहले
Oracle क� Website से Java SE Development Kit (JDK) के Latest Version को
Download करके अपने Computer System पर Install करना होता है।
यहां ये बात ध्यान रखना ज�री है �क हम� पूरा Java SDK Install करना होता है के वल JRE नह�,
क्य��क Android Application, Java Compiler (javac) व Core Classes का �योग करते �ए
ही Android Applications को Dalvik Bytecode म� Compile करता है।
चूं�क, Android Application पूरी तरह से Java Source Codes पर आधा�रत होते ह�, इस�लए
Android Application तभी Develop �कया जा सकता है, जब�क आपको Java Programming का
अच्छा ज्ञान हो। इस�लए य�द आपको Java Programming का ठ�क-ठ�क ज्ञान न हो, तो बेहतर यही
होगा �क आप पहले Java क� Basic Programming सीख� �जसम� हमारी अन्य पुस्तक “Java in
Hindi” आपक� काफ� मदद कर सकती है।
हालां�क आपको कम से कम �नम्न Java Concepts का Basic ज्ञान होना ज�री होता है, तभी आप
एक Android Application Develop कर सकते ह�:
38
Android in Hindi
Android SDK का Installation वास्तव म� दो �हस्स� म� Divide होता है, जहां पहले �हस्से के अन्तगर्त
हम� Android Platform के Base Tools को Install करना होता है और �सरे �हस्से के अन्तगर्त
Android Platform से सम्बं�धत अन्य Add-On को।
39
Android in Hindi
चूं�क हमारे Computer System पर Windows Operating System Installed है, इस�लए हमने
उपरो� �च�ानुसार Windows Operating System के �लए Recommend Executable File को
Download �कया है। हालां�क हम इसी Webpage पर �दखाई दे ने वाले “Android Studio Bundle
Package” को भी Download कर सकते ह�, जो �क वास्तव म� Google Provided IDE के साथ सभी
ज�री SDK Tools यु� पूणर् Package होता है और इस IDE का �योग करते �ए अपना Android
Development कर सकते ह�।
ले�कन SDK Tools को Manually Install and Setup करने के बारे म� जानना हमारे �लए काफ�
उपयोगी सा�बत होता है, क्य��क इस Manual तरीके से Android SDK को Setup करके हम �कसी भी
IDE या Text Editor को Android Development के �लए स्वतं� �प से Use करने के बारे म� बेहतर
तरीके से समझ लेत े ह� व अपने Application को Different IDEs व Text Editors का �योग करते �ए
Develop, Compile, Test व Debug करने क� क्षमता �ाप्त करते ह�, जो �क हम� �कसी Specific
IDE या Editor से Bound नह� करता।
साथ ही Manual Configuration व Installation सीख लेने के बाद हम बडी ही आसानी से �कसी भी
IDE को आसानी से उपयोग म� लेत े �ए Android Development कर सकते ह�। ले�कन य�द हम सीधे ही
�कसी IDE के माध्यम से Development शु� करते ह�, तो कई बार हम� IDE Configuration व Setup
के दौरान ब�त सारी परेशा�नय� का सामना करना पडता है, क्य��क हम� पता ही नह� होता �क IDE
Internally �कस �कार से Android SDK, Java SDK, Text Editor आ�द को Combined �प म�
�प करते �ए Application Development के �लए उपयु� Environment Create करता है।
40
Android in Hindi
चूं�क हम Android SDK को Windows Operating System के �लए Manually Install करना
चाहते ह�, इस�लए जैसे ही हम Windows के �लए Download �कए गए Android Installer को
Execute करते ह�, हमारे सामने �नम्न �च�ानुसार Dialog Box Display होता है:
इस Dialog Box पर �दखाई दे ने वाले “Next >” Button को Click करना होता है, �ज सके
प�रणामस्व�प �नम्नानुसार अगला Wizard Screen Display होता है, जो �क हमारे Computer
System पर Installed Java Interpreter के Path को Retrieve करता है:
41
Android in Hindi
य�द हमने पहले से ही Java SDK को Install न �कया हो, तो Android SDK Tools Setup
Wizard का इसी Screen पर अन्त हो जाता है, क्य��क Android SDK Tools का Installation करने
से पहले Computer System पर Java SDK का Install होना ज�री होता है।
अब हम� इस Wizard Screen पर �दखाई दे ने वाले “Next >” Button को �फर से Click करना होता है,
�ज सके प�रणामस्व�प �नम्नानुसार अगला Wizard Screen Display होता है:
इस Screen पर Appropriate Radio Button को Select करके �फर से “Next >” Button को
Click करना होता है, �ज सके प�रणामस्व�प �नम्नानुसार अगला Wizard Screen Display होता है:
42
Android in Hindi
Destination Folder को Specify करने के बाद हम� �फर से “Next >” Button को Click करना होता
है, �ज सके प�रणामस्व�प �नम्नानुसार अगला Wizard Screen Display होता है:
जहां हम� Finally “Install” Button को Click करना होता है, �ज सके प�रणामस्व�प �नम्न �च�ानुसार
Android SDK Tools का Installation होने लगता है:
43
Android in Hindi
Android SDK Tools का Installation पूरी तरह से Complete होने के बाद हम� �फर से “Next >”
Button को Click करना होता है, �ज सके प�रणामस्व�प �नम्नानुसार अगला Wizard Screen
Display होता है:
इस Screen से हमारे Android SDK Installation का �सरा Part शु� होता है। यानी इस Wizard
Screen पर �दखाई दे ने वाले Checkbox “Start SDK Manager (to download system images,
etc.)” को Checked रखते �ए “Finish” Button पर Click करने पर Android SDK Tools का
44
Android in Hindi
SDK Manager Program Execute होता है, जो �क हमारे Android Development के �लए ज�री
अन्य Add-Ons, Packages, Images आ�द को Download करने के �लए उपयोगी होता है।
जैसे ही Android SDK Manager Program Execute होता है, �नम्न �च�ानुसार Android
Development के �लए ज�री सभी Core Packages को Automatically Select कर लेता है:
45
Android in Hindi
यानी ये Manager उन Minimum Packages को Automatically Select कर लेता है, �जन्ह� Install
�कए �बना Simplest Android Application भी Develop नह� �कया जा सकता।
इस�लए इन Minimum Android Packages को Install करने के �लए हम� इस Android SDK
Manager Window पर �दखाई दे ने वाले “Install 17 packages…” Button को Click करना होता
है, �ज सके प�रणामस्व�प �नम्न �च�ानुसार अगला Screen Display होता है:
46
Android in Hindi
इस Dialog Box पर हम� “Accept License” Radio Button को Select करके “Install” Button
को Click करते �ए अपने सभी Selected Packages को Download करके Install कर सकते ह�।
हम� हम�शा Latest Android SDK Tools, Android SDK Platform-Tools व Android SDK
Build-Tools को ही Download करना चा�हए, हालां�क हम �कसी भी Version के API को
Download कर सकते ह�, �जससे Supported Android Platform के �लए हम हमारा Application
Develop करना चाहते ह�।
उदाहरण के �लए य�द हम API 8 Download करते ह�, तो हम Android 2.2 तक के Device के �लए
अपना Application Develop कर सकते ह�। जब�क य�द हम API 15 Download करते ह�, तो हमारा
Android Application Run होने के �लए कम से कम वह Device Use करना पडेगा, �जस पर
Android 4.0 Installed हो।
इन तीन� Folders को Path Environment Variable म� Set करने के �लए सबसे पहले हम�
Command Window को "Administrator" Mode म� Open करना होता है। यानी Command
Window के Icon पर Right Click करना होता है �ज सके प�रणामस्व�प �नम्न �च�ानुसार एक Popup
Menu Display होता है:
47
Android in Hindi
और इस Popup Menu म� �दखाई दे ने वाले "Run as administer" Option को Click करना होता,
�ज सके प�रणामस्व�प �नम्न �च�ानुसार एक Command Prompt Window Open होता है:
इस Command Prompt म� हम� �नम्नानुसार SETX Command Execute करने होते ह�:
जैसे:
जैसे ही हम इन Commands को Execute करते ह�, हमारे Computer System के "Path" नाम के
Global Environment Variable म� "tools", "platforms" व "platform-tools" नाम के तीन�
Folders Set हो जाते ह�, �जनम� Exist �कसी भी Command Line Tools को अब �कसी भी Drive
से और �कसी भी Directory से Directly Execute �कया जा सकता है।
इस बात का पता लगाने के �लए �क ये तीन� Folders Global Path Environment Variable म� Set
�ए या नह�, हम� एक नया Command Prompt Window Open करना होता है क्य��क Current
Command Prompt Window म� �कया गया Change हम� इसी Window म� Reflect नह� होता।
इस�लए जब हम नया Command Prompt Window Open करके उसम� Current Path को Echo
करते ह�, तो हम� �ाप्त होने वाला Output �नम्नानुसार होता है:
48
Android in Hindi
हम दे ख सकते ह� �क उपरो� �च� क� अ�न्तम दो Highlighted Lines म� वही Path �दखाई दे रहा है,
�जसे हमने �पछले Command Window द्वारा SETX Command के माध्यम से Add �कया था।
हमारे Android से सम्बं�धत Tools, Path Variable म� Set �ए या नह� इस बात का पता लगाने का
एक तरीका और है �ज सके अन्त गर्त य�द हम Command Prompt Open कर� और उसम� “adb
devices” Command Enter कर�, तो हम� �नम्नानुसार Output �ाप्त होता है:
यानी हमारा Android-Tools पूरी तरह से Path Environment Variable म� Set है, इसी वजह से हम
Android SDK के "tools" Directory म� Exist adb.exe File को उपरो� �च� म� दशार्ए अनुसार
Connected Devices क� List �ाप्त करने हेतु Execute कर पा रहे ह�।
हालां�क य�द हम चाह� तो अपने "Path" नाम के Environment Variable को GUI तरीके से भी Set
कर सकते ह�, �ज सके अन्त गर्त हम� "My Computer" पर Right Click करना होता है और Display
होने वाले Popup Menu से "Properties" Option को Select करना होता है। प�रणामस्व�प �नम्न
�च�ानुसार System Window Display होता है:
49
Android in Hindi
50
Android in Hindi
इस Dialog Box के "System variables" List Box म� उपरो� �च� म� दशार्ए अनुसार "Path"
Option को Select करके "Edit…" Button को Click करते ही हमारे सामने �नम्न �च�ानुसार "Edit
System Variable" नाम का Dialog Box Display होता है:
बस इसी Dialog Box के "Variable value:" Textbox म� �दखाई दे ने वाली String के अन्त म� एक
Semicolon लगाकर हम� हमारे उस Folder का Path Specify करना होता है �जसे हम Configure
करना चाहते ह�, क्य��क �त्येक नए Path को हम�शा एक Semicolon से ही Separated रखा जाता है।
51
How to Get Complete PDF EBook
आप Online Order करके Online या Offline Payment करते हुए इस Complete EBook को तुरन्त
Download कर सकते हैं ।
Order करने और पु स् तक को Online/Offline Payment करते हुए खरीदने की पू री प्रक्रिया की क्रिस् तृत नानकारी प्रात
करने के क्रिए आप BccFalna.com के क्रनम्न Menu Options को Check Visit कर सकते हैं ।
नक्रक हरारे Old Buyers के Reviews भी दे ख सकते हैं ताक्रक आप इस ात का क्रनर्ण य िे सकें क्रक हरारे Buyers हरारे
PDF EBooks से क्रकतने Satisfied हैं और यक्रद आप एक से अक्रिक EBooks खरीदते हैं , तो Extra Discount की
Details भी Menubar से प्रात कर सकते हैं ।