Upload
mobin
View
222
Download
0
Embed Size (px)
Citation preview
7/23/2019 Amoozesh Android Full
1/274
Prog
Mobil
Fram
6037 991
.
03434
: .
MoSync Framework
amming for Android OS.
e Web Application
work : MoSync
:
)1390)9
8 0175 3850
/
:
46510008
7/23/2019 Amoozesh Android Full
2/274
2
:
:
. Native
.
.
. .
Mobile Web Application
.
.Cross Platform .
iOS
windows
phone .
. .
7/23/2019 Amoozesh Android Full
3/274
3
7/23/2019 Amoozesh Android Full
4/274
4
:
................................9
.......................................................................................................10
.......................................................................................11
.......................................................................................................14
............................................................................................15
.....................................................................................18
!....................................................23
............................................................................30
.........................................................................34
.........................................................................................................35
............................................................................................................39
:
................................43
.....................................................................................................44
...........................................................................................65
7/23/2019 Amoozesh Android Full
5/274
..........................................................68
..........................................................72
..........................................................75
......................79
..........................................................80
..........................................................91
..........................................................93
(Ap.................................................94
(Acti.............................................100
........................................................102
........................................................103
........................................................104
..........................................106
....................................................108
........................................................113
........................................................114
........................................................118
5
.............
...............................
..................................................
:
.....................
............................
................................................
(plication Components
(vating Components
.............................
............((The Manifest File
...............
.................................))Activities
......................
.........................
7/23/2019 Amoozesh Android Full
6/274
6
......................................................................................................122
..........................................................................123
(intent filters)...................................................................124
.......................................................................................................126
..................................................................128
.............................................................................................130
.....................................................................131
................................................................................147
.................................................................................153
.....................................................................................154
................................................................................155
:
XML.............170
(Application Resources).............................................................171
View
Layout
...........................................................................................173
......................................................................................176
.......................................................................................177
(Events)..................................................................................................179
7/23/2019 Amoozesh Android Full
7/274
........................180
........................................................181
........................................................188
.........................................189
........................................................196
........................................................204
.....................206
........................................................207
........................................................208
........................................................209
........................................................209
........................................................210
........................................................213
SQLite.............219
........................................................220
........................................................222
........................................................222
7
:
............................................
..MoSync
..............................
.........................
:
................
......................))JSON messages
.....))string stream messages
..................................
.....................
..........................
:
..............................
.............................................SQLite
.............SQLite
7/23/2019 Amoozesh Android Full
8/274
8
SQLite................................................................................226
SQLite..............................................................................233
SQLite.........................................................................234
...................................................................235SQLite
........................................................................237
:
jQueryjQuery Mobile........245
.................................248
7/23/2019 Amoozesh Android Full
9/274
:
7/23/2019 Amoozesh Android Full
10/274
10
1
)Smartphone(
2
3
" 4Open Handset Alliance "
"Google". 12 3
XML2.8C2.1 .
.
.
.
5
6
7
8
.
1Open source
2Handheld
3Tablet
. www.OpenHandsetAlliance.com 4
5Kernel(Nucleus)
6Rich
7User Friendly
8End User
7/23/2019 Amoozesh Android Full
11/274
.
.
1
1Bluetooth,2.
1
Component-Based
11
.
.
.
.
- .
.
SQLite
.
EDGE,33G,4GPS,5GSM,6Wi-Fi
7/23/2019 Amoozesh Android Full
12/274
12
.
7
.
8
9
.
OpenGL
.
MP3, AAC , OGG , AMR , MIDI
MPEG4 WAV , BMP , GIF , PNG , JPG .
Adobe Flash GIF
.
html5 Adobe Flash
1Open specification for short-range wireless communication
2Enhanced Data Rates for Global Evolution-advanced standard for wireless
communication (next step up from GSM) -3Third Generation
4Global Positioning System
5Global System for Mobile Communications
6Wireless Fidelity
7High Quality
8Vector
9Bitmap
7/23/2019 Amoozesh Android Full
13/274
) .
.
Dalvik
.
1
2
)(
ARM
3ARM, MIPS, Power
2008.
.
.
1Touch Screen
2Track Ball
3
Advanced Risk Machine
13
Streaming.
HTML5 )
.
iOS
Architecture, x86
Tablet PC
7/23/2019 Amoozesh Android Full
14/274
14
:((Integrated browser
.WebKit
1)
(
)Isolate(.
.
(++C 2 ) . ++C
.-
C
C++
-
:
90 Sun Micro system
)
(
++C
1Life Cycle
2Syntax
7/23/2019 Amoozesh Android Full
15/274
.
(
(
3
4
.
)Byte Code(
.
.
1SDK
1Portable
2Intermediate code
3Security
4Platform Independent
5Intermediate code
6
Java Virtual Machine
15
C++ 1
2
(
(
.
5
6
.
.
2.
7/23/2019 Amoozesh Android Full
16/274
16
((Software Development Kit
.OS X
.
((IDE
)SDK( .
.
.
)JDK(EclipseAndroid
SDK
.ADT3
4
.
32
64
.
.
)Eclipse IDE(
http://www.eclipse.org/downloads
1Software Development Kit
2Emulator
3Android development Tools
4Plug-in
7/23/2019 Amoozesh Android Full
17/274
(
!)
http://code.g
.
(
.
17
.
SDK
om/android/download.htmlogle.c
WWW.kamalan.com
.
.
++C
C++,C#(
.
7/23/2019 Amoozesh Android Full
18/274
18
1
.
www.prozhe.com
.
.
!
RIM .
1Open mind
7/23/2019 Amoozesh Android Full
19/274
.
2012
.
.
(:
.
19
.
.
.
)
.
.
2005
7/23/2019 Amoozesh Android Full
20/274
20
.
.
.
.
.
2006
.
2007
.
!
7/23/2019 Amoozesh Android Full
21/274
2007
.
Open Handset Allianc 5
1NTT Do Nvidia
eBay
:
1Nippon Telegraph and Telephone(tele
telecommunication market in Japan)
21
.
.
.2007
34
.
LG HTCT-MobileoMo
.
.
.
hone company dominating the
7/23/2019 Amoozesh Android Full
22/274
22
.T-MobileHTC
Open Handset
Alliance
22
2008
HTC
DreamT-Mobile G1Era G1 .
2008
.
14
Open Handset Alliance
.
.
NEC
NXP
ST-Ericsson
ZTE
.
7/23/2019 Amoozesh Android Full
23/274
Apache
!
:
.1
2
.clair MR11
1
clair Maintenance Release1
23
License .
.
.
Cupcake
.5
Donut
1.6
clair
2
.1
7/23/2019 Amoozesh Android Full
24/274
24
FroYo)Frozen yogurt(
2.2.
. Gingerbread
.
.
2011
3. )(Honey-Comb
. CES
.
1.5Cupcake
1.5
.) Cupcake
Base )
.
:
7/23/2019 Amoozesh Android Full
25/274
Picasa
)A2DP(
.
:
)
25
YouTube
).)AVRCP
Donut1.6
15
2009
1.6
2
6
29
(
7/23/2019 Amoozesh Android Full
26/274
26
)Bookmarks(
)History(
)Contacts(
1
CDMA/EVDO8021xVPN
2
WVGA
clair2.12
2
2.1
1.6
.
2
26
2009
.
2009SDK
2
0
1
)
2.0.1
3
(.SDK 2.112
2010
.
:
1HomeScreen
2Text to Speech
3Bug
7/23/2019 Amoozesh Android Full
27/274
27
Multi Touch
TML5
312
Microsoft Exchange
2.1
FroYo2.2
7/23/2019 Amoozesh Android Full
28/274
28
2.2
20
2010
.
:
52 2
(JIT1
.
2
.
.(
V8
Microsoft Exchange
1Just In Time
2Machine Independent
7/23/2019 Amoozesh Android Full
29/274
.
.
.
i.
.
!)
29
2.3
Gingerbread2.3
3.0
)
(S
(
.
).
.
.(
7/23/2019 Amoozesh Android Full
30/274
30
.
2.1
.
2010
2.1
clair
1.6
25
1.5
.
5/0
.
.
1
2009
1.6
2
2.1
2.2
.
HTC
7/23/2019 Amoozesh Android Full
31/274
XPERIA X10
X10
2.2
. .2
!
.
. HTC
.
31
.
.
. 1.6
. X10
2.1
.
6 X10
.
7/23/2019 Amoozesh Android Full
32/274
32
2.2
2.1
Open Handset Alliance
.
.
2010
.
RIM
.
1970
.
.
29
2007
2008
7/23/2019 Amoozesh Android Full
33/274
.
1/6
.
61.
.
.
.
.
70
.
.
.
33
.
2010
6/9
21
36
17
50
.RIM
7/23/2019 Amoozesh Android Full
34/274
34
20
.
.
2010
.
.
.
HTC .
.
7/23/2019 Amoozesh Android Full
35/274
.
MOTOBLUR
.
.
35
.
HTC.
.
HTC
.HTC
7/23/2019 Amoozesh Android Full
36/274
36
.
.
.70
30
.
46
.
25
.
13
.
7/23/2019 Amoozesh Android Full
37/274
HT
50000
iTunes
.
.
37
) (
!
!
175000
.
.
7/23/2019 Amoozesh Android Full
38/274
38
.
.
.
.
.
Androlib
Androidzoom.
.
)Goggles(
.
7/23/2019 Amoozesh Android Full
39/274
.
.
.
Google I/2010
.
.
.
39
.
.
O.
.
7/23/2019 Amoozesh Android Full
40/274
40
.
.
7/23/2019 Amoozesh Android Full
41/274
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
41
:
.......................................................................
.......................................................................
.......................................................................
.......................................................................
.......................................................................
.......................................................................
.......................................................................
.......................................................................
.......................................................................
.......................................................................
.......................................................................
.......................................................................
7/23/2019 Amoozesh Android Full
42/274
42
7/23/2019 Amoozesh Android Full
43/274
:
:
7/23/2019 Amoozesh Android Full
44/274
44
Eclipse
File
New
Android Project
).
1-1(
-
7/23/2019 Amoozesh Android Full
45/274
1
SDK .
(
SDK
.
SDK.)
.
Application Na(
)1-3(.
2
SDK API Level
.
1Version(SDK Version)
2
Dot
45
)1-2.(
. .
SDK
.(
(
)e
))Package Name.
Min SDK Version.
SDK
7/23/2019 Amoozesh Android Full
46/274
46
)
(
8
2.2
.
2.2
2.2
.
7/23/2019 Amoozesh Android Full
47/274
-
47
7/23/2019 Amoozesh Android Full
48/274
48
-
7/23/2019 Amoozesh Android Full
49/274
3
.
.
)1-1(
1Package name
2Unique
3
Lowercase letter
-
49
:1
2
.
.
.
Package Explorer
.
)1-4(
.
7/23/2019 Amoozesh Android Full
50/274
50
activity
.
YourActivity.java
R.java
SDK
Android Library
.
...
Assets
.
Res
1User Interface
7/23/2019 Amoozesh Android Full
51/274
res/drawable
res/layout
res/values
AndroidManifest.xml
-
51
XML
String)(
.
7/23/2019 Amoozesh Android Full
52/274
52
)1-1(
.
.
)1-5(
1
.
1Directory(Folder)
7/23/2019 Amoozesh Android Full
53/274
-
.MyFirstProject.java
53
YourActivity.java
.(
(
7/23/2019 Amoozesh Android Full
54/274
54
packageMilad.Fashi.MyFirstProject;
importandroid.app.Activity;importandroid.os.Bundle;
publicclassMyFirstProject extendsActivity {/** Called when the activity is first created.*/
@OverridepublicvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.main);
}
}
import .
()onCreate .
.)
(.
.
onCreate()main()
!
Android Life
Cycle
End()Main .
7/23/2019 Amoozesh Android Full
55/274
Act onCreate()
()onCreate
.
super. onCreate(savedInstan
s
.
setCont
.
.
Exte .
2
Override
55
MyFirstProject ivity
1
2
.
Activity
savedInstanceState
eState);
vedInstanceState
.
.
(entView(R.layout.main
main.xml
onCreate .
1super class))parent
ds .))Derivation
7/23/2019 Amoozesh Android Full
56/274
56
.genPackage Explorer
.
R.Java
.
)
(
.
.
.
/* AUTO-GENERATED FILE. DO NOT MODIFY.* This class was automatically generated by the* aapt tool from the resource data it found. It*should not be modified by hand.*/
packageMilad.Fashi.MyFirstProject;
publicfinalclassR {publicstaticfinalclassattr {}
publicstaticfinalclassdrawable {publicstaticfinalinticon=0x7f020000;}
publicstaticfinalclassid {publicstaticfinalintbtn_Button1=0x7f050000;
}publicstaticfinalclasslayout {
publicstaticfinalintmain=0x7f030000;}
publicstaticfinalclassstring {publicstaticfinalintapp_name=0x7f040001;publicstaticfinalinthello=0x7f040000;
}}
7/23/2019 Amoozesh Android Full
57/274
1
Android 2.2
Android 2.2 Librar
.
1-
.
2
.
.
1Library
2
Sub Directory
57
)5-1(Package Explorer
.
.
: gen/R.java
) (asset
.
5-1res
:res
1./res/drawable-hdpi:
))Resolution
7/23/2019 Amoozesh Android Full
58/274
58
)HDPI=high dot per inch(. LCD
.
)Dimension(
.
2./res/drawable-ldpi: -drawable
hdpi
.
3./res/drawable-mdpi:
drawable-hdpidrawable-ldpi
1
.
:
res/drawable-xdpi
.
1Medium
7/23/2019 Amoozesh Android Full
59/274
Text Box
. ...Radio Button
.
2
xml
xmlUI
.
MyFirstProjec:
7/23/2019 Amoozesh Android Full
60/274
60
xml.
>LinearLayout
7/23/2019 Amoozesh Android Full
61/274
ta
main.xml
User Interface Desig(
-
. strings.xml
Resources
.
61
. b
.
.switch
(
.
5.Res/values:
7/23/2019 Amoozesh Android Full
62/274
62
strings.xml
.
Hello World,MyFirstProject!
MyFirstProject
xml
string
.
).
1).Name
Resources
.
String, Integer Array, String Array, Color, Dimension, Drawable,
Item, Style/Theme
)
2(
.
.
1Attribute
2Modular
7/23/2019 Amoozesh Android Full
63/274
Pac)1-5(
.
.
(
.
ion="8"/>
drawable/icon"ame">
irstProject"ame">
id.intent.action.MAIN"/>
NCHER"/>
7/23/2019 Amoozesh Android Full
64/274
64
android:versionCode="1"1
2
)
(
.
android:versionName="1.0"
String
.
Ultimate
.
Version Name
.
android:minSdkVersion="8"
8
Android:LableAndroid:icon Application
.
3
.@drawable res/drawable
Icon
)LDPIMDPIHDPI(. .( String.xml
1Integer
2Market
3Relative
7/23/2019 Amoozesh Android Full
65/274
(.Intent
Activity to Fire up
Activity
.
.
))Button
.(
View
1
Launch
65
ValueResources
CategoryAction
Activity
.Launcher
)
1(
.
IntentActivity
default. Properties
)Widget( .
)
7/23/2019 Amoozesh Android Full
66/274
66
).Import(
importandroid.widget.Button;
onCreate()
.)
Bold
(
publicvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);
Button btn_finish=(Button) findViewById(R.id.btn_Finish);
}
1
. ++C xml
.
. xml
2
3
.
Button btn_finish=(Button) findViewById(R.id.btn_Finish);
1imperative
2Source Code
3User Interface
7/23/2019 Amoozesh Android Full
67/274
.
1
btn_finish
.
R.id.Object_Name
id
.
android:id xml
:
2
.
ViewById(R.id.btn_Finish);
Type Cast
7/23/2019 Amoozesh Android Full
68/274
68
)
1(
.
Window
Android SDK And AVD
Manager 1-7. (
2AVDSDK3 ).Eclipse
-
. 1-8New
1Virtual Device(Emulator)
2Android Virtual Device
3Software Development kit
7/23/2019 Amoozesh Android Full
69/274
-
69
7/23/2019 Amoozesh Android Full
70/274
70
.
Resolution
.
SD card
2
.
. Create AVD
RunRun
Control+F11
.
Hello World
1-9
.
7/23/2019 Amoozesh Android Full
71/274
.
!
.
)( .
1
Boot up
71
-
1
7/23/2019 Amoozesh Android Full
72/274
72
)
)2-10
)
2-11(.
.
)
(
USB
F5 .
)(
.)
USB
.(
)
(
.
!
Hello World
.
:activities, intents, intent
filters, services, Content Providers.
7/23/2019 Amoozesh Android Full
73/274
73
7/23/2019 Amoozesh Android Full
74/274
74
7/23/2019 Amoozesh Android Full
75/274
. Import
Existing Projects into12-
75
File
2
Workspace .
7/23/2019 Amoozesh Android Full
76/274
76
1-11
. Browse
.Package Explorer
7/23/2019 Amoozesh Android Full
77/274
77
7/23/2019 Amoozesh Android Full
78/274
78
:
7/23/2019 Amoozesh Android Full
79/274
:
:
.
.
7/23/2019 Amoozesh Android Full
80/274
80
)(
.
.
.
:
Application and Widgets
Application Framework
Android Runtime
Libraries
Linux Kernel
7/23/2019 Amoozesh Android Full
81/274
81
7/23/2019 Amoozesh Android Full
82/274
82
))Linux Kernel
)Proven Foundation(
.
).
1
.(
2
.
3
4
5
.
.
.
1Super Computer
2Hardware Abstraction
3Memory Management
4Process Management
5Networking
7/23/2019 Amoozesh Android Full
83/274
83
.
.
1
2
.
...
3
.
.
4
.
C
C++
.
++CC
1Reliability
2Performance
3Voice communication
4Native Libraries
7/23/2019 Amoozesh Android Full
84/274
84
.
.
)(
.
)
1BSD.(
System C library
.
.MP3,MP4,JPG,PNG
Media Libraries
SGL
.
Browser Engine
.
WebKit Library_SSL2
(.3D libraries(OpenGL Open GL
Bitmap3
Vector) (Free Type
SQLite 21
1Barkley Software Distribution
2Secure Socket Layer
3Render
7/23/2019 Amoozesh Android Full
85/274
85
3
.Android Runtime
4
5
.
6
.Net Common
language Runtime Java Virtual Machine
.
.
Dan Bornstein
.
1Powerful
2Light Weight
3RDB=Relational Data Base
4Dalvik Virtual Machine
5Core Java Libraries
6Portability
7/23/2019 Amoozesh Android Full
86/274
86
1
2
.
CPURAM
VMDalvikJava VM
3Sun open
source
.
.
.
Java Virtual machine
.
Dalvik
Dalvik virtual machine
..
)
(
j2ME MIDP Runner
1Machine Independent Instruction
2Byte Code
3License
7/23/2019 Amoozesh Android Full
87/274
87
.
)
1(
2
)
3
(
.
((Application Framework
((open development platform
.
)
(
5 4
.
6
API
7
.)API= Application Program Interface
1Interpreter
2Executable code
3Machine code
4background services
5Notifications
6Developers
7the core applications
7/23/2019 Amoozesh Android Full
88/274
88
.(
1
2
3
.
)
.(
4
. APIJDK
.
API
)(Package
.
ArrayList .
.
.
JDK>>API>>Package>>Class
Example : import java.util.ArrayList
1The application architecture
2Facilitate
3Reuse
4Replacement
7/23/2019 Amoozesh Android Full
89/274
89
Package )).Class library
:
)View System: ( View
:lists, grids,
text boxes, buttons, embeddable web browser.
(Content Providers):
(.
.(
(: (Resource Manager
1
(.(layout files
.
1localized strings
7/23/2019 Amoozesh Android Full
90/274
90
(: (Notification Manager
.
1:((Activity Manager
.
)Location Manager(:
2GPS .
))Application and Widgets
.
3
.
.
,Email Phone dialer
1Life Cycle
2Accelerometer
3End Users
7/23/2019 Amoozesh Android Full
91/274
91
SMS ,Calendar, Maps,Web Browser, Contacts ,Andrio Market
.
.
Android Runtime
.
.
)Application()Widget( .
.
)
Gadgets
(
)Home Screen(
.
.
...
.
.
7/23/2019 Amoozesh Android Full
92/274
92
.
1
)
.(
.
.
.
((virtual machine .
((isolation
.
2
.
)
1Linux User ID
2Linux Process
7/23/2019 Amoozesh Android Full
93/274
93
(!
(shuts down)
.
(Principle of least Privilege)
.
.
.
:
. .
)
.) 1 sign
1Certificate
7/23/2019 Amoozesh Android Full
94/274
94
1
((users contacts SMS (SD card)
.
.
.
Manifest.xml
(Application Components)
2
(building blocks)
.
.
.
.
1Device
2
.
7/23/2019 Amoozesh Android Full
95/274
95
.
((Lifecycle (
(
.
.
.1 (: (Activities (
(
.
.
.
)
.(
.
1
.
1Trade off
7/23/2019 Amoozesh Android Full
96/274
96
Activity
.
) (1(: (Services.2
.
2
.
3
.((remote processes
.
.
.
.Live Wallpaper
.
4
.
Service
1Process
2User interface
3background
4Animated Picture
7/23/2019 Amoozesh Android Full
97/274
97
.
.3 (:(Content Providers 1
.
.
.
SQLite
.
)
.(
Content provider
.
.
.
. 2
1Framework
2Reading and Writing data
7/23/2019 Amoozesh Android Full
98/274
7/23/2019 Amoozesh Android Full
99/274
99
.
.
Broadcast Receiver
. ((Intent object
.
.
.
.
.
.
)
(
.
7/23/2019 Amoozesh Android Full
100/274
7/23/2019 Amoozesh Android Full
101/274
101
(
.
Intent
.
1
.2
)
(
.
.
)
.
.
"battery is low"
(.
1Explicit
2Implicit
7/23/2019 Amoozesh Android Full
102/274
102
.
Content.ResolverContent
Resolver
.
.
:
1.
startActivity()
.
.()startActivityForResult
2.
()bindService()startService
.
7/23/2019 Amoozesh Android Full
103/274
103
3.
1
()sendBroadcast
sendOrderedBroadcast()sendStickyBroadcast()
.
4.
query()
Content Resolver
.((query
((The Manifest File
.
AndroidManifest.xml
.
.
.
:
1.
1
.
1Broadcast Receiver
7/23/2019 Amoozesh Android Full
104/274
104
2.
API API
.
3.
.
.
4.
Google Maps API
library .
.
.
7/23/2019 Amoozesh Android Full
105/274
105
android: icon
7/23/2019 Amoozesh Android Full
106/274
106
.
.
BroadcastReceiver()
.()RegisterReceiver
)
(
.
1
)
(
.
(intent actions) .
)
(
.
1Explicit
7/23/2019 Amoozesh Android Full
107/274
107
.
intent
filters .
.
.
.
7/23/2019 Amoozesh Android Full
108/274
108
()startActivity(. ).
.
.
.
.
API
2
1
((API Level 7
.
API
7/23/2019 Amoozesh Android Full
109/274
109
.
.
.
.
:
(:(Screen size and density
:
1
)
(
)
2dpi
.(
.
1Dimension
2Dots Per Inch
7/23/2019 Amoozesh Android Full
110/274
110
:((normal((small
(large)(extra large).
:
((low density
(medium density)
(high density)
(extra high density)
(UI layout)
(image resources)
.
.
.
:(Input configurations)
.
.21
1Trackball
2Five-way navigation pad
7/23/2019 Amoozesh Android Full
111/274
111
.
7/23/2019 Amoozesh Android Full
112/274
112
.
.
.
:))Define Permission
.
:
INTERNET:
READ_CONTACTS: 1
WRITE_CONTACTS:
RECEIVE_SMS:
2
ACCESS_COARSE_LOCATION:
wifi
1Contacts
2Incoming SMS(Text Message)
7/23/2019 Amoozesh Android Full
113/274
113
ACCESS_FINE_LOCATION: GPS
:
Android security
model :
http://d.android.com/guide/topics/security/security.html
))Activities
1
.
2
)
(
.
1Interact
2user interface
7/23/2019 Amoozesh Android Full
114/274
114
.1
.
)
Main
Activity(
.
.
2
3 .
4 .
Push
.
.((5LIFO
1float
2start
3stop
4stack
5last in, first out
7/23/2019 Amoozesh Android Full
115/274
115
Back
((Pop .
1
.
)foreground(
2
.
)Home Application(.
.
)
(
.
.
.
)
(.
.
.
)(Application-Stack .
1Data Structure
2Status line
7/23/2019 Amoozesh Android Full
116/274
116
1
.
)Home Program(
.
Back
)
(
.
2
.
.
.
3
)
(.
)
.(
4
.
1Back
2Web Browser
3On User Demand
4Activitys lifecycle callback methods
7/23/2019 Amoozesh Android Full
117/274
7/23/2019 Amoozesh Android Full
118/274
118
.
.
.
.((stack
Activity
1
2
.
:
1Override
2Behavior
7/23/2019 Amoozesh Android Full
119/274
119
:))onCreate
.
.
)onStart: (
.
: (Resumed)
(foreground ).
.)
.(
:(Paused)
.
)
(
.
(:(Stopped
)
(background).( stop )
7/23/2019 Amoozesh Android Full
120/274
120
) Activity
.
.
) :)onRestart
.
)onDestroy: (
.
.
()onDestroy
.
1
.
)onSaveInstanceState(:
.
2
.Text Field
1Terminate
2Cursor
7/23/2019 Amoozesh Android Full
121/274
121
1
.
:))onRestoreInstanceState
onSaveInstanceState()
.
.
.
.
.
()finish
.
.
.
1Override
7/23/2019 Amoozesh Android Full
122/274
122
( Activity
.(
.
.
: onCreate() .
.
.((initialize
setContentView()
.
User Interface .
: onPause()
)
7/23/2019 Amoozesh Android Full
123/274
123
.(
.
.
.
: .
7/23/2019 Amoozesh Android Full
124/274
124
((intent filters
7/23/2019 Amoozesh Android Full
125/274
125
.>>action
>category
7/23/2019 Amoozesh Android Full
126/274
7/23/2019 Amoozesh Android Full
127/274
127
. SMS
.
.
.
.
.
.
Intent intent = new Intent (Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL , recipientArray);
startActivity(intent);
EXTRA_EMAIL
.
.
:to .
.
7/23/2019 Amoozesh Android Full
128/274
128
.
startActivity()
()startActivityForResult .
()onActivityResult .
startActivityForResult()
.
.
.
Private void pickContact(){
//Create an intent to "pick" a contact, as defined by the content providerURI
Intent intent;
intent = new Intent(Intent .ATION_PICK,Contacts.CONTENT_URI);
startActivityForResult(intent,PICK_CONTACT_REQUEST);
}
@Override
Protected void onActivityResult(int requestCode,int resultCode, Intentdata) {
7/23/2019 Amoozesh Android Full
129/274
129
/* if the request went well(ok) and the request was
PICK_CONTACT_REQUEST */
If(resultCode == Activity.RESULT_OK && requestCode ==PICK_CONTACT_REQUEST) {
//Perform a query to the contact ' s content provider for the contact 'sname
Cursor cursor = getContentResolver().query(data.getData())
new String[] {Contacts.DISPLAY_NAME},null,null,null);
if(cursor.moveToFirst()) { //True if the cursor is not empty
int cloumnIndex =cursor.getColumnIndex(Contacts.DISPLAY_NAME);
String name = cursor.getString(columnIndex);//Do Something with the selected contact 's name
}
()onActivityResult
.
.
result Code
RESULT_OK
.
.
requestCode
()startActivityForResult .
7/23/2019 Amoozesh Android Full
130/274
7/23/2019 Amoozesh Android Full
131/274
7/23/2019 Amoozesh Android Full
132/274
132
protected void onRestart() {
super.onRestart();
Toast.makeText(this, "onRestart", 1).show();
}
@Override
protected void onResume() {
super.onResume();
Toast.makeText(this, "onResume", 1).show();
}
@Override
protected void onPause() {
super.onPause();
Toast.makeText(this, "onPause", 1).show();
}
@Override
protected void onStop() {
super.onStop();
Toast.makeText(this, "onStop", 1).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
Toast.makeText(this, "onDestroy", 1).show();
7/23/2019 Amoozesh Android Full
133/274
133
}
:
(super class)
.
Toast.makeText(this, "onDestroy", 1).show();
)
1
). Interval
)(
.
.
.
7/23/2019 Amoozesh Android Full
134/274
134
7/23/2019 Amoozesh Android Full
135/274
135
7/23/2019 Amoozesh Android Full
136/274
136
1:
:
1.onCreate() 2.onStart() 3.onResume()
7/23/2019 Amoozesh Android Full
137/274
137
2:
. FinishBack
:
1.onPasue() 2.onStop() 3.onDestroy()
3:
)Home key(
:
1.onPause() 2.onStop()
4:
:
1.onPause() 2.onStop() 3.onDestroy()
4.onCreate() 5.onStart() 6.onResume()
Control+F11 791)
Num Lock( .
2
.
.
.
1Keypad
2Change Screen Orientation
7/23/2019 Amoozesh Android Full
138/274
138
)Home key(onDestroy() .
)
Task Manager
. (
Home key
.
:
1.onRestart() 2.onStart() 3.onResume()
.
:
1.
(:(Entire Lifetime
()onCreate ()onDestroy
.
)
(
onCreate()
.
)Resource(
1 . ()onDestroy
1Thread
7/23/2019 Amoozesh Android Full
139/274
139
thread
.()onDestroy()onCreate
2.
:(Visible Lifetime)
onStart()onStop()
.
.
()onStop
.
.
onStart()
BroadcastReceiver
.1 2
. ()onStop
()onStart()onStop .
.
3.
:(Foreground Lifetime)
.()onResume()onPause
1register
2unregister
7/23/2019 Amoozesh Android Full
140/274
140
.
onPause()
sleep
.
.
)(
.
.
()onCreate
.
()onCreate ()onResume
Stop )())onRestart
.()onResume ()onResume
.
()onResume
7/23/2019 Amoozesh Android Full
141/274
141
.. ()onPause
()onPause .
onCreate(),onResume(),onPause() .
)(
.
.
.
)
(
.
7/23/2019 Amoozesh Android Full
142/274
142
7/23/2019 Amoozesh Android Full
143/274
143
onCreate()
.
View
.
)SavingActivityState
).
()onStart
.
onStart()
onRestart()
(Stop)
()onStart
.
()onStart
onStart()
.
onResume()
onStop()
7/23/2019 Amoozesh Android Full
144/274
144
onResume()
.
((Stack
.
()onPause
.
()onPause
onPause()
.
CPU
.
.
()onResume .
onStop().
onResume()
onStop()
onStop()
.
onRestart()
onDestroy()
7/23/2019 Amoozesh Android Full
145/274
145
(
(
.
()onRestart
.()onDestroy
onDestroy()
.
.
( ()finish
(
.
()isFinishing
.
.
.
onPause()
onResume()
7/23/2019 Amoozesh Android Full
146/274
146
. ()onPause
7/23/2019 Amoozesh Android Full
147/274
147
()onPause
.
1
onStop()onDestroy()
.
)
(
. ()onPause
.
:
.
(( Processes and Threading
.
((Pause
. ((Stop
1Recover
7/23/2019 Amoozesh Android Full
148/274
148
1Activity
.
.
((Resume
.
Activity
.
(Resume).
.
.
.
.
.
1object
7/23/2019 Amoozesh Android Full
149/274
149
onSaveInstanceState()
.
Bundle
Bundle.
putString()
.
Bundle ()onCreate
()onSaveInstanceState
.
Bundle
. 1 ()onCreate
1Null
7/23/2019 Amoozesh Android Full
150/274
7/23/2019 Amoozesh Android Full
151/274
151
((BACK key
.(
onStop()
onPause()
.
onSaveInstanceState()
()onSaveInstanceState
Activity .
onSaveInstanceState() View(layout)
.
1
.
.
EditText
CheckBox
.
ID android:id
.
ID
.
1Widget
7/23/2019 Amoozesh Android Full
152/274
152
()onSaveInstanceState
1
.
.
onSaveInstanceState()
(super class)
.
:
onSaveInstanceState() 2
)
(
)
(
.
()onPause (
.(
1Override
2Guarantee
7/23/2019 Amoozesh Android Full
153/274
153
)
(
1
.
.
.
.
.
2 3 (
.(
((restarts
) ()onDestroy ()onCreate ).
1Orientation
2Configuration
3Runtime
7/23/2019 Amoozesh Android Full
154/274
154
.
1
.
)
(
:
onSaveInstanceState()
onRestoreInstanceState()
onCreate()
.
(Pause)
(Stop)
.
1Flexibility
7/23/2019 Amoozesh Android Full
155/274
155
.
1
.
AB
:
1.A()onPause .
2.B()onCreate()onStart()onResume
) .
.(
3.
A
()onStop .
.
2
onPause()
()onStop .
1Overlap
2Data Base
7/23/2019 Amoozesh Android Full
156/274
156
.
.
Intent
startActivity()
)
.(
)
(
.
startActivityForResult() .
.
7/23/2019 Amoozesh Android Full
157/274
7/23/2019 Amoozesh Android Full
158/274
158
android:paddingRight="10dip"/>
...
7/23/2019 Amoozesh Android Full
159/274
159
XML
res/layout
next.xmlsum.xml
main.xml .
. next.xml
.
.
)(
.
7/23/2019 Amoozesh Android Full
160/274
160
fill par .
.
layout_widthlayout_heightnt
TextViewsum.xml
EditBox
.
7/23/2019 Amoozesh Android Full
161/274
161
)(
Sum.xml
.
7/23/2019 Amoozesh Android Full
162/274
162
layout
.
.
.
1. publicclassTestIntentActivity extendsActivity {2. EditText etNumber3;
3. @Override4. publicvoidonCreate(Bundle savedInstanceState) {5. super.onCreate(savedInstanceState);6. setContentView(R.layout.main);
7. finalEditText etNumber1 =8. (EditText) findViewById(R.id.etNumber1);
9. finalEditText etNumber2 =10. (EditText) findViewById(R.id.etNumber2);
11. etNumber3=12. (EditText) findViewById(R.id.etNumber3);
13. Button btnNext =
7/23/2019 Amoozesh Android Full
163/274
7/23/2019 Amoozesh Android Full
164/274
164
(EditText) findViewById(R.id.etNumber2);
etNumber3= (EditText) findViewById(R.id.etNumber3);
13
22btnNext
layout
.
NextActivity .
20 ()startActivity
.
23
34btnSum . layout
Intent.putExtra()
Intent
.
39
40
.putExtra
1
2
.
.
.
31
()startActivityForResult
.
1Key
2Value
7/23/2019 Amoozesh Android Full
165/274
165
.
.
35
42
onActivityResult()
.
.
38
((RESULT_OK
1
39
40
.
()startActivityForResult
.
40
Result
EditBox
.
.
29
30
.
.((SumAvtivity .
1. publicclassSumActivity extendsActivity {2. @Override3. publicvoidonCreate(Bundle savedInstanceState) {4. super.onCreate(savedInstanceState);5. setContentView(R.layout.sum);6. Bundle extras = getIntent().getExtras();7. if(extras == null) {8. return;
9. }
7/23/2019 Amoozesh Android Full
166/274
166
10. String value1 = extras.getString("Number1");11. String value2 = extras.getString("Number2");12. TextView tvNumber1 = (TextView)
findViewById(R.id.tvNumber1);13. TextView tvNumber2 = (TextView)
findViewById(R.id.tvNumber2);
14. TextView tvNumber3 =(TextView)findViewById(R.id.tvNumber3);
15. tvNumber1.setText("Number 1 is: "+ value1);16. tvNumber2.setText("Number 2 is: "+ value2);17. finalinti = Integer.parseInt(value1);18. finalintj = Integer.parseInt(value2);19. tvNumber3.setText("Number 1 + Number 2 is: "+
Integer.toString(i+j));20. Button btnResult = (Button)
findViewById(R.id.btnResult);21. btnResult.setOnClickListener(newOnClickListener() {22. @Override
23.publicvoidonClick(View v) {24. Intent intent = newIntent();25. intent.putExtra("Result", i+j);26. setResult(RESULT_OK, intent);27. SumActivity.this.finish();28. }29. });30. }31. }
: SumAvtivity
5
layout
sum.xml .
6
12
.
7/23/2019 Amoozesh Android Full
167/274
167
Number1Number2
1011
.
121314
TextView
XML
.
15
19
TextView
.
20
29
.
XML
.
Result
.
SetResult
RESULT_OK
.)
24
Intent
27
.
(.
7/23/2019 Amoozesh Android Full
168/274
7/23/2019 Amoozesh Android Full
169/274
169
:
7/23/2019 Amoozesh Android Full
170/274
XML:
:
7/23/2019 Amoozesh Android Full
171/274
171
((Application Resources
.
1
.
XML .
.
.
.
res
.
XML
.
.
1Source Code
7/23/2019 Amoozesh Android Full
172/274
7/23/2019 Amoozesh Android Full
173/274
173
2 1 .
.
((orientation
.
3
4 .
.
ViewLayout
View ((single object . View
Layout
View
.
(Label)
.TextView View
1qualifiers
2alternative resources
3portrait orientation
4landscape orientation
7/23/2019 Amoozesh Android Full
174/274
174
View
view.
.
View1 View
.
2
.
Button,EditText,TextView
...
.
import
.
:
importandroid.widget.EditText;
importandroid.widget.TextView;
importandroid.widget.Button;
3view 4ViewGroup
.Layoutview
.
XML
1Base Class
2Widgets
3Layouts
4Derived
7/23/2019 Amoozesh Android Full
175/274
175
Layout
.Layout :
view
Linear
Layout
.
View Grid Layout
)
View
. (
View Relative Layout
.
1
2
View)
3(
4
.
1Form
2Desktop Application
3Layout
4Assign
7/23/2019 Amoozesh Android Full
176/274
7/23/2019 Amoozesh Android Full
177/274
177
XML
.
XML
.
XML
HTML1
.
.
).)XML
XML
.
XML
(Functionality)
.
)
)XML
(functionality)
.
1Hyper Text Markup Language
7/23/2019 Amoozesh Android Full
178/274
178
.
Res/Layout
XML
.
view
XML 1 .
. ViewGroup view
ViewGroup ()setContentView
.
onCreate()
.
(Events)
Event
. Event Listener
1resource
7/23/2019 Amoozesh Android Full
179/274
179
.
((Events controllers
.
.
Listener .
.
7/23/2019 Amoozesh Android Full
180/274
:
7/23/2019 Amoozesh Android Full
181/274
181
)MoSync( SDK.))SDK1
EclipseIDE .
SDK
SDK
.
SDK
.. SDK
Editor,Compiler,Linker,Libraries,Emulator,
MoSyncSDK2
.
.
.Cross-Platform
.
C++,Java Script(jQuery Mobile),HTML5
1Software Development Kit
2Open Source
7/23/2019 Amoozesh Android Full
182/274
182
.
!1
iPhone
...
.
MoSync SDK
.
MoSync SDK
Android SDK
iPhone SDKWindows phone SDK .
SDK
.
SDK
.
API
2
...
.
)
OpenGL )NativeUI
.
1Mobile Sorcery
2Location(GPS)
7/23/2019 Amoozesh Android Full
183/274
183
.
SDK
HTML5,JavaScript,C/C++ .
HTML5JavaScript ++C,C
!
Eclipse IDE
1
.
GCC 3.4.6
2
MoSync
.
3
.MoSync Intermediate Language
Pipe-tool
)
Front-End
Back-End
.
(.
1Eclipse-Based
2Backend
3Intermediate Code
7/23/2019 Amoozesh Android Full
184/274
184
1GCC C . egcs
.GccGNU C/C++ Compiler.
.
SDK
C
OpenSource
.
Pipe-tool MoSync
2.
.
)pass( 25000
.
.Pipe-tool
IDE
IDEbuild
.
.Pipe
.
.
.org/onlinedocshttp://gcc.gnu
.2MoSync's code transformation engin
7/23/2019 Amoozesh Android Full
185/274
185
iOS, Android, Windows Phone, Windows Mobile, Symbian,
JavaME
1
MoRE2
.
3
.
.MoRE 16
4
.
.
N95
K700i
.
.
.
.
Device Profile Database
1Emulator
2MoSync Runtime Environment
3MoSync bytecode
4stylus
7/23/2019 Amoozesh Android Full
186/274
186
.
1
2
.
API
)...)BlueTooth,GPS
.
3).h file(.)
(
.
(runtime
) .Runtime
.
1Vendor
2Directory
3Header file
7/23/2019 Amoozesh Android Full
187/274
187
7/23/2019 Amoozesh Android Full
188/274
188
Mo
SDK .
http://www.m .
.
.
ync
.
sync.com/download
7/23/2019 Amoozesh Android Full
189/274
189
2.7
.
.
:
SDK
1
2
ME
3
4
.
iOS ( )iPhone,iPad,iPod
. SDK SDK
)Mac(
SDK
MoSync SDK for OS X
.
:
1MoSync SDK for Windows
2Application Packages
3Smart Phone
4Pocket PC
7/23/2019 Amoozesh Android Full
190/274
190
XP
Java SE Runtime Environment (JRE) 6)
Oracle/Sun (
300
.
.exe
.
)(
)(Unpacking
.
7/23/2019 Amoozesh Android Full
191/274
191
)Fade. ()License(
.
)(
7/23/2019 Amoozesh Android Full
192/274
192
.
).
.(
.
)(
.
.
7/23/2019 Amoozesh Android Full
193/274
193
.
.
.
)www.mosync.com/forum.(
RegisterHelp
.
)
.(
7/23/2019 Amoozesh Android Full
194/274
194
?Already registered
Click Here.
.
).(
:
Online user guides:
. www.mosync.com
.
7/23/2019 Amoozesh Android Full
195/274
195
Example applications: )
(
Project
Explorer
.)
MoSync/examples
(
Online tutorials:
.
API reference manual: API
MoSync SDK .
Developer center:
.
Screencasts:
SDK
IDE
.
Welcome Screen
Show this screen at startup .
HelpWelcome .
7/23/2019 Amoozesh Android Full
196/274
196
)(IDE .
7/23/2019 Amoozesh Android Full
197/274
197
7/23/2019 Amoozesh Android Full
198/274
198
: IDE
Project Explorer View:
)import(
.
.
. File Manager
Editor View: .
1
2
.
3)
(
Ctrl+Spacebar
.
Device Profiles View:
)
(
.
1highlighting
2indenting
3identifier
7/23/2019 Amoozesh Android Full
199/274
7/23/2019 Amoozesh Android Full
200/274
200
7/23/2019 Amoozesh Android Full
201/274
201
MoRE
.
SDK
)
SDK(.WindowPreferences
.
MoSync Tools Android
)( SDK .
Emulator (.
(
iOS (
Ask Every Time
iPhone
iPhone
. (
.
MoRE
.
)(
7/23/2019 Amoozesh Android Full
202/274
202
7/23/2019 Amoozesh Android Full
203/274
203
7/23/2019 Amoozesh Android Full
204/274
204
MoSync 3.0
.
.
)www.MoSync.com(
.
7/23/2019 Amoozesh Android Full
205/274
7/23/2019 Amoozesh Android Full
206/274
206
:
7/23/2019 Amoozesh Android Full
207/274
207
.
C++
HTML5
.
HTML5
HTML5
C++
1
.
:
Xml .
.
Wormhole C++ library(WebAppMoblet, MessageStream,
MessageStreamJSON)
JavaScript libraries (included in the file wormhole.js)
1Hybrid Project
7/23/2019 Amoozesh Android Full
208/274
208
Wormhole ++C
main.cppinclude wormhole.js
index.html
.
:
1. JSON messages(MessageStreamJSON)
2. string stream messages(MessageStream)
))JSON messages
1mosync.bridge.sendJSON()
.++C
:
mosync.bridge.sendJSON(message, callbackFunction)
message .String
.
.
1Built in
7/23/2019 Amoozesh Android Full
209/274
209
.1 callbackFunction
.
2
)
(
.
))string stream messages
( JSON messages 20
.(
mosync.bridge.send(stringArray, callbackFunction)
.
.
.
.Hybrid
File > New > Project >
1Optional
2Asynchronous Mechanism
7/23/2019 Amoozesh Android Full
210/274
210
MoSync Project > HTML5 > HTML5/JS/C++ Hybrid Project
Template
.
JSON message
string stream messages .
++C
1
...
C++ .
.
.
++C .
1Vibrate
7/23/2019 Amoozesh Android Full
211/274
211
++C
:
callJS("alert('Hello World')");
alert("Message_string")
.
.
;()Toast.makeText(this, "Message_string", 1).show
).
(!
.
.
:
int x=getUserAge();
charfunc[512];
sprintf(func,"alert(%s);",x);
callJS(func);
7/23/2019 Amoozesh Android Full
212/274
212
.
!
charx[]="MiladFashi";
charfunc[512];
sprintf(func,"alert(%s);",x);
callJS(func);
. char*x
!
.
.
1
)
: (
sprintf(func,"alert( ' %s ' );",x);
.sprintf
1single quotation
7/23/2019 Amoozesh Android Full
213/274
213
)(Concat sprintf
+
.
.
()strcat strcat
.
()strcat
.
strcat
.
.
Break point Hybrid .
.
()callJS
.
7/23/2019 Amoozesh Android Full
214/274
214
.
maGetScrSize())
API
maapi.h(
()setBoxSize
flipbox
).
3
7
.(
:
)(html
: string stream messages
window.onload=function()
{
mosync.bridge.send(["Custom", "screenSize"]);
}
:
voidhandleMessageStream(WebView* webView, MAHandle data)
7/23/2019 Amoozesh Android Full
215/274
215
{
// Create a message stream object. This parses the message data.
// The message object contains one or more strings.
MessageStream stream(webView, data);
// Pointer to a string in the message stream.
constchar* p;
while(p = stream.getNext()){
if(0 == strcmp(p, "Custom")){
constchar* command = stream.getNext();
if(NULL != command && (0 == strcmp(command, "screenSize"))){
MAExtent scrSize = maGetScrSize();
intwidth = EXTENT_X(scrSize);
intheight = EXTENT_Y(scrSize);
charbuf[512];
sprintf(buf,"setBoxSize(%d,%d)",width,height);
callJS(buf);
}
}
}
}
setBoxSize(x,y)
flipbox
.
.
7/23/2019 Amoozesh Android Full
216/274
216
function setBoxSize(x,y)
{
$("#flipbox").animate({width:'+='+x},"slow");
$("#flipbox").animate({height:'+='+y},"slow");
}
.jquery
jQuery jQuery
jQuery jQuery.com .
.
.
.
:
Screen.width
Screen.height
Screen.availWidth
Screen.availHeight
flipbox
CSS
:
7/23/2019 Amoozesh Android Full
217/274
7/23/2019 Amoozesh Android Full
218/274
218
:
7/23/2019 Amoozesh Android Full
219/274
:
SQLite
7/23/2019 Amoozesh Android Full
220/274
SQLite220
.
.
...
.
.
.
(Client)
)
Client
(Desktop)
(
.
.
7/23/2019 Amoozesh Android Full
221/274
221
.
.
.
.
.
.
SQL ServerMySql
...
.SQLite
7/23/2019 Amoozesh Android Full
222/274
SQLite222
SQLite
2000
.
1
..SQLite
. APIdll
Table
.
SQLite
.
)(Command
.
API
SQLite
.
2
.Firefox
Firefox
1Dr.Richar Hipp
2Add-On
7/23/2019 Amoozesh Android Full
223/274
223
(.
.(
:
https://addons.mozilla.org/zh-cn/firefox/addon/sqlite-manager
Fire Fox
.
)(
ToolsSQLite Manager.)(
NewDatabase
Database
.
1
.
1RDBMS
7/23/2019 Amoozesh Android Full
224/274
SQLite224
7/23/2019 Amoozesh Android Full
225/274
225
DatabaseConnect Database
.
1
.
Provider
API
SQLite
C++
++C .
SQLiteProvider
1Php:php
Provider.
2Java: SQLiteJDBC
:
http://www.zentus.com/sqlitejdbc
3.NET: Provider phx software
:
1Provider
7/23/2019 Amoozesh Android Full
226/274
SQLite226
http://sqlite.phxsoftware.com
.
.
The Definitive Guide to SQLite
Author: Michael Owens
Publisher : Apress
SQLite
SQLite 1 2
.
2000
.
3
4
5
6
7
.
1Embedded Database
2Relational DB
3Portability
4Easy to Use
5Compact
6Efficient
7Reliability
7/23/2019 Amoozesh Android Full
227/274
227
API
C
1
Administration)
(
.
2
3
.
4
.
.
.
)
.(
Sybase SQL any
where,Microsoft 'S Jet Engine,
.
)Large-Scale(
)Embedded( ! IBM 'S DB2
EveryPlace,Oracle 's log.
1Network Configuration
2Overhead
3Network Call
4LightWeight
7/23/2019 Amoozesh Android Full
228/274
SQLite228
SQLite
.
.
.
.
Provider
.
)(. SQLite
.
C C SQLite.
.
7/23/2019 Amoozesh Android Full
229/274
229
SQLite
1
.
:
Apples Mac OS X
Safari web browser, Mail.app email program, RSS manager,
Apples Aperture photography software.
Solaris operating environment
Mozilla Projects mozStorage
C++/JavaScript API layer
Firefox, Thunderbird, Sunbird.
SQLite has been added as part of the PHP 5 standard library.
Linux-based Palm OS
Symbian OS platform.Andriod OS platform.And most smart
phone OS and cell phone applications .
D-Link Media Lounge.
Music players.
1Embedded
7/23/2019 Amoozesh Android Full
230/274
SQLite230
Complete New Yorker DVD set-a digital library of everyissue
of the New Yorker magazine-.
. SQLite 1
)(
.
Interface .SQLite C API
Tokenizer
Lexical Analyser
).
Scanner
.(
1Modular Architecture
7/23/2019 Amoozesh Android Full
231/274
231
Syntax Analyser
.
Semantic Analyser
SQL1
.
2
3
.
Virtual Machine (virtual database engine (VDBE
.
.
4
.
.
128
)opcode(
.
SQL
Select,update,delete, .
:
:SQL
1StructuredQueryLanguage
2Syntax Analyase and Validation
3Data Structure
4VDBEs byte code
7/23/2019 Amoozesh Android Full
232/274
SQLite232
SELECT name FROM episodes LIMIT 10;
)
(
0 Integer 10 0
1 MustBeInt 0 0
2 Negative 0 0
3 MemStore 0 1
4 Goto 0 15
5 Integer 0 0
6 OpenRead 0 2
7 SetNumColumns 0 4
8 Rewind 0 13
9 MemIncr 0 13
10 Column 0 3
11 Callback 1 0
12 Next 0 9
13 Close 0 0
14 Halt 0 0
15 Transaction 0 0
16 VerifyCookie 0 190
17 Goto 0 5
18 Noop 0 0
7/23/2019 Amoozesh Android Full
233/274
233
.
.
.www.SQLite.org
SQLite
:
Portability) ) : 163264
.
Big , Little Endian Byte Order
. .UTF-8,UTF-16Encoding
Compactness) : (SQLite
.
)256
(
!
Simplicity): (API .
7/23/2019 Amoozesh Android Full
234/274
SQLite234
Flexibility): (
SQLite
.
.
SQLite
)Query(
.
)).SQL Server
SQLite
)Medium-Scale(
.
SQLite
.
2 SQLite
.
2Terabyte
.
7/23/2019 Amoozesh Android Full
235/274
235
))RAM
.
256
( RAM
dirty page
Bitmap Allocation
.(
100
25
RAM
.
1
.SQLite
.
Trigger
.
ViewSQLite .
.
SQLite
API
)low-level( SQLite:
1Nested Transaction
7/23/2019 Amoozesh Android Full
236/274
SQLite236
maDBOpen: .
maDBClose: .
maDBExecSQL:SQL .
cursor handle
.
maDBExecSQLParams:SQL
)
MoRE
iOS
.(
maDBCursorDestroy: cursor
maDBExecSQL, maDBExecSQLParams
.
maDBCursorNext: .
)Result Set(.
.
maDBCursorGetColumnData: (
(
data handle
.)
7/23/2019 Amoozesh Android Full
237/274
237
)
(
)
(
.(
maDBCursorGetColumnText:
.
maDBCursorGetColumnInt:
int
.
maDBCursorGetColumnDouble::
.)(double
.
:Database API
1.
maDBOpen()
.
1
.
1Absolute path
7/23/2019 Amoozesh Android Full
238/274
SQLite238
.
2.
maDBExecSQL
insert,update,delete,
.
Command select
. Cursor Handle
.
3.
maDBCursorNext
.
.
.
4.
.
.maDBCursorDestroy
5.
maDBClose() .
7/23/2019 Amoozesh Android Full
239/274
239
.
.maapi
1
)
(
.
Open Source
.
.
:
.Vocabulary.sqlite 2
SQLite Manager
) .
.(
Words
.
VARCHAR
.
)english(
)persian(
.
.
1low-level functions
2Add-on
7/23/2019 Amoozesh Android Full
240/274
SQLite240
.
SQL
:
CREATE TABLE "Words" ("english" VARCHAR NOT NULL , "persian"
VARCHAR NOT NULL )
.
)(
.
504
.
.
.
.
7/23/2019 Amoozesh Android Full
241/274
!
#include "maapi_defs.h"
()maDBOpen .
MAHandle maDBOpen(constc
241
:
ar* path)
7/23/2019 Amoozesh Android Full
242/274
SQLite242
Path
.
.
Vocabulary.sqlite
:
"/mnt/sdcard/Vocabulary.sqlite"
) C
: (
constchar*path="/mnt/sdcard/Vocabulary.sqlite";
:
voidopenDataBase(){
constchar*path="/mnt/sdcard/Vocabulary.sqlite";
MAHandle MAHDB = maDBOpen(path);
MAHandle cursor;
cursor = maDBExecSQL(MAHDB,"Select * from Words");
charfunc[512];
chareword[50];
maDBCursorNext(cursor);
maDBCursorGetColumnText(cursor, 0, &eword,50);
sprintf(func,"alert('%s')",eword);
callJS(func);
maDBClose(MAHDB);
7/23/2019 Amoozesh Android Full
243/274
243
}
maDBExecSQL()
:
MAHandlemaDBExecSQL(MAHandledatabaseHandle,const char * sql )
: ()maDBCursorNext
int maDBCursorNext(MAHandle cursorHandle)
.
-2 : .
#defineMA_DB_OK 0
#define MA_DB_ERROR -2
maDBCursorGetColumnText()
:
int maDBCursorGetColumnText(MAHandle cursorHandle,int colum
nIndex,void* buffer,int bufferSize)
cursorHandle
.
columnIndex
)
(
.
7/23/2019 Amoozesh Android Full
244/274
SQLite244
Buffer
.
bufferSize
.
7/23/2019 Amoozesh Android Full
245/274
7/23/2019 Amoozesh Android Full
246/274
jQuery Mobile246jQury
7/23/2019 Amoozesh Android Full
247/274
247
7/23/2019 Amoozesh Android Full
248/274
7/23/2019 Amoozesh Android Full
249/274
249
.
.
UserFriendly
.
.
....
.
:
1-HDPI=high dot per inch
2-MDPI=medium dot per inch
3-LDPI=low dot per inch
7/23/2019 Amoozesh Android Full
250/274
250
)(
:
Device Name Screen Size Screen Resolution DPI
Motorola Atrix 4 540 x 960 275
Google Nexus 1 3.7 480 x 800 254
iPhone 3GS 3.5 320 x 480 163
iPod Retina Display 3.5 640 x 960 326
iPad 9.7 1024 x 768 132
PlayBook 7 1024 x 600 168
Galaxy Tab 7' 7 1024 x 600 168
Motorola Xoom 10.1 1280 x 800 150
Nook Color 7 1024 x 600 168
.
iPad 5(iOS5)
1536*2048
9
.
iPad
7/23/2019 Amoozesh Android Full
251/274
251
Galaxy mini
3
320*240
.
.
.
3
10
.
APK
3
10
.
.
CSS3(Media Query)
)screen.width,screen.height(.
.
CSS
....CSS
Media Query Adapting Pages for Mobile withMedia
Queries
Adobe Dreamweaver CS5.5 Studio Techniques
Designing and Developing for Mobile with jQuery, HTML5, and
CSS3
DAVID POWERS
.
:
7/23/2019 Amoozesh Android Full
252/274
252
http://developer.android.com/guide/practices/screens_support.html
: Screen Size .
Screen density:1
.
:
)DPI=dot per inch( )PPI=pixel per
inch(
.
dpi
ppi.
dpi
)
(ppi.
.
Orientation: . ))landscape
)portrait(
.
aspect
ratio
aspect ratio
.
1Quantity
7/23/2019 Amoozesh Android Full
253/274
253
Resolution: .
:
dpi
.
Multiple Screen Support
!
)density(
.
.
Density-independent pixel (dp)
.
Density-independent pixel (dp):
.
:
dp = px / (dpi / 160)
dp:Density-independent pixel
px: Pixel
dpi: dot per inch
7/23/2019 Amoozesh Android Full
254/274
254
dp
px
:
px = dp * (dpi / 160)
160
.
160
Density-independent pixel
.
)s5570(
.
320*240
.
Sony.dpi120
Ericsson Xperia X10 854*480 dpi245
.
160
Density-independent pixel
.
dp .
:
dp(width) = 240 / (120 / 160) = 320
7/23/2019 Amoozesh Android Full
255/274
255
120
240
.
160
320
).
2
.
120
240
2
(.
dp(Height) = 320 / (120 / 160) = 426.67
.
!
:Xperia X10
dp (width) = 480 / (240 / 160) = 320
240
480
.
160
320
.
dp (Height) = 854 / (240 / 160) = 569.3
7/23/2019 Amoozesh Android Full
256/274
256
)maGetScrSize.(
.
++C
++C HTML
)
. (
screen.width
screen.height 160 -Density
independent pixel
!
.
.
.
.
7/23/2019 Amoozesh Android Full
257/274
257
25
544
.
.
569
.
.)
.(
:
maScreenSetFullscreen(1);
)(
.
Emulator AVD
.
.
Run
Run
configurations .
.
.
Low density Medium High density Extra high
7/23/2019 Amoozesh Android Full
258/274
258
(120), ldpi density (160),
mdpi
(240), hdpi density (320),
xhdpi
Small
screen
QVGA
(240x320)
480x640
Normal
screen
WQVGA400
(240x400)
WQVGA432
(240x432)
HVGA
(320x480)
WVGA800
(480x800)
WVGA854
(480x854)
600x1024
640x960
Large
screen
WVGA800**
(480x800)
WVGA854**
(480x854)
WVGA800*
(480x800)
WVGA854*
(480x854)
600x1024
Extra
Large
screen
1024x600 WXGA
(1280x800)
1024x768
1280x768
1536x1152
1920x1152
1920x1200
2048x1536
2560x1536
2560x1600
* To emulate this configuration, specify a custom density of 160 whencreating an AVD that uses a WVGA800 or WVGA854 skin.
** To emulate this configuration, specify a custom density of 120 when
creating an AVD that uses a WVGA800 or WVGA854 skin.
This skin is available with the Android 3.0 plaorm
7/23/2019 Amoozesh Android Full
259/274
259
.
)3
(
.
QVGA
.QVGABuilt-in skin
XperiaX10: .))4
WVGA854 skin
Built-inWVGA854.
Samsung Galaxy Tab 2 (10.1): )10.1
(
.
WXGA
skin
Built-in
WXGA
.
Android 3.0 (API level 11)
.
.
)(
.
7/23/2019 Amoozesh Android Full
260/274
260
)
(
.
160
.
.html
.
document.write(screen.width);
document.write(",");
7/23/2019 Amoozesh Android Full
261/274
261
document.write(screen.height);
10
1280 x 800 px
)1280>800(
)landscape(
.
.
800*1280 !
Orientation
.
Orientation .
MoSync\examples\cpp\ScreenOrientation
.
)
(
)(
.
7/23/2019 Amoozesh Android Full
262/274
262
7/23/2019 Amoozesh Android Full
263/274
263
CTRL+F11
).(.
))MoRE F4
).
.(
7/23/2019 Amoozesh Android Full
264/274
264
ScreenOrientation
MAUtil::Moblet
Orientation
.
maScreenSetOrientation()
.
int maScreenSetOrientation ( int orientation)
.
.
:
#define SCREEN_ORIENTATION_LANDSCAPE 1
#define SCREEN_ORIENTATION_PORTRAIT 2
#define SCREEN_ORIENTATION_DYNAMIC 3
3
SCREEN_ORIENTATION_DYNAMIC
7/23/2019 Amoozesh Android Full
265/274
265
Orientation
.
12
.
.
.
2
.
maScreenSetOrientation(SCREEN_ORIENTATION_DYNAMIC);
:
//Get the screen size.
MAExtent extent = maGetScrSize();
MAExtent maGetScrSize( void )
maGetScrSize()
MAExtent
.MAExtent
typedef int MAExtent
.
.
. Orientation
voidcustomEvent(constMAEvent& event)
7/23/2019 Amoozesh Android Full
266/274
266
Orientation
.
.
)
:) rotateUI
if(event.type == EVENT_TYPE_SCREEN_CHANGED)
{
rotateUI();
}
EVENT_TYPE_SCREEN_CHANGED
21
.
.
extent MAEXTENT
.
Orientation
.
7/23/2019 Amoozesh Android Full
267/274
7/23/2019 Amoozesh Android Full
268/274
7/23/2019 Amoozesh Android Full
269/274
269
.
:
rotateUI() .
window.orientation 4
:
90:
.)
landscape(
0: .( /
portrait
.(
-90:
.
180:)( .
7/23/2019 Amoozesh Android Full
270/274
270
Orientation in HTML5
div.background
{
background-color:#f9c456;
margin:0;
}
img.openPanel
{
opacity:0.4;
position:absolute;
filter:alpha(opacity=60); /* For IE8 and earlier */
}
//global variables
7/23/2019 Amoozesh Android Full
271/274
271
varX;
varY;
varmaxX=1280;//maximum width of screen(Samsung GalaxyTab2 10.1 inch width for base of calculation)
varmaxY=800;//maximum height of screen(Samsung Galaxy Tab210.1 inch height for base of calculation)
window.onload=function()
{
setSize();
}
functionsetSize()
{
X=screen.width;//width of native device
Y=screen.height;//height of native device
//set size for multiple screensupport(tablet,handset(smart phone),...)
//setting background :
$("#bg").css("width",X);
$("#bg").css("height",Y);
//setting openPanelButton:
varopenPanelWidth = parseInt($("#openPanel").css("width"),10);
varwidthCalc=(X*openPanelWidth)/maxX;
$("#openPanel").css("width",widthCalc);
}
7/23/2019 Amoozesh Android Full
272/274
272
functionrotateUI()
{
if(window.orientation!=180)/*window.orientation==90 ||
window.orientation==-90 || window.orientation==0*/{
//Exchange X and Y dimension
vartemp=X;
X=Y;
Y=temp;
}
//Rearrange background
$("#bg").css("width",0);
$("#bg").css("height",0);
$("#bg").animate({width:'+='+X},"fast");
$("#bg").animate({height:'+='+Y},"fast");
}
7/23/2019 Amoozesh Android Full
273/274
273
7/23/2019 Amoozesh Android Full
274/274
274
.
.