Tải bản đầy đủ (.docx) (79 trang)

Đồ án xây dựng phần mềm điều khiển nhà thông minh bằng thiết bị Android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.21 MB, 79 trang )


KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Ngành Công nghệ thông tin
Đề tài:
XÂY DỰNG ỨNG DỤNG QUẢN LÝ
THIẾT BỊ ĐIỆN TRONG TÒA NHÀ
TRÊN ANDROID
 ĐÀO TRUNG SƠN
!" CNPM - K7C
#$%!&'( ThS. BÙI QUY ANH

LỜI CẢM ƠN
)*+,-.*/
 0123456789:$;<&&=->67?<&90
@<&&<&->67?<&
 A*'#B)+"C$>&D66>E6E>17'EEC$"*E
$$"E>;$>6>;C$>E;*16""$>E'F7E+1&";>E>1"1
;;>E1;'1EE';"">$;GH*I1JK)LMNNKMOOP
4&#Q7<&#$>%R&0@<&&<&->67?
<&SI0$*@S?6T&U"SVE*>$&16JR&;SW#P
>$&X6#>YSW#J&"T<&Z>#T[\&1/
16]PY^7_E*>]*$&^S%`1Sa&&a"bTcA;Q7<-F0
FdSZSW#S%`$-/P
Thái Nguyên_#&ef*LMNg

Đào Trung Sơn
L
LỜI CAM ĐOAN
)*+;*S$;TcX6.S0S%`>$&SW#C-1."h*A;>&#,


E*_T<&1;$i"C0A;&%RT#P>$&$-Fjj'6&SW#_\&S?6
S%`>YF-7C-A;#,E*$kC-S%`l&`"m?6&6W-C6
;*T.$*-E*SInC@S%`SZC]7>;\&<&Qc-Flo
"pp$SW#P].-C6;*T.$S?6a+6]+q>r>-&-S%`>o
'(`""#"P)*+s6$-$->#*-s6*@YqTtC6^
E$X67Ss$CR;*S$;A;*YP
Thái Nguyên_#&ef*LMNg

Đào Trung Sơn
g
MỤC LỤC
u
DANH MỤC HÌNH ẢNH
e
LỜI NÓI ĐẦU
&-7;7_<&&<&C-*j>$&\&&-S;&"#>Z>]
*0*v-a.%w&1,6>j&Sc*@*kSR1J&PaC-?.&A;
?Tc>q_C-%!S$>YSj"#>ZA;*jX6J&;PxIj-
Tc"#>ZSy[<&&z&"."#>ZP<&&"#>Z_
$&%R&-7-&"#*>;\&cFs<&&1J<&*&U"
SV$&%R?>]?6*k>$&6j1J&P4&!SaC-X67*<S<sa;
!-&C$0#<&>YTc>USW1jSI-S;&S%`+,7'&>*@
*?lX6J_&a""Q$1"#>ZTcP
x6%!&-6Q6<&&a;&-7-&f&;$_S?6TZ#
cFsS-X6.Cby;-%w#%!<&&"T<&y+;C0_
%&TZ*1$#-S?6TZcFsS>$&y;-F{&\&c
Fs'Sj&Q*;7%1*;>"$E;7*#7oF.&Y*!twX6#>Y=
&*$k"#>Z%;"lFcP$&%RtQ&W*j|aZ
C-*S%`?6_S?6TZS%`#cFsS>$&-_$kSS,6Sa
+;-z&aZTZ*1$#S%`YY>$&-F{&S$0$k*#7

oF.&<&X6;*0&E>*EP
x6]"#mc>_E*@S?-Bx,7'&q&'p&X6.CbcFs
S>$&y;->8'>$'PG$F#$#$^"J&"P?-C-*j
"Q>$&j'6&&q6A;'# 9>%R&}P
3#$#$S%`lq-g%/&!#j'6&o%1;6
Chương 1 – Cơ sở lý thuyết: b67c/F.?#&;$q-/c
>$&J&_1/X6;?S?6-8'>$'_Tc>U-$0Sj&A;q&
'p&8'>$'_S?6-$T-*0&.*FcT<&',7~•€P
Chương 2 – Phân tích thiết kế hệ thống:!6?q&'p&_*<Y
6&A;J&->YF-7pZ?m&qf&A;q&'p&X6;#
FZ6SW• P
Chương 3 – Cài đặt chương trình:>YF-7?#-Sk-1='p&q&
'p&_*<.X6#>Y$0Sj&>&;$'A;q&'p&Td*Y.*
@;P

CHƯƠNG 1
CƠ SỞ LÝ THUYẾT
1.1. Các giao thức truyền dữ liệu và cơ chế chuyển đổi

ƒC-\cnm7"E>E+>;1DE>ƒ>$$$C~&;$q>67?.
16fF.€P,7C-&;$q/F.*-•$>C'•'E•EF1='p&Pƒ+#
Ss##<&S"~#DCEfF._Y.SW@;_,*;_'E$_-
#DCE*6C*E';T#€S%`Ss'0&->67?.>;1;$_-\&-
Sj&-$*-#•EF1E>E>~*#7A•EF€-#>Y'67•EF".C-*SZ
S#"q&#C>]S;'0&Pa<*;/_ƒC-&;$q>67?.#
DCEm*j•EF1E>E>-$*j>Y'67•EFSZ&%R'4&aZ+E**j
>;&•EFS;&'>E>EP
ƒC-*j&;$qq&'p&07w>4&A;Fj&;$qƒ„ƒ
~#&;$q?.&$E>E€P
a*j66hoT#z&S?6TZ#q•$>C'•'E•EF

C-*C-• ~7"E>E+•;>T6" ;&6;&E_&<&\S#']616f
F.€_aqf&X6.Cb#q*-#>;&•EFS%`Ss'0&-Z
sP
&%R;&@ƒC-*j&;$qB">0&#G~1;ECE11€FwY*|
CS?6S%`*j#SjC^"_C1;6T<&FcF]qS?6&Y?
#CSISc>%!*YP,7oC-*j0c_Tc*T67cA;ƒP
aC-&67,oA;Y>0&>]Ta#>;&•EFaT.
f&".q&<&*SJ!C*-&%R'4&0"-$P-10c
-7S;&S%`#-"#>ZTn"p>$&#<&&*!%
8Ex_…;;_…;;>"-$$TE1P
ƒF.*!]A;ƒC-NPNP$!"F.&67A7~ƒ
NPM€_"F.*!-7>67?.#>;&•EF;/-&.*Y>0&

n&v&;$<&•EFP
Hình 1.1– Giao thức HTTP giữa thiết bị cá nhân và máy chủ
 !"#$%
\6oA;#'sp‡EF>*0&E>ETca&-7-&>wC
"lFc>$&].#q&'p&_-a"p6j-$Tc>U?.&A;
)~E">E1E;$;C;E>;1DE>967ZSl>0&#S0'€>$&
‡EFP
#*<>%R&)D6C‡EFa-&670c~$1>;E')D6C
)>$*E1H$)€%!&ScTc>U)>$&*jT6<'0&o
`"'-$Q6c#U*0&a-&67Fs0c~'#S?6
TZˆHF!'6&C%`&8•}‰•Fs0c€-#*0&-&67
0c~'‚ $•ƒ8€P#*0&a-&670c%‚ $•ƒ8|
>`",S$0~!"oSn€A;#&aƒ‚";TE11;&#Š>;*E1
aTo%![A;C!"CTc^Cb~CT9C;7E>€PYc#&q6^"
>6&-$"#>Z&;$q$8ƒ~$1>;E'8""C;$ƒ>$$$C€&U"&\
"o#F.*E11;&E$E>E;'[-0c11='p&A;/c",
S$0P

•j>$&\&*pSooA;$8ƒC-cTc*j&;$q‡EF
6&'-$#76Q6SkF>$&*<>%R&*0&Fs&!0?*k
-&67-7_SkF^">6&-$]S?f&C%`&_]6YSj&-
#q&'p&*;EH$H*;E~•L•€T#P•pSoA;$8ƒT<&".
SZiƒ_*-SU&/C-*;&C0*j^"$#)6&!ƒ
%&S%`J%6'-$#q&'p&•L•P•k'4$8ƒaZS%`1=
ˆ
'p&$i#&;$'ƒS/&._%&Sa&&a"X6;>@&A;a
SaC-S%;>;#SkSZ*&nC?!#q&'p&'-$•L•%C-T#*
"#~'1$E>7€-&67_|>`*6C;1->;$Sl#F.T<&SW&
FjP
Hình 1.2– Giao thức CoAP giữa server với các node trong mạng cảm biến
&'() !
$;"a#SkSZ*o%1;6
• ;$q‡EF0c"ppSQ7SA#76Q6•L•P
• ='p&‹ƒ!#47@|>`>67?^7'-$#76
Q66;1-*6C;1P
• >;$Sl#F.T<&SW&FjP
• "oE;'E>]"~C$‡E;'E>$E>E;'€-67Z'0&"q0"P
• |>`-#TZ6j'6&P
• ƒ>$+7S/&.-aT.f&!S*P
• Œ+0ƒ">0&#_$"i"#">$+7S%`'&C-S%;>;
#>67^"Sc&6W-&67$8ƒE$%!&%ƒ>$&*j
'0&SW&]$k$#&;$'ƒS/&.S%`'&CSZ
;7c$8ƒP
• :cJ;$-!C%`SW'\C6F.$*^Q&&;$^~‹;;&>;*
>;1"$> ;7E>E6>7H‹ €P
 *+
#mTa;B•G_B•‰G_B)5)‹G_B8 G_B8
‰G_  B‰ ‹G_  B‰ ‹  ‰G_  B)‰••)‹)‹G_  B•8G  -

B‰ƒ‰8 G>$&-C6-7S%`Ss&2;>$&•ŠLNNOŽTU&
O
S?6S%`c$;P>$&F#$#$-7U&+6]'%!'0&\c%R&
SZ6^$'•Z6P
• Endpoint:•jZ;*&;-$&;$q$;"PY6&_*j
SZ*6J$0Sj&%C-*jU*0&B$'EGPUB$1G%R&W
0C,6/1$!UBCEG>$&*0&E>EP
• Sender:Z*SQ6A;*jF.P:'*0$^">6&-$*j
SJ%`&F&=pZa1vS%`&@C-SZ*&6WB1$6>EE'"$GP
• Recipient:Z*6J4&A;*jF.P:'*0$^">6&-$
*jSJ%`&F^pZa1vS%`&@C-SZ*SoB'E1;$
E'"$GP
• Client:Z*F;SQ6A;*j76Q6_SZ*SoA;*jS#"q&>.?P
• Server:Z*6JA;*j76Q6_SZ*F;SQ6A;*jS#"q&>.?P
• Origin Server:•#7A>$&Sa*-*j-&67Fc>%!C%6>U
$kS%`0$>;P
• Intermediary:•jSZ*SQ66J$8ƒ*-a;>y$0Sj&%*j
1E>E>$k*jCE~aZE$%!&>6&&;/\;€%!&?
*j‰>&1E>E>Pa;C$0>6&&;"lFcSaC-">$+7->EE>1E
">$+7P>$&*j1J>%R&`"Y*jSZ*SQ66JaZ%+=%
*j$>&1E>E>_">$+7$k>EE>1E">$+7_;>y67ZSl';E$
>0&#A;*|76Q6P
• Proxy:•jB">$+7GC-*jE'"$S%`C;@Fw*jCE_%R&
S%`]6YpFj_SZFZ6'•#76Q6;7$#CE_
F]TY's~>;1C;$€Qc-$P•j-67Z'sS%`
JZ6_%C-#">$+7"pp#76Q6'-$B$;"G_
>$&T#76Q6T#aZ76Q6's>;$k's?#
ZT#;6#&;$qQ&q&'p&P
• Reverse Proxy: -*jE'"$*-$0Sj&%*jC!""o;>*j
-*#7A-[;*I#76Q6;7c$U&_F]T•

/c'sQc-$P:<&&J&%*j">$+7_>EE>1E">$+7
^#76Q6TaC-U&J$-&67So‘CE"#>;76
Q61vT<&bqS%`>{&aS;&&;$c"!*j>EE>1E">$+7P
• Confirmable Message:•j-F.76Q6Qa"US#">.?P
#F.-7&@C-B$D>*;FCEG~+#^€P:*-T<&a&a
NM
-$Fs*]_*|F.+#^1vao+#*jF.>.?E$
TZ68:$kTZ6E1EP
• Non-confirmable message:•j-F.T<&76Q6"US#"P,7
C-Sko>&A;*j-F.%R&S%`Ck"C0'-$#76
Q6q&'p&_%C-Ck"C0S@m*j.*FcTSA#1T
Jc"P
• Acknowledgment message:•jF."US#"1v"US#"C0*jF.
confirmableTaScPaT<&t>;1-<&;7]F0
A;F]T•76Q6S%`F;$&W*-$P
• Reset message:•jF.reset messagets>{&*jF.pZ
~confirmable $k non-confirmable€ SI^S%`_%&S<Ta
T<&S%`1=CbSU&P?6-7%R&+.7>;TU^SITw
Sj&C0-SIX6*j->0&#*-76Q6QS%;>;CR&.o
?F.P
• Piggy-backed Response:aF;$&W*SU&*jF.$8ƒ8:*-
S%`&=!F^"US#"A;76Q6'-$S#"q&-7P
• Separate Response::*jF.confirmable*;&*j76Q6S%`
"US#">.?!*jF.>J&~'FwY*#7A>.CRT<&
SU&#€_*jS#"q&>&~separate response€S%`&=S>$&*j
F.>;$Sl>&P
• Critical Option:•j47@Q#SZ*SQ66J^F.Z6
S%`SZ+=CbSU&F.PUb>{&>ZT;critical option_%
&pbB$"$GA;a_Y6&T<&|>`47@'(Sc
C$0F[F.P

• Elective Option•j47@*;&bSsFsF[X6;Fw*jSZ*SQ6
6J*-T<&Z6?aPx=CbF.^*oT<&QZ6?47
@S%`$"i"P
• Resource Discovery:c>Y>$&Sa*j$8ƒCE&=>67]
Sc*j*#7A?';1##*#7AC%6>\-&67P
,- !
•<Y%/&#A;&;$q$;"%/&%*<YCE„1E>E>A;
ƒP67_#TcX6.%/&#•L•>$&*j>ZT;$;"Sa&
;>y%.CE-1E>E>P•j76Q6$8ƒ1v&J&%76Q6>$&
NN
ƒ_aS%`&=m*jCESZ76Q6*j+=Cb>*j-&67~S%`
^'0&Fw*jSs;t€>*j1E>E>P•#7A1;6Sa&=C0*jS#"
q&>.?!*j*IS#"q&‘S#"q&-7aZF;$&W**j1>YF-7-
&67P
:<&&J&!ƒ_$8ƒ",##F.>;$Sl-7T<&SW&
FjX6;*jC%`SW'\C6a%!&%C-‹ƒP?6-7S%`*j
#C$&1='p&*jC!"#F.*-|>`#47@^7P$8ƒ
Ss&2;uC$0F.$D>*;FCE_$€$D>*;FCE_8T$‡CE'&*E_
E1E‘#*E$'$'E1-#>E1"$1E$'E1F;$&W**j-F.C-*$
U&*;&#76Q6S$k*;&#S#"q&>.?P>;$Sl/F.
]  A;  u  C$0  F.    -7  /  a  o  >  &;$  &\;  #  F.  
>EX6E1„>E1"$1E‘#76Q6aZS%`*;&>$&F.$D>*;FCE$k
$€$D>*;FCE_#S#"q&>.?z&aZS%`*;&>;C$0F.
-7$kU&S%`r&>F."US#"P
$8ƒaZS%`c"^E$*<YC$&uC!"_*jC!"F.$8ƒ
1='p&SZ>67?'\C6‹ƒ-*jC!"F]SW&FjA;#%/&
#_C!"#%/&#>EX6E1„>E1"$1E1='p&#*I76Q6-#*IS#"
q&P$;"1='p&*jS/&;$q_!&=F.->EX6E1„>E1"$1E
0$C#SkSZ*A;$;"E;'E>P
NL

Hình 1.3- Phân tầng trừu tượng của CoAP
Lớp message
!"*E11;&EA;$8ƒ';>>;$Sl#F.F{&‹ƒX6;#
SZ*SQ66JP
$8ƒ1='p&*j^"6S?E;'E>s",&naSj'-JSs~u
F7E€S%`E$1;6Fw*jT$.&47@s",-*j.";7C$;'Ps
'0&F.-7S%`1='p&>$&#76Q6-#S#"q&P•|F.
q;*j‹*E11;&E1='p&SZ'yY*#F.1;$Ck"-'-$47@
Sj^7P
Lớp request/response
&2;A;$8ƒ>EX6E1„>E1"$1EC-*;&E$#F.$8ƒ_U&F;$
&W*$kC-*I76Q6$kC-*IS#"q&P#<&47@~$k*k
Ss€$>EX6E1->E1"$1E%C--TZ6j'6&.>@&";7C$;'
S%`*;&S%C-#47@A;$8ƒP•j’F-47@S%`1='p&
SZ"J`">E1"$1E!>EX6E1SjC^"!#F.C!"'%!P
Trung gian và nhớ đệm
;$q$8ƒ|>`!S*#S#"q&SZ"pp6X6.SQ7SA
#76Q6P!S*S/&.S%`$"i"T1='p&#<&%/
*!-<&TZ*>;S%`*;&4&!#S#"q&$8ƒP4&!
S*S%`Sss>$&#SZ*SQ66J$k#>6&&;P
Chuyển đổi từ CoAP → HTTP
c676Q6~EX6E1€Scaq;>%R&47@ƒ>$+7‰"$!
#Ss;tFnSQ6C-“"”$k“"1”•ŠL‚N‚Ž_1;6Sa#SZ*6J
^F.$8ƒ~S%`&@C-B">$+79*#7A7X67Z€S%`76Q6S%;>;
$0Sj&pZE$"%/&"#"76Q6~EX6E1•E$'€F"o;ƒ
S%;>;->.?TcX6.A;76Q6Sc*#7T#~CE€P>$&"Q-71v
t>;##qSZF]T•76Q6$8ƒ-#S#"q&$8ƒ1vS%`
ƒ>$+7+=Cb->.C0*#7T#P
Ng
‹$$8ƒ-ƒ4&a6&^"#"%/&q/F.~>EX6E1

*E$'€_FZ6'•*j76Q6$8ƒSc*j-&67ƒ1vT<&
T#?61$!76Q6-7Sc-&67$8ƒP•j1J#"%/&
q>&A;$8ƒTFZ6'•-$&6W-&67ƒ1vS%`>YF-7
cF'%!P
c6*#7A7X67?~ƒ>$+7€T<&Z"pp*j76Q6*;&Ss;t
ƒ_*IS#"q&ePMe~ƒ>$+7&$6""$>E'€1vS%`>.?$*#7
T#Pc6*#7ƒ>$+7"pp76Q6ScA;*#7T#F{&#`"#
!*jFqg~%C-*#7Aƒ&J€-T<&ZS0S%`TcX6.
>$&*jT6&R&;`"Cb_S#"q&ePMu~;E‡;7*E$6€1vS%`>.
?‘c6aTcX6.>.?%&TcX6.-7T<&S%`Z6_*jS#"q&ePML
~3;';E‡;7€1vS%`>.?P
Chuyển đổi từ HTTP → CoAP
c6*j76Q6ƒ*-F>$&Ss;tA;76Q6aq;#
6S?“$;"”$k“$;"1”_SZ*6J^76Q6ƒ~*#7A7X67?9
ƒ>$+7€S%`76Q6SZFZ6'•#$0Sj&S%`t>;Fw"%/&q76
Q6~>EX6E1*E$'€C-&67$8ƒSItSs->.?TcX6.$*#7
T#P
>$&"Q-7t>;#F]T•76Q6ƒ~ƒ>EX6E1€-S#"q&
ƒ~ƒ>E1"$1E€*-*#7A7X67?~ƒ>$+7€1v>.?$*#7T#P
#qC-*c-$">$+71v+=CbC-*[;*I#76Q6!_*k'4
>%R&`"<&%R&*#7A7X67?1v's-67Zc"76Q6!*#7
A$8ƒ&JPc?#"%/&qƒ~ƒ*E$'€1vS%`>Y
F-71;6S,7Pc6*j*#7A7X67?T<&Z"pp*j76Q6Sc!Ss;
tA;$8ƒ_*j*IS#"q&eMN~$*"CE*EE'€S%`>.?*#7
T#Pc6*#7A7X67?"pp76Q6F{&#`"#!Fqg~%
C-*#7A$8ƒ&J€-T<&Z6S%`TcX6.>$&*jT6&R&;
`"Cb_*IS#"q&eMu~;E‡;7*E$6€1vS%`>.?‘c6aTcX6.6?
%&C0T<&S%`*#7A7X67?Z6_*IS#"q&eML~3;';E‡;7€S%`
Nu
>.?P

1.2. Hệ điều hành Android
!../0-1
8'>$'C-NS?6-$cFs'Sj&';>"F.1=;SlA;
6+P
$$&CE*6J8'>$'>w-*w-'$_Q6c#*I&6WS?6
S%`"#-'%!'0&*I&6W*w8";E EE_&2;C-*@&%R
'4&8'>$'S?6aZ.*I&6WSQ7SAA;8'$'P/\;8'>$'a
*"Q*w>j&SZ&6R'4&aZ47t0$>;1T#;6&\;
\&&6R4&1='p&Pc6J-7C-*$8'>$']"'(/#S?6
-4&a*P
`coA;1='p&8'>$'SZ"#>Zq&'p&C-8'>$'
6&]"#c"^J]SZ"#>Zq&'p&P#-"#>ZtQ
"#>Z$8'>$'C-#q&'p&SaaZ07>>]?6cFsT#
;6_*•C-cFsSa|>`8'>$'P>$&c&!A;S$0<&
*Y]S?o`""Qq&C-SZ*X6;>@&SJ!#q&'p&_
TSI1='p&8'>$'C-*?.&SZ"#>ZY1vaS%`>]?6C`c
?*k-7Y#1."h*cFs<&*|>`8'>$'&-7-&S6`
%;6j&P
2%3!..4567
YF'%!$]7#Q&T#;60$S?6-8'>$'P
Ne
Hình 1.4– Các tầng trong hệ điều hành Android
6"89:49:2;;//;7
S?6-8'>$'S%`"#>Z';>0,C6+_pZC-0
,C6+"F.LP‚_S?6SaS%`ZwC!"'%!4&wYNPNP]
.*@$0Sj&A;S$0*6J-S%`YS?6S%`w
*q]"]"wC!"-7F;$&W*X6.CbFj!~*E*$>7*;;&E*E€_&;$
c"!"Qq&~'>E>*$'EC€_F.$*^~1E6>7€_X6.Cbc>Y
~">$E11€P
67S%`"#>Z';-$,C6+%&>;,C6+SIS%`,&

]"-1=;Sl>]?6SZ"4`"!o]A;\&cFsQ*;7%
0c?Fj+=Cb_'6&C%`&Fj!_To%!*-Y_6QTcJ
*0&T<&',7PPP
Q&-7a#-"QA7c6
N‚
• Display Driver?6TZZsC*-Yz&%6^
\&S?6TZA;&%R'4&C*-Y~'67Z_.*q&PPP€P
• Camera Driver?6TZ$0Sj&A;;*E>;_^C6W&'\C6m
;*E>;>.?P
• Bluetooth Driver?6TZcFs"#-61a&3C6E$$P
• USB driver56.Cb$0Sj&A;#l&&;$c"3P
• Keypad driver?6TZF-"o*P
• Wifi Drivers6>#*?6"#1a&‡DP
• Audio DriverS?6TZ#Fj6"#,*;_&.*I#o6
'0&;6'$-o61J-&%`C0P
• Binder IPC Driver s6>#*? TcJ-CC0!
*0&<67c%‹•8_•_g_u_)SZS.*F.$\&q
f&>67?<&S%`P
• M-System Driver56.CbS@&PPPC#cFs!%’
‹_DC;1P
• Power Madagement :#*1#6pSf&P
69$<0..;
ƒQ-7aL-"QC-"Q F>;>7-8'>$'6*EP
1. Phần Libraries:
ƒQ-7a?6%S%`cF{&„••SZ#"Q*?*aZ1=
'p&_#%SaS%`^"`"-*j1Ja*%
• Thư viện hệ thống (System C library)%';>6h_S%`
1='p&tFwS?6-P
• Thư viện Media (Media Libraries)a?6$'ESZ|>`"#
-&#C$0Ss'0&,*;_Y._'E$<&'p&P

• Thư viện web (LibWebCore) :,7C--"QSZ+E*j'6&>
‡EF_S%`1='p&SZ+,7'&"Q*?*'67‡EF~8'>$'3>$‡1E€
z&%SZ#q&'p&T#aZU&-$PaT•*0_|>`
S%`?6<&&*0*v%• e_…;;>"__‹‰•_
8…8x–
• Thư viện SQLite/1w'\C6SZ#q&'p&aZ1='p&P
2. Phần Android runtime:
N†
ƒQ-7q;#%*-*j%/&>YcF{&&<&\…;;a
Z$0Sj&PƒQ-7aLFj"^%/&%*<Y07…;;>*#7
o%R&Pq]C-#%Cr~$>E F>;>7€_q;#C!"%
…88‰_$CCE$1_ŠCE8E11Pq;C-*j*#7.$—;;~‹;CT>6;C
•;E€P
•k'4z&S%`cm&<&\…;;%&*jq&'p&…;;A;
S?6-;'>$'T<&S%`07F{&…)A;6~;7C-‰>;CE€~…•€*-
C-07F{&*#7.$‹;CT'$$$&CE"#>ZP
6!==/>;?@
Q&-7+,7'&Fj<&pH#"Q=w*q;$SZ#C^">Y
aZ;a&+,7'&q&'p&PaS%`cF{&…;;_aT.f&1=
'p&6&SZcT*-&67P
,7C-*j?.&*w_S?6SaaLC`c
!#I&1.+6]S$0aZ47FcSZ"4`"!]6Y
S$0*-@1.+6]z&%SZa?6*(6*I_"$&#`"sc6
&%R'4&P
Yc674&6&?.&8'>$'*-S$0A;$$&CEaZ
T#˜!•$$>$C;__H•$FCE_;*16&PPP
!C^">Y$"i"C^">YaZ1='p&#8ƒwQ&
>*-T<&Q".Z6>r]6>UF'%!_0$S?6T$C^">Y
'$1#&0$FwYtQX6;,*Scj'6&*-q&'p&@C-*P
•j^"`"8ƒ>]\6oS%`+,7'&1™%J&Sss_#'s

p07?_CC0&\;#q&'p&_#-"Q&;$']";$PPP
!6*j1J-"QA;Q&-7
• Activity Manager56.Cb#6T•1J&A;*jq&'p&z&%
6&]"<&pS?6TZ#87P
• Telephony Manager6&]"<&pSZCC0%

&@S$0P
• XMPP Service6&]"<&pSZCC0>$&R&;P
• Location Manager$"i"+#Sss>oA;S$0$0';-$
J&Sss$-Q6ƒ-$$&CE•;"1P
• Window Manager 56.Cb+,7'&-Zs#&;$'
&%R'4&z&%lqX6.Cb#&;$'&\;#q&'p&P
• Notication Manager :56.CbZs#<&F#$~%F#$a
n_aEH*;C*!PP€P
• Resource Manager56.Cb-&672A;#q&'p&F;$&W*
#DCEY._,*;_C;7$6_1>&P~\&-"QT<&S%`
cFw&<&\C^">Y€P

56!==/
,7C-C!"q&'p&&;$c"!&%R'4&_F;$&W*#q&'p&%
#q&'p&/F._S%`-SkSC?!S?6-C-&@S
~"$E€_X6.Cb';F0~$;1€_'67‡EF~3>$‡1E>€_n~•€_Cs
C-*~;CE';>€_S@EH*;C~)*;CHCE€_F.SW~•;"€_X6;7"*p"
.~;*E>;€PPP
#q&'p&S%`-*%#"Q*?*q&T$#~$T€_#>y
/~;*E€_mSZPPP
#%/&>Ya#SkSZ*C-
 cF{&…;;_"Q*w>j&C-;"T
 :*|q&'p&S%`07_aa*j"F.>6;C•;ES%`
'&CSZ"pp$aPaaZC-*j8Eƒ>$&>;*%/&

>Ya&;$'!&%R1='p&$kC-*jF;T&>$6'%/&
>Y07?;7C-'spP
 8'>$'C-S?6-S;*_&2;C->$&4&*jRSZ*_a
Za?6%/&>Y4&07*jCU_67_!*|q&'p&
Ya'67]*jZ~1;E€S%`"i"07*-<P?6Sa
a#'p&0c1C0*'p&-&67_&U"J&$0Sj&J
/P
 #q&'p&S%`&#1J‹A;&%R1='p&{",SsX67?
NO
0T1='p&-&67_]6Y"Qq&-J&P
 8'>$'C-*jS?6-ao*w_T#!?6S?6-'
Sj&T#_;'>$'$"i"*jq&'p&A;FqF;S%`"i"
07?P#q&'p&Sata*j0c[SaC-aT<&S%`
"i"1='6&X6#ešNM›<&16]ƒ_S?6Sa{SZ>#Sj
X67?>$&1='p&ƒP
œ&'p&T<&aSZ*-$JSs_T<&a"%/&q*;SZFnSQ6P
AB(C!..
8'>$'a/cX6.Cb#">$E11E$cSj%6P#">$E11a
">$>7]"1vFs8'>$'&."a&*-T<&?.F#${*S.*F.$-
&67P
• Foreground processC-">$E11A;q&'p&RS;&S%`&%R
'4&%/&#P
• Visible processC-">$E11A;q&'p&*-;7S;&ZsSJ!
&%R'4&~$ƒ;61E'~€A;;7S%`&@€P
• Service processC-E>ES;&S%`07P
• Background processC-">$E11A;q&'p&*-#;7A;aT$
Zs!&%R'4&~$$"E'~€A;;7S%`&@€P
• Empty process">$E11T<&aF]qN-"Q-$;EPE$
cSj%6YTQ-&67_8'>$'1vSj&TCC">$E11_
>%!C-#E*"7">$E11P

Vòng đời của Android Activity:
%SI&!6w>_87C--"QX6;>@&]-Sa&;
>yo>$&+,7'&q&'p&8'>$'PS?6-8'>$'X6.Cb
87E$'0&1;TT*j87*!S%`Tw0$_a1vS%`+c"C
SQ6A;1;T->w-running activity_#87>%!Sa1vFs0*'m&
-t$0Sj&>wC0T87*!S%`&."a&P
87F;$&W*u1;E
• active (running):87S;&Zs>*-Y~D$>E&>$6'€P
LM
• paused:87(Zs~1FCE€%&T<&Z%/&#~C$1
D$61€P‹*j;7*!+6]Zs&;$'SdC>
;7z_%&&;$'-7[/&;$'A;;7z_'$Sa
;(]7S%`N"Q&;$'A;;7z%&C0T<&Z
%/&#!aP
• stop:87Fs;7c$-$-Fw87*!1vcSc>0&
#stopP
• killed::J&Fsc6Fj!_a1v&."a&#c>YE$
&67n%6P#87w>0&#stop$kpausedz&a
ZFs&."a&-TaS%`ZsC0Y#87-7".Tw
Sj&C0$-$--"pWC0>0&#>%!SaP
LN
Hình 1.5- Biểu đồ miêu tả Activity state
y&SRA;87
• Entire lifetime:m"%/&qonCreate( )$!onDestroy( )
• Visible liftetime:m"%/&qonStart( )$!onStop( )
• Foreground lifetime:m"%/&qonResume( )$!onPause( )
:  +,7  '&  87  $  q&  'p&  Q  ".  c  C0  "%/&
qonCreate()SZX6#>YTw0$P#"%/&qT#aQ
cC0;7T<&47-$76Q6C^">YP
Các phương thức của vòng đời:

LL
Phương thức: onCreate()
 %`&@T;7CQSQ6S%`0$P
 •S,7F0C-*].#-Sk290$#E‡_TcJ'\C6Sc
C1–
 ƒ%/&q-7&=X6;*jSJ%`&36'CEq;S&m>0&#
>%!A;87P
 6<E$1;6Fw$;>~€P
Phương thức: onRestart()
 %`&@>%!T*j;7SIS%`'m&_t*jT$.&S;&Tw
Sj&CQ\;~1;>E';&;€P
 6<E$1;6Fw$;>~€P
Phương thức: onStart()
 %`&@>%!T*j;71FCE!&%R'4&P
 E$1;6Fw$E16*E~€c6;7Sc>0&#D$>E&>$6'$k
$$"~€_a>whP
Phương thức: onResume()
 %`&@>%!T;7FnSQ6%/&#!&%R'4&P
 0RSZ*-7;7w>StA;1;T;7P
 6<E$1;6Fw$ƒ;61E~€P
Phương thức: onPause()
 %`&@TJ&S;&>E16*&;7T#P
 ƒ%/&q-7C-SZY&\C0T<&Sl'\C6P
 aS%`'•>;*j#;a&FwY;7Tcc"1v
T<&S%`>E16*E'&;7$ScTa>wC0P
 E$1;6Fw$E16*E~€c6;7>w?mw>%!_$kFw$$"~€
c6a>w1FCE!&%R'4&P
 >0&#A;;7aZFs&cFwJ&P
Phương thức: onStop()
 %`&@T;7T<&6jQ*YA;&%R'4&P

 aaZ'•>;FwYaS;&FsA7_$kFwY;7T#m;
S%`>E16*E'-F;$"AaP
Lg
 %`E$1;6Fw$E1;>~€c;7S;&>wC0SZ%/&#!
&%R'4&_$k$‹E1>$7~€c6;7S;&F[P
 >0&#A;;7aZFs&cFwJ&P
Phương thức: onDestroy()
 %`&@>%!T;7FsA7P
 aC-CQ&@6J4&*-;7-7S%`^P
 aS%`&@T#FwY;7S;&$--_$kFwYJ&
0*RFsA7'SZcT*4&!P
5,DEF0=6G$#!..
• Các layout:
;7$6S%`'4&SZX6.Cb#-"Q&;$'T#E$*j>^
]SsP
 FrameLayout ;7$6S/&.]_Zs#-"Q$-$
&a>F>#A;*-YP
 LinearLayoutZs#-"Q$E$*j?6]Ss
~&;&$k'@€P  E;> ;7$6  C-*$ # -  "Q  >$&  a
T<&Fs"p6j-$To%!A;*-YP#-"Q>$&
E;> ;7$6S%`'-E$žC,+q&-$#>-&F6j&\6#
-"QP,7C-C;7$6S%`1='p&?6]P
 RelativeLayoutZs#-"Q$';>*JX6;!
#-"QT#$k!FA;C;7$6P
 TableLayoutZs#-"Q$';>*jC%!#<
&;&-'@P
 AbsoluteLayout:Zs#-"Q$';E$@;Sj+_7P
;7$6S%`1='p&{**pSocTc&;$'$?6Sj",
&.P%R&TC^">YTc`"?6C;7$6!;6SZ0$>;&;$'
*$&*6JP

• Android Manifest
•|q&'p&S?6Qa8'>$'•;DE1P+*CSZ*<.\&<&
X6;>@&A;a$J&8'>$'FcP
Lu
ŠCE-7S%`Sj&0$>;T0$">$—E%&c6'4&ScE;7'4&
*;7Y".T;F#$Fl16&-$DCE-7SZJ&]"^-a
Z1='p&P
•I
Ÿ +*CE>1$¡¢NPM¢E$'&¡¢6DHˆ¢ £
Ÿ*;DE1+*C1;'>$'¡¢"„„1E*;1P;'>$'P$*„;"T„>E1„;'>$'¢
";T;&E¡¢6&67P$*¢
;'>$'E>1$$'E¡¢N¢
;'>$'E>1$;*E¡¢NPM¢£
Ÿ;""C;$;'>$'$¡¢¤'>;‡;FCE„$¢;'>$'C;FEC¡¢¤1>&„;""¥;*E¢£
Ÿ;7;'>$';*E¡¢P)+;*"CEN¥x• 87¢
;'>$'C;FEC¡¢¤1>&„;""¥;*E
android:screenOrientation="landcape"
android:theme="@android:style/Them.NotitleBar.Fullscreen¢£
ŸEHDCE>£
Ÿ;$;'>$';*E¡¢;'>$'PEP;$P•8¢„£
Ÿ;E&$>7;'>$';*E¡¢;'>$'PEP;E&$>7P 8)¢„£
Ÿ„EHDCE>£
Ÿ„;7£
Ÿ„;""C;$£
Ÿ61E1H1'T;'>$'*'TE>1$¡¢g¢„£
Ÿ„*;DE1£
pZ\&<&*-8'>$'•;DE1P+*C
 k$…;;";T;&EA;q&'p&P
 •<.#-"Q~$*"$E€A;q&'p&;7_1E>E_
F>$;';1>EEE>$k$E">$'E>P

 <&F#$\&"E>*11$*-q&'p&QaSZ>67^"#
">$EE'8ƒ-%/&#!#q&'p&T#P
 <&F#$\&"E>*11$*-#q&'p&T#QaSZ%/&
#!q&'p&RP
Le

×