16 B ng 2.4: B ng so sánh GeoCoordinateWatcher class và Geolocator class ..... DANH M C CÁC T VI T T T A-GPS Assisted - Global Positioning System API Application Programming Interface BT
Trang 1TIÊU CHÍ TRÊN I N THO I WINDOWS PHONE 8
- Gi ng viên h ng d n:
- Sinh viên th c hi n:
Lê H u Tài MSSV: 1051012145
Thành ph H Chí Minh, tháng 5 n m 2014
Trang 2L I C M N
Tr c tiên, em xin g i l i tri ân đ n quý Th y (Cô) khoa công ngh thông tin –
tr ng i h c M Thành ph H Chí Minh đã nhi t tình ch d y, truy n đ t ki n th c
c ng nh kinh nghi m th c t cho em và các b n trong su t quá trình h c t p t i tr ng
c bi t, em xin g i l i c m n sâu s c nh t đ n Th y Th c s H Quang Kh i,
ng i đã h t s c quan tâm và nhi t tình h ng d n em trong su t th i gian v a qua đ hoàn thành đ tài t đ án ngành đ n khóa lu n t t nghi p Bên c nh đó, em xin g i l i
c m n chân thành đ n Th y Ti n s Phan t Phúc đã ch d y và chia s kinh nghi m đ
em hoàn thành tính n ng s d ng b n đ offline cho đ tài
Cu i cùng, em xin g i l i chúc s c kh e và thành công đ n quý Th y, Cô tr ng
i h c M thành ph H Chí Minh nói chung và quý Th y, Cô khoa công ngh thông tin
nói riêng, kính chúc quý Th y (Cô) th t nhi u s c kh e và luôn g t hái đ c nhi u thành công trong công vi c và trong cu c s ng!
Tp HCM, tháng 5 n m 2014
Trân tr ng Sinh viên Lê H u Tài
Trang 3NH N XÉT C A GI NG VIÊN H NG D N
Trang 4
M C L C
L I C M N i
NH N XÉT C A GI NG VIÊN H NG D N ii
DANH M C CÁC B NG vi
DANH M C HÌNH NH vii
DANH M C CÁC T VI T T T ix
L I M U x
CH NG 1: T NG QUAN 1
1.1 t v n đ 1
1.1.1 Th c tr ng giao thông hi n nay 1
1.1.2 Các gi i pháp công ngh hi n có 1
1.1.3 Lý do ch n đ tài 3
1.2 M c tiêu đ tài 3
1.3 Ph ng pháp th c hi n 3
CH NG 2: C S LÝ THUY T 4
2.1 T ng quan v l p trình Windows phone 8 4
2.1.1 Cài đ t môi tr ng 4
2.1.2 B c c c a m t ng d ng 4
2.1.3 Tìm hi u XAML trong l p trình Windows phone 5
2.1.4 Ngôn ng C# trong vi c xây d ng ng d ng trên Windows phone 5
2.1.5 Tìm hi u LINQ To SQL 12
2.2 S d ng GPS và A-GPS trên Windows phone 15
2.2.1 T ng quan v GPS 15
2.2.2 T ng quan v A-GPS 15
2.2.3 S d ng GPS trên Windows phone 17
2.3 S d ng Google maps trong ng d ng Windows phone 8 20
2.3.1 Gi i thi u control Maps trong Windows phone 8 20
2.3.2 So sánh Bing maps và Google maps 20
2.3.3 Chuy n đ i Bing maps sang Google maps 22
Trang 52.4 L p trình client – server trên NET 24
2.4.1 T ng quan v l p trình client – server 24
2.4.2 Xây d ng Server h tr s d ng b n đ offline 27
2.5 T ng quan v Web service 30
2.5.1 Gi i thi u v Web service 30
2.5.2 Xây d ng Web service 31
2.6 Google maps API Web services 32
2.6.1 Cú pháp s d ng 32
2.6.2 X lý k t qu tr v 32
2.6.3 Google Direction API Service 34
2.6.4 Google Geocoding API Service 37
2.6.5 Google Reverse Geocoding API Service 38
2.6.6 Google Place Autocomplete API Service 39
2.6.7 Google Place API Nearby Search Service 41
2.6.8 Google Place API Radar Search Service 42
2.6.9 Google Place Details API Service 43
2.7 Áp d ng công th c hình c u c a cosines (Spherical Law of Cosines) 44
2.7.1 Gi i thi u 44
2.7.2 V n d ng 44
2.8 Xây d ng ph ng th c gi i mã t a đ 46
2.8.1 Tính c p bách c a v n đ 46
2.8.2 C s c a vi c xây d ng ph ng th c gi i mã 46
2.8.3 Ph ng th c gi i mã t a đ 50
CH NG 3: XÂY D NG NG D NG 54
3.1 Gi i thi u ng d ng 54
3.2 T ch c c s d li u 55
3.2.1 D li u c c b (Local Database) 55
3.2.2 D li u t Google Maps API Web Services: 58
3.3 Hi n th c ng d ng 59
3.3.1 Giao di n trang ch 59
Trang 63.3.2 Hi n th danh sách tuy n xe lên trang tuy n xe 60
3.3.3 Hi n th thông tin c a tuy n xe lên trang thông tin 61
3.3.4 Hi n th danh sách tr m d ng theo t ng tuy n 62
3.3.5 Hi n th l trình xe buýt lên b n đ 64
3.3.6 nh v cá nhân 66
3.3.7 Ch c n ng tìm ki m tr m d ng 67
3.3.8 Tìm đ ng đi b ng xe buýt 73
3.3.9 Xây d ng trang download b n đ 81
3.3.10 S d ng pushpin trong ng d ng 82
3.3.11 Xây d ng màn hình ch ti n trình th c hi n 84
CH NG 4: K T LU N 85
4.1 K t qu đ t đ c 85
4.2 Nh ng h n ch 85
4.3 H ng phát tri n 85
TÀI LI U THAM KH O 86
PH L C 87
Trang 7DANH M C CÁC B NG
B ng 2.1: B ng mô t m t s ki u d li u đã đ c xây d ng s n 7
B ng 2.2: B ng tóm t t các thu c tính truy c p c a m t l p trong C# 11
B ng 2.3: B ng so sánh A-GPS và GPS trên m t s l nh v c 16
B ng 2.4: B ng so sánh GeoCoordinateWatcher class và Geolocator class 17
B ng 3.1: B ng TUYENXE 56
B ng 3.2: B ng TRAMDUNG 57
B ng 3.3: B ng LUOT 57
B ng 3.4: B ng LOTRINH 57
B ng 3.5: B ng các thu c tính c a pushpin 82
Trang 8DANH M C HÌNH NH
Hình 2.1: Mô hình ho t đ ng c a LINQ To SQL 12
Hình 2.2: Cách th c ho t đ ng c a A-GPS 16
Hình 2.3: So sánh Bing maps v i Google maps 21
Hình 2.4: Mô hình chung c a m t ng d ng client – server có k t n i (TCP) 25
Hình 2.5: Mô hình ho t đ ng c a server h tr s d ng b n đ offline 28
Hình 2.6: C u trúc c a m t b n tin yêu c u HTTP 28
Hình 2.7: C u trúc c a m t b n tin tr l i HTTP 29
Hình 2.8: Danh m c tr ng thái trong thông đi p server g i client 29
Hình 2.9: Ki n trúc Web service 30
Hình 2.10: Minh h a ch c n ng AutoComplete 39
Hình 2.11: L c đ xây d ng ph ng th c v hình tròn t m t đi m và bán kính 45
Hình 2.12: L c đ 11 b c mã hóa thành ph n points 47
Hình 2.13: S đ 11 b c gi i mã t a đ 51
Hình 2.14: L c đ xây d ng ph ng th c gi i mã t a đ 52
Hình 3.1: S đ ch c n ng c a ng d ng 54
Hình 3.2: S đ liên k t c s d li u c a ng d ng 55
Hình 3.3: Mô hình client – server c a ng d ng 58
Hình 3.4: Giao di n trang ch tr c và sau khi ch n tuy n xe 59
Hình 3.5: Giao di n trang tuy n xe 60
Hình 3.6: S đ phân tích ch c n ng trang tuy n xe 60
Hình 3.7: S đ phân tích ch c n ng hi n th thông tin tuy n xe 61
Hình 3.8: Giao di n trang thông tin tr c và sau khi ch n tuy n xe 61
Hình 3.9: S đ phân tích ch c n ng hi n th tr m d ng theo tuy n xe 62
Hình 3.10: Giao di n trang tr m d ng 62
Trang 9Hình 3.11: Giao di n hi n th danh sách tr m d ng lên b n đ 63
Hình 3.12: S đ phân tích ch c n ng hi n th l trình lên b n đ 64
Hình 3.13: S đ xây d ng hàm v l trình c a tuy n xe buýt lên b n đ 64
Hình 3.14: Giao di n hi n th l trình di chuy n c a tuy n xe lên b n đ 65
Hình 3.15: Giao di n hi n th v trí ng i dùng lên b n đ 66
Hình 3.16: S đ phân tích ch c n ng tìm ki m tr m d ng theo mã tr m 67
Hình 3.17: Giao di n ch c n ng tìm ki m tr m d ng theo mã tr m 68
Hình 3.18: S đ phân tích ch c n ng tìm ki m tr m d ng t m t đi m và bán kính 69
Hình 3.19: S đ phân tích ch c n ng nh p đ a ch t i h p tìm ki m 70
Hình 3.20: Xác đ nh v trí tìm tr m d ng 71
Hình 3.21: Giao di n hi n th k t qu tìm tr m d ng 72
Hình 3.22: S đ phân tích ch c n ng tìm đ ng đi b ng xe buýt 74
Hình 3.23: Xác đ nh đi m b t đ u và k t thúc b ng cách nh p đ a ch tr c ti p 75
Hình 3.24: L a ch n đi m b t đ u hay k t thúc trên b n đ 76
Hình 3.25: Giao di n trang download b n đ 81
Hình 3.26: Các pushpin đ c s d ng trong ng d ng 82
Hình 3.27: Giao di n màn hình ch ti n trình th c thi 84
Trang 10DANH M C CÁC T VI T T T
A-GPS Assisted - Global Positioning System
API Application Programming Interface
BTS Base Transceiver Station
CSDL C s d li u
GPS Global Positioning System
HTTP HyperText Transfer Protocol
IEEE Institute of Electrical and Electronics Engineers
LINQ Language Integrated Query
PDA Personal Digital Assistant
SDK Software Development Kit
SOAP Simple Object Access Protocol
TCP Transmission Control Protocol
UDP User Datagram Protocol
XAML Extensible Application Markup Language
XML Extensible Markup Language
Trang 11L I M U
Hi n nay, nhu c u đi l i b ng xe buýt c a ng i dân ngày càng t ng cao kéo theo
đó là nhu c n tìm các tuy n xe buýt, tr m d ng, đ ng đi c ng t ng lên đáng k Tuy nhiên, v i m t b n đ l u thông xe buýt b ng gi y nh hi n nay, vi c tìm ki m m t tuy n
xe buýt gây r t nhi u khó kh n cho ng i dân trong vi c đi l i, đ c bi t là đ i v i h c sinh, sinh viên, ng i dân m i đ n thành ph Còn đ i v i ng i dân đã “quen” v i vi c
s d ng d ch v xe buýt thì nhu c u c n tìm m t l trình theo ý mình nh th i gian đi nhanh nh t, ít t n chi phí nh t, th i gian đi b ng n nh t ho c s tuy n đi ít nh t là m t
đi u r t c n thi t Do đó, c n ph i có m t ti n ích h tr ng i dùng tìm đ ng đi b ng xe buýt theo nhi u tiêu chí giúp cho vi c đi l i c a ng i dân nhanh chóng và hi u qu h n
Nh ng n m g n đây, ngành đi n tho i di đ ng phát tri n v t b c Smartphone ra
đ i làm thay đ i nh n th c c a con ng i v đi n tho i di đ ng V i m t chi c smartphone nh , g n trong tay, ng i s d ng có th làm m i đi u mình thích, t các
ch c n ng c b n truy n th ng nh nghe, g i, nh n tin,…đ n các ch c n ng nâng cao nh
l t web, xem phim, nghe nh c, đ nh v GPS, xem b n đ tr c tuy n,…Song, s l ng các ph n m m h tr ng i dùng tìm đ ng đi b ng xe buýt là r t ít và còn nhi u h n ch
Xu t phát t th c t đi l i và các gi i pháp công ngh hi n có, em đã xây d ng
ng d ng tìm đ ng đi b ng xe buýt t i u theo nhi u tiêu chí trên đi n tho i Windows phone 8 ng d ng là s k t h p gi a d li u v các tuy n xe buýt, tr m d ng v i b n đ Google maps và truy xu t thông tin t các c ng Google maps API Web services đ t o nên ng d ng hoàn ch nh k t h p v i giao di n đ p, giúp vi c đi l i c a ng i dùng tr nên d dàng, nhanh chóng và hi u qu
Khóa lu n đ c th c hi n trong kho ng th i gian t tháng 3/2014 đ n cu i tháng 05/2014 và đ c phát tri n t đ án ngành ây là k t qu nghiên c u trong su t quá trình tìm ki m, thu th p d li u v các tuy n xe, tr m d ng v i m c tiêu là xây d ng m t ng
d ng tìm đ ng đi b ng xe buýt theo nhi u tiêu chí, bên c nh đó, ng d ng c ng ph i có
ch c n ng cho phép ng i dùng tra c u thông tin, tìm ki m tr m d ng, đ nh v cá nhân,…
Báo cáo khóa lu n t t nghi p đ c chia làm 4 ph n chính:
CH NG 1: T NG QUAN
CH NG 2: C S LÝ THUY T
CH NG 3: XÂY D NG NG D NG
CH NG 4: K T LU N
Tuy đã r t c g ng, tìm hi u, h c h i đ th c hi n đ tài, song do kh n ng v n
d ng còn h n ch , th i gian th c hi n không nhi u, l ng ki n th c ti p thu còn h p nên
ph n báo cáo và ng d ng c a em còn nhi u thi u sót Em xin ghi nh n t t c ý ki n đóng góp t quý Th y (Cô), các b n sinh viên,…đ ng d ng ngày càng đ c hoàn thi n h n
Trân tr ng Sinh viên Lê H u Tài
Trang 12đ ng xá ch n ch t, gây khó kh n cho ng i dân trong vi c đi l i V n n n k t xe, tình
tr ng ách tách giao thông x y ra th ng xuyên vào gi cao đi m gây b c xúc trong nhân dân V n đ trên đòi h i c n ph i có m t gi i pháp đ gi i quy t bài toán v giao thông
H ng n m, các thành ph l n đón nh n hàng ngàn h c sinh, sinh viên, công nhân,
ng i dân t nhi u t nh, thành trong c n c v h c t p, sinh s ng và làm vi c S l ng
xe máy quá đông đ c xem là m t trong nh ng nguyên nhân gây nên tình tr ng k t xe t i đây Do đó, đ kéo gi m tình tr ng ùn t c giao thông đòi h i c n có m t gi i pháp h n ch
s l ng xe g n máy trên đ ng nh ng đ ng th i ph i b o đ m không nh h ng đ n
vi c đi l i c a ng i dân
Nh ng n m qua, thành ph t p trung vào vi c hoàn thi n và nâng cao ch t l ng
c a lo i hình đi l i b ng ph ng ti n xe buýt Th c t hi n nay, nhu c u đi l i b ng xe buýt c a ng i dân ngày càng t ng cao kéo theo đó là nhu c u tìm các tuy n xe, tr m
d ng, đ ng đi c ng t ng lên đáng k
Tuy nhiên, bên c nh nh ng m t đ t đ c, v n còn có nhi u h n ch khi n ph ng
ti n này ch a th t s tr thành ng i b n đ ng hành c a nhân dân trong vi c đi l i h ng ngày Thông tin v các tuy n xe, tr m d ng ch a th t s đáp ng đ c yêu c u đa d ng,
m i lúc, m i n i c a ng i dùng M t b n đ xe buýt b ng gi y v i vô s các tuy n xe gây khó kh n cho ng i dân trong vi c đi l i nh t là đ i v i h c sinh, sinh viên, ng i dân m i đ n thành ph Còn đ i v i ng i dân đã “quen” v i vi c s d ng d ch v xe buýt thì nhu c u c n tìm m t l trình theo ý mình nh th i gian đi nhanh nh t, ít t n chi phí nh t, th i gian đi b ít nh t ho c s tuy n đi ít nh t là m t đi u r t c n thi t
Th c tr ng trên đòi h i c n ph i có m t gi i pháp giúp ng i dân trong vi c tìm
ki m thông tin các tuy n xe, tr m d ng và tìm đ ng đi b ng xe buýt theo nhi u tiêu chí
m t cách chính xác, nhanh chóng và hi u qu
1.1.2 Các gi i pháp công ngh hi n có
M c dù có nhi u ph ng pháp, cách th c đ h tr cho vi c đi l i, song không ph i
ph ng pháp nào c ng mang l i hi u qu t t nh t Vi c s d ng b n đ giao thông b ng
gi y gây r t nhi u khó kh n cho ng i dân nh ng đôi khi l i không chính xác Trong khi
đó, n u s d ng b n đ online trên các thi t b nh máy tính bàn, laptop, máy tính
b ng…nh ng s n ph m này m c dù cho hi u qu t t nh ng l i không phù h p khi giao thông vì quá c ng k nh, l i kém an toàn cho ng i s d ng V n đ đ t ra là c n ph i có
Trang 13m t thi t b v a g n, nh nh ng ph i có kh n ng h tr b n đ , h tr vi c tìm đ ng đi nhanh chóng, hi u qu cho ng i s d ng
Nh ng n m g n đây, ngành đi n tho i di đ ng phát tri n v t b c Smartphone ra
đ i làm thay đ i nh n th c c a con ng i v đi n tho i di đ ng V i m t chi c smartphone nh , g n trong tay, ng i s d ng có th làm m i đi u mình thích, t các
ch c n ng c b n, truy n th ng nh nghe, g i, nh n tin,…đ n các ch c n ng nâng cao
nh l t web, xem phim, nghe nh c, đ nh v GPS, xem b n đ tr c tuy n,… Smartphone
d n d n tr thành ng i b n đ ng hành c a con ng i trong xã h i hi n nay Do đó, vi c xây d ng m t ph n m m tìm đ ng đi trên đi n tho i là gi i pháp t i u nh t
Ngành công nghi p smartphone hi n nay có n m n n t ng h đi u hành chính là: Windows phone, Symbian, iOS, Android, webOS g n li n v i nh ng “gã kh ng l ” trong ngành công ngh nh : Microsoft, Apple, Google,… Th tr ng ph n m m phát tri n trên
n n đi n tho i di đ ng ngày càng phong phú và đa d ng Tuy nhiên, s l ng các ph n
m m h tr ng i dùng tìm đ ng đi b ng xe buýt t i Vi t Nam l i r t khiêm t n, đ n c
ch có m t vài ph n m m nh : BusMap, BUSITUS,… Do đó, vi c xây d ng và phát tri n
m t ph n m m tìm đ ng đi b ng xe buýt trên smartphone là m t đi u r t c n thi t
Trong n m n n t ng h đi u hành trên, thì h đi u hành Windows phone 7 c a t p đoàn hàng đ u th gi i – Microsoft – m c dù là h đi u hành ra đ i sau cùng nh ng l i
có nh ng tính n ng thân thi n h n v i ng i dùng V i Windows phone, Microsoft đã phát tri n giao di n ng i dùng m i mang tên Metro – tích h p kh n ng liên k t v i các
ph n c ng và ph n m m c a hãng th ba m t cách d dàng c bi t, v i phiên b n Windows phone 8 tung ra th tr ng vào ngày 29 tháng 10 n m 2012 đ c xem là s k
th a và phát huy h n n a so v i Windows phone 7
Phiên b n Windows phone 8 đã thay th lõi ki n trúc Windows CE trên Windows phone 7 thành kernel c a Windows NT v n đ c thi t k cho Windows 8, chính vì v y làm cho ng d ng d dàng k t n i (port) gi a hai h đi u hành Ngoài ra, Windows phone
8 còn h tr CPU đa nhân, nhi u đ phân gi i, tùy bi n Start Screen, kèm phiên b n di
đ ng c a Internet Explorer 10, tích h p Nokia Maps, giao di n thân thi n h n Vi c l p trình trên Windows phone nhìn chung là s d ng ngôn ng C#, m t trong nh ng ngôn
ng l p trình hi n đ i và ph bi n nh t hi n nay, góp ph n t o thu n l i cho các nhà phát tri n Bên c nh đó, các nhà phát tri n có th t o nên các ng d ng sinh đ ng, h p d n
b ng vi c l p trình d a trên hai công ngh là Silverlight và XNA
Song, có m t th c t là, ng i dùng Windows phone 7 và 8 cho đ n th i đi m hi n
t i v n không th truy c p Google maps t trình duy t Web trên đi n tho i c a h ây
đ c xem là m t s “thi t thòi” c a ng i dùng Windows phone so v i Android và iOS,
b i s c nh tranh trong kinh doanh gi a hai “gã kh ng l ” Microsoft và Google Các
ph n m m tìm đ ng đi b ng xe buýt t i Vi t Nam trên Windows phone 8 là r t ít, đ n c
ch có m t vài ph n m m nh : BusMap,…Do đó, vi c xây d ng và phát tri n m t ng
d ng tìm đ ng đi b ng xe buýt trên đi n tho i Windows phone 8 là r t c n thi t
Trang 141.1.3 Lý do ch n đ tài
Xu t phát t yêu c u c p bách c a th c t đi l i và các gi i pháp công ngh hi n có chính là c s đ em xây d ng m t ng d ng tìm đ ng đi b ng xe buýt trên smartphone
ch y h đi u hành Windows phone 8, t i u theo b n tiêu chí là th i gian đi nhanh nh t, ít
t n chi phí nh t, th i gian đi b ít nh t và s tuy n đi ít nh t
Xem thông tin c a t ng tuy n xe, danh sách t t c tr m d ng mà tuy n xe đi qua,
đ ng th i hi n th l trình di chuy n c a tuy n xe lên b n đ Google maps
Tìm ki m tr m d ng theo hai c ch : tìm tr m d ng theo mã tr m và tìm tr m
d ng t m t v trí v i bán kính tìm ki m đ c ch đ nh b i ng i dùng
Ch c n ng tìm đ ng v i nhi u tùy ch n phong phú: hi n th t t c k t qu tìm
đ c ho c t i u theo b n tiêu chí là th i gian đi nhanh nh t, t n chi phí ít nh t,
th i gian đi b ít nh t và s tuy n đi ít nh t
1.3 Ph ng pháp th c hi n
ng d ng đ c phát tri n trên môi tr ng Microsoft Visual Studio 2012 (đã cài b Windows Phone Software Development Kit – b công c dùng đ phát tri n ng d ng Windows phone) Bên c nh đó, giao di n c a ng d ng còn đ c thi t k b ng ph n m m Microsoft Expression Blend t o nên giao di n đ p, h p d n ng i s d ng
C s d li u c a ng d ng t p trung vào vi c qu n lý thông tin, l trình di chuy n
c a các tuy n xe buýt t i thành ph H Chí Minh, và đ c xây d ng trên môi tr ng Microsoft SQL Server 2008 đ m b o tính toàn v n và ràng bu c cho d li u
T i th i đi m th c thi, ng d ng s truy xu t thông tin t d ch v Google maps API Web services ph c v cho thao tác tìm ki m tr m d ng và tìm đ ng đi b ng xe buýt
gi a hai đi m trên b n đ
ng d ng đã hi n th c thành công vi c chuy n đ i b n đ Bing maps m c đ nh
c a Windows phone b ng b n đ Google maps t o thu n l i h n cho ng i dùng trong
vi c s d ng b n đ online
Bên c nh đó, vi c l p trình m ng b ng socket trên môi tr ng NET đã đ c s
d ng đ xây d ng server ch y trên localhost c a ng d ng nh m hi n th c tính n ng s
d ng b n đ offline
Trang 15CH NG 2: C S LÝ THUY T 2.1 T ng quan v l p trình Windows phone 8
2.1.1 Cài đ t môi tr ng
Vi c xây d ng ng d ng Windows phone 8 đ c phát tri n trên môi tr ng Microsoft Visual Studio 2012 kèm theo b công c Windows phone SDK (Software Development Kit) ho c Microsoft Visual Studio 2013 (đã tích h p Windows phone SDK)
Giao di n ng d ng còn đ c phát tri n trên Microsoft Expression Blend
C s d li u đ c xây d ng trên môi tr ng Microsoft SQL Server 2008
2.1.2 B c c c a m t ng d ng
Xét v t ng th , ng d ng Windows phone 8 bao g m 2 ph n:
o Các trang xaml dùng đ thi t k giao di n ng d ng
o Trang code behind (.cs) dùng đ l p trình cho các ch c n ng c a ng d ng
Xét v thành ph n chính, m t ng d ng Windows phone 8 bao g m:
ng d ng tr c khi xu t ra file xap (dùng đ cài đ t trên đi n tho i)
o AssemblyInfo.cs: m t file c u hình khác c a ng d ng, ch a thông tin v tên và version
o WMAppManifest.xml: là m t file c u hình khác ch a thông tin v tên, icon, trang m c đ nh s b t đ u c a ng
ki m tra c u hình c a ng d ng
o App.xaml.cs: trang code-behind ch a các đo n mã c a trang App.xaml
Trang 16o ApplicationIcon.png: hình nh đ i di n cho ng d ng khi đ c cài đ t trên đi n tho i
o Backgroung.png: nh n n c a ng d ng trên màn hình chính c a đi n tho i
o MainPage.xaml: đây chính là trang m c đ nh đ xây d ng ng d ng, ng d ng
c ng có th t o thêm nhi u trang h n n a tùy thu c vào m c đích s d ng
o MainPage.xaml.cs: đây là trang code-behind c a trang MainPage.xaml, là n i
x lý các ch c n ng, s ki n c a trang MainPage.xaml
o SplashScreenImage.png: n u ng d ng ph i m t th i gian đ load d li u thì
nh này s hi n ra, nh ng ch xu t hi n vào l n đ u khi ch y ng d ng
2.1.3 Tìm hi u XAML trong l p trình Windows phone
XAML là t vi t t t c a Extensible Application Markup Language, là ngôn ng
XAML cho phép ng i dùng thi t k giao di n c a ng d ng Windows phone trên
c hai môi tr ng là Visual Studio và Expression Blend Bên c nh đó, “s c m nh” c a XAML còn th hi n trong vi c binding c s d li u vào m t thành ph n (element) đ c
m t ngôn ng l p trình hi n đ i nh vi c x lý ngo i l , thu gom b nh t đ ng, nh ng
ki u d li u m r ng và b o m t mã ngu n…đ u có trong C#
C# ngôn ng l p trình đ n gi n, v i vi c lo i b m t vài s ph c t p và r i r m
c a nh ng ngôn ng l p trình tr c đó nh Java và C++, bao g m vi c lo i b nh ng macro, nh ng template, đa k th a, và l p c s o (virtual base class), do đó t o thu n
l i h n cho các nhà phát tri n ng d ng b ng C# C# đ n gi n vì phát tri n d a trên n n
t ng C/C++ nh ng đ c c i ti n đ làm cho ngôn ng ngày càng d ti p c n h n M t trong nh ng c i ti n đó là lo i b s d th a, ho c thêm nh ng cú pháp m i Ch ng h n
nh vi c thay th ba toán t trong C++ là ::, , và -> b ng m t toán t duy nh t là (dot)
Trang 17C# là ngôn ng l p trình h ng đ i t ng C# h tr t t c các đ c tính c a m t ngôn ng h ng đ i t ng (Object-oriented language) bao g m s đóng gói (encapsulation), s k th a (inheritance), và tính đa hình (polymorphism)
C# là ngôn ng m nh m nh ng c ng r t m m d o C# ch b gi i h n b i kh
n ng s d ng c a ng i dùng Hi n nay, C# đ c s d ng cho nhi u d án khác nhau nh
là t o ra ng d ng x lý v n b n, ng d ng đ h a, b n tính, hay th m chí nh ng trình biên d ch cho các ngôn ng khác
C# là ngôn ng ít t khóa, ch h n 80 t khóa và m i m y ki u d li u ó là m t trong nh ng lý do làm cho C# tr thành m t trong nh ng ngôn ng đ c s d ng ph
Góc đ 1: ki u d li u đ c phân làm hai t p h p đó là ki u d li u đã đ c xây
d ng s n (built – in) mà ngôn ng cung c p và ki u d li u do ng i l p trình t
đ nh ngh a (user – defined)
Góc đ 2: ki u d li u bao g m ki u d li u giá tr (value) và ki u d li u tham
chi u (reference) Vi c phân chi này d a trên s khác nhau trong vi c l u ki u d
li u giá tr và tham chi u trong b nh i v i m t ki u d li u giá tr thì s đ c
l u đúng kích th c th t trong b nh đã c p phát là stack Trong khi đó thì đ a ch
c a ki u d li u tham chi u thì đ c l u trong stack nh ng đ i t ng th t s thì
l u trong b nh heap Vi c l u đ i t ng trong b nh heap r t có ích đ i v i các
đ i t ng có kích th c l n
T t c các ki u d li u xây d ng s n là ki u d li u giá tr ngo i tr các đ i t ng
và chu i Và t t c các ki u d li u do ng i dùng đ nh ngh a ngo i tr ki u d li u c u trúc đ u là ki u d li u tham chi u
Trang 18B ng 2.1: B ng mô t m t s ki u d li u đã đ c xây d ng s n
Ki u C# S byte Ki u NET t ng ng Mô t
0-255
bool 1 Boolean Giá tr logic (true/false)
sbyte 1 sbyte S nguyên có d u (t -128 đ n 127) short 2 Int16 S nguyên có d u giá tr t -32768 đ n 32767 ushort 2 Uint16 S nguyên không d u t 0 – 65535 int 4 Int32 S nguyên có d u t –2.147.483.647 đ n 2.147.483.647
4.294.967.295
Ki u d u ch m đ ng, giá tr x p x t 3,4E-38 đ n 3,4E+38, v i 7 ch s
Có đ chính xác đ n 28 con s , đ c dùng trong tính toán tài chính, ki u này đòi h i ph i có h u t “m” hay
“M” theo sau giá tr
Ki u s nguyên có d u có giá tr trong kho ng :
-9.223.370.036.854.775.808 đ n 9.223.372.036.854.775.807
ulong 8 Uint64 S nguyên không d u t 0 đ n
0xffffffffffffffff
Trang 192.1.4.2.2 Bi n (variable)
Bi n là đ i l ng đ c dùng đ l u tr thông tin v các đ i t ng v i giá tr c
th , xác đ nh t i m i th i đi m trong ch ng trình Giá tr c a bi n có th đ c thay đ i
b ng phép gán (=)
Trong C#, cú pháp đ khai báo bi n có d ng nh sau:
<tên ki u> <danh sách các bi n>
Trong đó :
<tên ki u> là m t ki u d li u h p l b t k trong C#
<danh sách các bi n> là m t hay nhi u bi n, đ c phân cách b ng d u ‘,’
Trong tr ng h p c n thi t, có th kh i t o giá tr tr c ti p cho bi n trong câu l nh
khai báo: <tên ki u> <tên bi n> = <giá tr >;
2.1.4.2.3 H ng (constant)
B n ch t c a h ng chính là bi n nh ng giá tr c a h ng s không thay đ i trong
su t th i gian t n t i c a nó
Trong C#, khai báo h ng th ng đ c đ t trong ph n khai báo toàn c c đ u
ch ng trình, ngay sau các khai báo ti n x lý Có hai cách đ khai báo h ng:
Dùng ch th ti n x lý: #define <tên h ng><chu i thay th >
Dùng t khóa const: const <tên ki u><tên h ng> = <giá tr >;
2.1.4.2.4 Các c u trúc đi u khi n
H u h t các thu t toán đ u có th cài đ t b ng 3 c u trúc c b n sau:
C u trúc tu n t : các câu l nh đ c th c hi n theo th t t trên xu ng và t trái sang ph i
C u trúc r nhánh và l a ch n: c u trúc này dùng đ “d đoán và đáp ng” t t c các tr ng h p có th có c a thu t toán, nh m đ m b o tính đúng đ n c a ch ng trình
C u trúc l p: l p vòng quá trình th c thi câu l nh Khi s d ng c u trúc l p, ph i
đ m b o tính d ng cho vòng l p, tránh tr ng h p quá trình l p di n ra vô t n, không có đi m d ng
Trong C#, c u trúc r nhánh đ c hi n th c thông qua câu l nh if …else… v i cú pháp nh sau:
If (< đi u ki n>) <l nh 1>;
[else <l nh 2>;]
Trong đó:
<đi u ki n> th ng là m t bi u th c logic
Trang 20 Ph n else là không b t bu c ph i có Tr ng h p câu l nh if không có ph n else đ c g i là câu l nh if “thi u”
<l nh 1>, <l nh 2> có th là câu l nh đ n, ho c câu l nh ghép, ho c câu l nh
đi u khi n
Ý ngh a: n u <đi u ki n> th a (giá tr là true) thì th c hi n <l nh 1>, ng c l i thì
th c hi n <l nh 2> Nh v y, <l nh 1>, <l nh 2> đ c th c hi n thông qua giá tr đúng/sai c a <đi u ki n>
Câu l nh if…else… có th đ c m r ng thành câu l nh if… else… l ng nhau, tuy nhiên, v b n ch t câu l nh if…else là không thay đ i
Trong C#, c u trúc l a ch n đ c hi n th c thông qua câu l nh switch…case…
Case <value n>: [<l nh n>; break; ] [default: <l nh>; break; ]
}
Ý ngh a: n u giá tr c a <bi u th c đi u ki n> trùng v i value c a case nào thì câu
l nh t i case đó s đ c th c thi cho đ n khi g p l nh break thì k t thúc câu l nh switch(…) Vi c s d ng câu l nh này, đòi h i cu i m i case ph i có l nh break nh m
đ m b o tính đúng đ n cho ch ng trình
Vi c s d ng câu l nh switch(…) là m t tr ng h p bi n th c a c a câu l nh if…else… M t câu l nh switch(…) dù ph c t p đ n đâu c ng đ u có th chuy n đ i thành công sang câu l nh if…else… Nh ng, m t câu l nh if…else… ch a ch c có th chuy n đ i thành công sang câu l nh switch(…) Nguyên nhân c a s khác bi t đó là do câu l nh switch(…) ch có th xét đi u ki n m t bi u th c nh t đ nh, sau đó so sánh giá
tr c a bi u th c đó v i t ng case c th Trong khi đó, trong câu l nh if…else… bi u
th c đi u ki n có th đ c tùy bi n (ch ng h n câu l nh if ban đ u xét đi u ki n A, nh ng câu l nh if sau có th xét đi u ki n B, v.v…)
Vi c s d ng câu l nh switch(…) ho c if…else… là tùy thu c vào tình hu ng s
d ng i v i tr ng h p ch xét đi u ki n trên m t bi u th c và giá tr c a bi u th c đó
có nhi u k t qu thì s l a ch n câu l nh switch(…) trong tr ng h p này là c n thi t
Trong C#, c u trúc l p đ c hi n th c thông qua 3 c u trúc sau:
C u trúc l p while(…) v i cú pháp:
while (< đi u ki n>) <l nh>;
Trong đó:
o <đi u ki n> là m t bi u th c logic
Trang 21o <l nh> có th là l nh đ n, kh i l nh, ho c câu l nh đi u khi n Trong đó, có
ít nh t m t câu l nh trong <l nh> có tác d ng làm thay đ i vi c đánh giá l i
<đi u ki n> sau m i l n l p nh m đ m báo tính d ng cho vòng l p
Ý ngh a: khi nào đi u ki n còn th a thì còn th c hi n <l nh>
C u trúc l p for(…)
Cú pháp:
for ( [<ph n kh i t o>] ; [< đi u ki n>] ; [<ph n hi u ch nh>] ) <l nh>;
Trong đó:
o <ph n kh i t o> là m t hay nhi u bi u th c gán (đ c phân cách v i nhau
b i d u ‘,’) có nhi m v kh i t o giá tr ban đ u cho các bi n
o <đi u ki n> th ng là bi u th c logic
o <ph n hi u ch nh> là m t hay nhi u bi u th c gán (đ c phân cách b i
d u ‘,’) có nhi m v thay đ i tr c a các bi n <ph n kh i t o>
o <l nh> có th là câu l nh đ n, kh i l nh, ho c câu l nh đi u khi n
Ý ngh a: khi nào đi u ki n còn th a thì còn th c hi n l nh
Trong vòng l p for(…) thì ph n kh i t o ch đ c th c hi n đúng m t l n, <ph n hi u
ch nh> có nhi m v làm thay đ i vi c đánh giá l i <đi u ki n> sau m i l n l p nh m đ m
b o tính d ng cho vòng l p Vòng l p for( ; ; ) <l nh>; là vòng l p vô h n, không có đi m
o <l nh> có th là câu l nh đ n, kh i l nh, ho c câu l nh đi u khi n Trong
<l nh> ph i có ít nh t m t câu l nh làm thay đ i vi c đánh giá l i đi u ki n sau
m i l n l p nh m đ o b m tính d ng cho vòng l p
Ý ngh a: th c hi n <l nh> cho đ n khi <đi u ki n> không còn th a
Vi c s d ng ba c u trúc l p trên có nh ng đi m chung, đi m riêng sau:
i m chung:
o u l p vòng th c thi m t s câu l nh th a đi u ki n
o Trong các câu l nh th c thi m i l n l p, ph i có ít nh t m t câu l nh làm thay
đ i l i vi c đánh giá l i đi u ki n l p nh m đ m b o tính d ng cho vòng l p
Trang 22o C u trúc l p while (…) và for (…) có th đ c chuy n đ i cho nhau
i m riêng:
o Ph n <l nh> c a vòng l p do…while (…) luôn đ c th c hi n ít nh t m t l n
do <đi u ki n> đ c ki m tra sau khi th c hi n l nh
o Ph n <l nh> c a vòng l p while (…) và for (…) có th không đ c th c hi n
l n nào, do <đi u ki n> đ c xét tr c khi th c hi n l nh
Trong Windows phone, vi c xây d ng các class có ý ngh a đ c bi t g n li n v i c
s d li u (CSDL) c a ng d ng Theo đó, m i b ng (table) trong CSDL s ng v i m t class trong C# Các bi n thành viên c a class chính là các c t (field) trong CSDL Các
ph ng th c c a class là các hàm giao ti p v i CSDL (ch ng h n nh ph ng th c l y thông tin, c p nh t thông tin,…)
th nhìn th y và s d ng các bi n thành viên hay nh ng ph ng th c bên trong l p đó
m c đ nào Danh sách các thu c tính và gi i h n truy c p đ c th hi n b ng sau:
B ng 2.2: B ng tóm t t các thu c tính truy c p c a m t l p trong C#
Thu c tính Gi i h n truy c p
public
Không h n ch Nh ng thu c tính đ c đánh d u là public đ c dùng b t kì ph ng th c nào c a l p bao g m c nh ng l p khác
private Thu c tính trong l p A đ c đánh d u là private thì ch nh ng
Trang 23LINQ là t vi t t t c a Language Integrated Query, là ngôn ng tích h p truy v n,
ch có t phiên b n Visual Studio 2008 và NET Framework 3.5 tr v sau
LINQ To SQL là m t ph n c a LINQ cho phép mô hình hóa c s d li u (CSDL) thành các l p NET, sau đó ng i dùng có th truy v n c ng nh c p nh t CSDL b ng ngôn ng LINQ LINQ to SQL h tr đ y đ transaction, view và các stored procedure (SP) ng th i, c ng cung c p m t cách d dàng đ thêm kh n ng ki m tra tính h p l
c a d li u và các quy t c vào trong mô hình d li u
So v i ADO.NET, LINQ cung c p m t cách ti p c n m i, d hi u trong vi c l p trình v i CSDL Vi c s d ng LINQ đ c k t h p v i file DataContext ây là file ch a
mô hình t ch c CSDL, có đ c t vi c ánh x CSDL
Hình 2.1: Mô hình ho t đ ng c a LINQ to SQL
Trong Windows Phone, LINQ to SQL đ c s d ng đ l p trình v i d li u local (SQL Database) c a ng d ng
Trang 242.1.5.1 L y thông tin t CSDL:
Cú pháp đ l y thông tin t CSDL b ng ngôn ng LINQ nh sau:
<DataContext name> db = new <DataContext name>();
var <tên bi n 1> = from <n c danh> in db.<tên b ng>
[where < đi u ki n>]
select <n c danh>; | select new { <n c danh>.<tên field>[,…]};
Trong đó: <tên bi n 1> là danh sách các k t qu nh n đ c t truy v n,
<DataContext name> là tên c a file DataContext
2.1.5.2 C p nh t thông tin CSDL:
c p nh t CSDL, tr c tiên ta l y thông tin c a đ i t ng c n c p nh t, thi t l p
l i giá tr và ghi l i vào CSDL thông qua hàm SubmitChanges()
<DataContext name> db = new <DataContext name>();
<tên b ng><tên bi n> = db.<tên b ng>.Single(<đi u ki n>);
<tên bi n>.<thu c tính c n thay đ i> = <giá tr thay đ i>;
[<tên bi n>.<thu c tính c n thay đ i> = <giá tr thay đ i>;………….]
<DataContext name> db = new <DataContext name>();
<TableName><tên đ i t ng> = new <TableName>();
<tên đ i t ng>.<tên thu c tính 1> = <giá tr 1>;
[<tên đ i t ng>.<tên thu c tính 2> = <giá tr 2>; ……… ]
db.<TableNames>.Add(<tên đ i t ng>);
db.SubmitChanges();
Trang 252.1.5.4 Xóa d li u ra kh i CSDL
xóa d li u ra kh i CSDL, ta c n ph i xác đ nh các đ i t ng mu n xóa, sau đó remove đ i t ng ra kh i l p ch a nó, và dùng hàm SubmitChanges() đ l u vào CSDL
<DataContext name> db = new <DataContext name>();
var <tên bi n 1> = from <n c danh> in db.<TableName>
<DataContext name> db = new <DataContext name>();
var <tên bi n> = db.<Tên th t c>( [<tham s 1> [, <tham s 2> ……….]]);
Trong đó: tên bi n ch a k t qu có đ c t th t c v a g i
Trang 262.2 S d ng GPS và A-GPS trên Windows phone
2.2.1 T ng quan v GPS
GPS là t vi t t t c a Global Positioning System có ngh a là h th ng đ nh v toàn
c u, dùng đ xác đ nh v trí trên trái đ t thông qua các v tinh nhân t o, do B Qu c phòng M thi t k , xây d ng, v n hành và qu n lý
Ph n ki m soát: có ch c n ng ki m soát các v tinh đi đúng h ng trên qu đ o và thông tin th i gian chính xác Có t t c 5 tr m ki m soát đ c đ t r i rác trên trái
đ t, trong đó có 4 tr m ho t đ ng t đ ng và 1 tr m làm nhi m v ki m soát trung tâm B n tr m t đ ng nh n tín hi u liên t c t v tinh và g i d li u v tr m trung tâm T i đây, d li u s đ c s a l i cho đúng và k t h p v i 2 anten khác đ g i
l i thông tin cho các v tinh
Ph n s d ng: là các thi t b nh n tín hi u v tinh GPS và ng i s d ng các thi t
b này
GPS ho t đ ng theo c ch sau:
Các v tinh GPS bay vòng quanh Trái t hai l n trong m t ngày theo m t qu
đ o r t chính xác và phát tín hi u có thông tin xu ng Trái t Các máy thu GPS nh n thông tin này và b ng phép tính l ng giác tính đ c chính xác v trí c a ng i dùng V
b n ch t, các máy thu GPS s so sánh th i gian tín hi u đ c phát đi t v tinh v i th i gian nh n đ c chúng sai l nh v th i gian này cho bi t máy thu GPS cách v tinh bao xa K t h p v i nhi u kho ng cách đo đ c t nhi u v tinh, máy thu có th tính
đ c v trí c a ng i dùng và hi n th lên b n đ
2.2.2 T ng quan v A-GPS
A-GPS là t vi t t t c a Assisted Global Positioning System, là h th ng đ nh v s
d ng thêm các thông tin tr giúp thông tin GPS
H u h t các thi t b c m tay GPS hi n nay (nh đi n tho i di đ ng, PDA,…) đ u
ng d ng công ngh A-GPS (Assisted GPS) B i vì, trong nhi u đi u ki n th c t , vi c truy n d n tín hi u GPS gi a v tinh và thi t b nh n trên m t đ t ho t đ ng r t kém ho c
th m chí không th ho t đ ng, nh t là trong các thành ph l n nhi u v i nhà cao t ng
ho c trong không gian kín Và do đó, A-GPS chính là gi i pháp cho v n đ này
A-GPS ho t đ ng theo c ch sau :
Thay cho vi c truy n tín hi u đ n v tinh, A-GPS k t n i tín hi u qua m t “tr m trung chuy n”, đó là m t h th ng máy ch h tr H th ng trung gian này xác đ nh v trí
Trang 27c a thi t b so v i các tr m thu phát sóng c a các m ng đi n tho i trung gian trong khu
v c và t đó tính toán ra v trí trên h th ng GPS
Hình 2.2: Cách th c ho t đ ng c a A-GPS
Có th nói, n u không có s h tr c a các tr m trung chuy n qua m ng đi n tho i
di đ ng này, thi t b A-GPS v n có th nh n đ c tín hi u t v tinh nh ng không có kh
Ngu n l y thông
tin
Tín hi u t các v tinh cùng v i tín hi u t các c t BTS (tr m thu phát sóng di đ ng) c a nhà cung
Th ng m t hàng phút đ xác đ nh t a đ , vì ph i m t
ch ng đó th i gian m i có
th k t n i đ n đ c t 4 v tinh tr lên Và thi t b ph i khu v c thoáng, không b che ch n
M c đ tin c y T a th ng có sai s nhi u h n GPS đ xác đ nh b i A-GPS T a th ng có chính xác cao đ xác đ nh b i GPS
Các thi t b dùng i n tho i di đ ng Các thi t b tô, máy bay, tàu bi n đ nh v trên ô
Trang 282.2.3 S d ng GPS trên Windows phone
Trên môi tr ng l p trình, Windows phone 8 h tr vi c l y thông tin v trí c a
đi n tho i GPS thông qua hai l p (class) sau:
GeoCoordinateWatcher class thu c namespace System.Device.Location
Geolocator class thu c namespace Windows.Devices.Geolocation
Hai class trên có nh ng đi m chung, đi m riêng sau:
2.2.3.1 i m chung
C hai class trên đ u h tr cho vi c l y thông tin v trí c a đi n tho i GPS thông qua c hai cách:
L y thông tin v trí c a đi n tho i t i th i đi m yêu c u
L y thông tin v trí c a đi n tho i m t cách liên t c
2.2.3.2 i m riêng
B ng 2.4: B ng so sánh GeoCoordinateWatcher class và Geolocator class
GeoCoordinateWatcher class Geolocator class Namespace System.Device.Location Windows.Devices.Geolocation
Ngu n g c Có t Windows phone 7 Ch có Windows phone 8
- Thu c tính Position ch a thông tin v trí c a đi n tho i
- H tr truy xu t thông tin
ch đ n n (background)
- Không có ph ng th c start(), stop(), ch c n khai báo
đ i t ng thu c l p
- GetGeopostionAsync(): l y thông tin v trí c a đi n thoai Trong ng d ng c a đ tài, vi c truy xu t thông tin v trí đi n tho i GPS đ c th c
hi n thông qua Geolocator class
Trang 292.2.3.3 S d ng Geolocation class
s d ng Geolocation class, ta c n ph i:
Khai báo namespace Windows.Devices.Geolocation
B t ID_CAP_LOCATION trong file WMAppManifest.xml c a ng d ng
L p Geolocation cung c p cho ng i dùng truy xu t thông tin v trí c a đi n tho i GPS thông qua hai cách sau:
Truy xu t thông tin v trí t i th i đi m yêu c u (single-shot location)
Truy xu t liên t c thông tin v trí đi n tho i (continuously location)
Vi c s d ng cách truy xu t thông tin nào là tùy thu c vào yêu c u c a t ng ng
d ng c th Tuy nhiên, đ i v i các ng d ng ch yêu c u thông tin GPS c a đi n tho i t i
m t th i đi m nào đó thì cách 1 là s l a ch n t t nh t, còn đ i v i các ng d ng yêu c u
c p nh t liên t c v trí c a đi n tho i thì nên ch n cách 2, tuy nhiên vi c s d ng cách này
s tiêu t n n ng l ng pin c a đi n tho i nhi u h n
GetPositionAsync(Timespan, Timespan) đ l y v trí c a đi n tho i Các ph ng
th c trên có th s d ng k t h p v i t khóa await (s d ng await đòi h i ph ng
th c ch a nó ph i khai báo async) phía tr c đ “ch ” các ph ng th c này hoàn
t t nh m gán thông tin k t qu cho đ i t ng thu c l p GeoPosition
2.2.3.3.2 Continuously location
truy xu t liên t c thông tin v trí c a đi n tho i, ta th c hi n các b c sau:
B c 1: kh i t o m t đ i t ng thu c l p Geolocation
B c 2: thi t l p các thông s tùy ch n và khai báo các s ki n cho đ i t ng:
o DesiredAccuracy: bao g m 2 thông s Default (m c đ nh) và High, dùng đ
thi t l p đ chính xác cho vi c truy xu t thông tin v trí GPS, trong đó:
Default: s d ng Wi-Fi ho c các tháp tín hi u di đ ng đ xác đ nh v trí, tùy thu c vào s s n có c a các ngu n
Trang 30 High: s d ng b nh n GPS đ xác đ nh v trí, cho đ chính xác cao h n ch
đ m c đ nh (default), tuy nhiên có th làm nh h ng đ n hi u su t ho t
StatusChanged là s ki n đ c phát sinh khi có s thay đ i v tình tr ng truy
xu t thông tin v trí c a đi n tho i v i các giá tr sau:
PositionStatus.Disable: cho bi t ng d ng không đ c phép s d ng thông tin GPS ho c GPS ch a đ c m
PositionStatus.Initializing: đang chu n b cho vi c truy xu t thông tin v trí
đi n tho i
PositionStatus.Nodata: không truy xu t đ c thông tin v trí
PositionStatus.Ready: truy xu t thành công, có d li u tr v
PositionStatus.NotAvailable: c nh báo này không xu t hi n trong ng d ng Windows phone, ch xu t hi n trong ng d ng Windows desktop khi yêu
c u ph n c ng không đáp ng đ c
PositionChanged là s ki n đ c phát sinh khi có s thay đ i v v trí c a thi t
b GPS, trong s ki n này tham s PositionChangedEventArgs ch a các thông tin liên quan v v trí c a thi t b
Trang 312.3 S d ng Google maps trong ng d ng Windows phone 8
2.3.1 Gi i thi u control Maps trong Windows phone 8
Trong môi tr ng l p trình, Windows phone 8 h tr hai đi u khi n Maps:
i u khi n Maps có t h đi u hành Windows phone 7
i u khi n Maps m i, vi t l i t Bing maps c a Windows phone 7
Hai đi u khi n Maps có nh ng đi m chung, đi m riêng sau:
2.3.1.1 i m chung
B n đ không h p d n đ c ng i dùng
D li u c a c hai đi u khi n Maps này là không nhi u, gây khó kh n cho ng i dùng trong vi c tìm đ ng đi
Do đó, đòi h i c n ph i có m t gi i pháp đ chuy n đ i các đi u khi n Map m c
đ nh trong Windows phone thành các b n đ có d li u nhi u h n, phong phú h n nh m
t o thu n l i cho ng i dùng trong vi c s d ng
i u khi n Maps th 2 (m c đ nh trong Windows phone 8) vi t l i t Bing Maps
c a Windows phone 7, d a trên Nokia’s Here Maps nh ng không cho phép ng i dùng thay đ i l p c s c a b n đ , và do đó không th chuy n đ i đi u khi n Maps này sang m t đi u khi n Map m i theo yêu c u c a ng i dùng đ c
Vì v y, ng d ng đã ch n đi u khi n Bing maps có t Windows phone 7 đ hi n
th b n đ , do kh n ng m r ng c a Bing maps trong vi c chuy n đ i sang m t đi u khi n Maps khác
2.3.2 So sánh Bing maps và Google maps
Hi n nay, có r t nhi u hãng ph n m m phát tri n công ngh b n đ trên các thi t b
di đ ng, trong đó ph i k đ n: Bing maps c a Microsoft, Yahoo!Maps c a Yahoo, Trendsmap c a m ng Twitter, Nokia maps c a Nokia… c bi t, đáng chú ý nh t là Google maps c a hãng ph n m m tìm ki m hàng đ u th gi i Google
hi n th b n đ , Windows phone cung c p m t đi u khi n Maps Tuy nhiên, d
li u c a Bing maps t ng đ i không nhi u, gây khó kh n trong vi c tìm đ ng đi Trong khi đó, v i ngu n d li u kh ng l , Google maps đ c s d ng r ng rãi h n, ph bi n trên h u h t các ng d ng tìm ki m và ch đ ng c a các thi t b di đ ng
Trang 32Vì th c n ph i thay th b n đ truy n th ng đ c tích h p s n trên Window phone
- Bing maps b ng b n đ Google maps đ ng d ng t o ra có th ch y t t và đáp ng đ y
đ nhu c u tìm đ ng đi c a ng i s d ng
Hình 2.3: So sánh Bing maps v i Google maps
Trang 332.3.3 Chuy n đ i Bing maps sang Google maps
s d ng đ c đi u khi n Maps trong Windows phone, ng i l p trình c n ph i
đ ng kí mi n phí mã khóa (key) dành cho nhà phát tri n t i đ a ch https://www.bingmapsportal.com Mã khóa (key) này đ c khai báo trong thu c tính
CredentialsProvider c a th Map
Vi c s d ng b n đ luôn đòi h i ph i cung c p thao tác thu nh đ có th quan sát bao quát hi n tr ng đ ng đi, nh ng c ng c n ph i có thao tác phóng to khi c n quan sát chi ti t m t n i nào đó trên b n đ … i u khi n Map cung c p s n thao tác zoom d a trên thu c tính ZoomBarVisibility, giúp cho ng i l p trình ti t ki m đ c th i gian x lý
2.3.3.1 S d ng b n đ Google maps online
Trong tr ng h p online, c s cho vi c chuy n đ i Bing maps sang Google maps
là vi c vi t l i hàm GetUri(int x, int y, int zoomLevel) đ hàm này tr đ n server c a Google l y file nh b n đ phù h p v i các thông s x, y, zoomLevel thay vì tr đ n server Microsoft nh m c đ nh
Google đã cung c p d ch v l y nh b n đ Google maps đ a ch :
2.3.3.2 S d ng b n đ Google Maps offline
Trong tr ng h p offline, đ hi n th b n đ Google maps, hàm GetUri s tr đ n Server c a ng d ng Server này đ m nh n vai trò là nh n yêu c u t hàm GetUri, sau đó tìm trong ngu n nh Google maps (đã đ c n p vào ng d ng tr c đó) đ tìm ra file nh
th a các thông s x, y, zoomLevel và tr v cho Bing maps đ hi n th lên cho ng i s
d ng
Trang 34Ngu n nh Google maps ph i đ c n p vào ng d ng tr c đó thông qua hai cách:
n p tr c ti p trong quá trình xây d ng ng d ng ho c cho phép download t i th i đi m
ng i dùng yêu c u Hi n nay, có r t nhi u công c cho phép t i b n đ Google maps v máy tính PC (Personal Computer) nh : Google Maps Tile Investigator, Google Maps Downloader,…Tuy nhiên, vi c s d ng các công c này có r t nhi u h n ch nh sau:
H u h t ch cho phép t i b n đ t i m t v trí kèm v i m t m c đ zoom nh t đ nh
zoom c a b n đ trong tr ng h p s d ng ph n m m ch a có b n quy n (key)
là d i 13
Các h n ch trên gây khó kh n th m chí không th s d ng các công c này trong
vi c t i nh b n đ Google maps v máy PC đ làm ngu n nh cho ng d ng B i ngu n
nh Google maps dùng cho offline ph i đ m b o tính liên t c c a c m t khu v c v i đ y
đ các m c đ zoom khác nhau V n đ trên đòi h i c n ph i có m t gi i pháp khác trong
vi c download b n đ Google maps v máy tính
Trong quá trình tìm hi u đ xây d ng ng d ng, em nh n th y khi truy c p b n đ Google maps (t i đ a ch : http://maps.google.com) b ng trình duy t Internet Explorer có
đ c đi m nh sau: trình duy t Internet Explorer s l u các file nh Google maps đã load
qua vào trong th m c t m là Temporary Internet Files, h n th n a tên c a m i file
nh còn đ c l u kèm v i các thông s x, y, zoomLevel ng v i hàm GetUri Nh v y, ta
ch c n s d ng trình duy t Internet Explorer đ truy c p vào b n đ Google maps, sau đó kéo chu t đ xem toàn b b n đ c a m t khu v c nào đó v i đ y đ các m c đ zoom khác nhau, cu i cùng m file Temporary Internet Files đ copy toàn b nh Google maps
Vi c s d ng trình duy t Internet Explorer đem đ n r t nhi u l i ích sau:
Không c n ph i cài đ t, Internet Explorer đ c tích h p kèm theo h đi u hành Windows
Ti t ki m r t nhi u th i gian, công s c trong vi c t i b n đ Google maps
Ngu n nh b n đ đ m b o đ c tính liên t c c a c khu v c v i đ y đ các m c
đ zoom khác nhau tùy theo m c đích s d ng
Các b c đ m th m c Temporary Internet Files nh sau:
M trình duy t Internet Explorer Tools Internet Options T i m c Browsing history, ch n Setting View files
i v i vi c xây d ng server: do server này đ c dùng đ h tr cho ng d ng trong tr ng h p offline nên server s ch y localhost (đính kèm v i ng d ng) Sau khi hàm GetUri g i yêu c u, server s ti p nh n và tìm ra file nh thích h p tr v cho Bing maps đ hi n th lên cho ng i s d ng Bên c nh đó, đ gi m t i hi u s c làm vi c cho
ng d ng, nên ch trong tr ng h p không có k t n i internet thì hàm GetUri m i g i yêu
c u đ n server c a ng d ng Vi c xây d ng server h tr s d ng b n đ offline s đ c trình bày rõ ph n sau c a báo cáo
Trang 352.4 L p trình client – server trên NET
2.4.1 T ng quan v l p trình client – server
2.4.1.1 Socket
Socket là m t b API (Application Programming Interface) cung c p các ph ng
th c đ giao ti p thông qua m ng Trong môi tr ng NET, h th ng cung c p hai namespace là System.Net và System.Net.Sockets ch a các l p h tr trong vi c l p trình
m ng v i socket
Có hai lo i socket:
- Stream socket: d a trên giao th c TCP (Tranmission Control Protocol), vi c
truy n d li u ch th c hi n gi a hai quá trình khi đã đ c thi t l p k t n i Giao th c
này đ m b o d li u đ c truy n đ n n i nh n m t cách đáng tin c y, đúng th t nh vào c ch qu n lý lu ng l u thông trên m ng và c ch ch ng t c ngh n
- Datagram socket: d a trên giao th c UDP (User Datagram Protocol), vi c truy n
d li u không yêu c u có s thi t l p k t n i gi a hai quá trình Vi c truy n d li u
theo giao th c UDP không đ c tin c y, có th không đúng trình t và l p l i Tuy nhiên,
do giao th c này không yêu c u thi t l p k t n i nên không c n các c ch ph c t p và do
đó t c đ truy n t i d li u s nhanh h n giao th c TCP, thích h p v i các ng d ng nh : chat, game,…
Trong ph m vi đ tài này, em ch xét vi c xây d ng ng d ng client – server ch
đ có k t n i (TCP) đ phù h p v i yêu c u s d ng
2.4.1.2 Port
Port là m t c ng k t n i, giúp xác đ nh duy nh t m t ti n trình (process) trên m t
máy trong m ng M i ng d ng trên server s đ c đính kèm m t s hi u port c th v i
ý ngh a: server s “đ i” client port nào, khi đó client mu n giao ti p v i server thì ph i
g i yêu c u đ n đúng port t ng ng c a server
2.4.1.3 Mô hình client – server theo giao th c TCP
M t ng d ng client – server theo giao th c TCP ho t đ ng theo c ch sau:
- Server: có nhi m v l ng nghe, ch đ i k t n i t client (trên đ a ch IP v i m t
s hi u port đã đ c quy đ nh s n) Khi client g i yêu c u đ n server thì server s nh n
d li u t client, x lý và g i tr k t qu v cho client
- Client: là ng d ng đ c “ph c v ”, khi c n truy xu t d li u t server, client s
g i yêu c u và ch đ i k t qu t server
Trang 36Hình 2.4: Mô hình chung c a m t ng d ng client-server có k t n i (TCP)
Quá trình trên đ c hi n th c thông qua các giai đo n sau:
- Giai đo n 1: server t o socket, gán s hi u c ng (port) và “ch ” k t n i t client
Trong đó:
- socket(): server t o Socket
- bind(): gán s hi u (port) cho socket
- listen(): server l ng nghe k t n i t client
trên đ a ch IP c a server và s hi u port
Server s n sàng ph c v client
Trang 37- Giai đo n 2: client t o Socket, g i yêu c u k t n i đ n server
Trong đó:
o Phía Client:
socket(): client t o socket
connect(): client g i yêu c u đ n server (thông qua đ a ch IP và s hi u port)
o Phía Server:
accept(): server ch p nh n k t n i c a client, khi đó m t kênh giao ti p o
đ c hình thành, client và server có th trao đ i thông tin thông qua kênh o này
- Giai đo n 3: client và server trao đ i thông tin v i nhau
o Phía Server:
Sau khi ch p nh n yêu c u k t n i t client, server thông th ng s th c
hi n l nh read() và “ngh n” cho đ n khi có yêu c u (Request Message) t client
g i đ n Sau đó, server s phân tích và th c thi yêu c u, k t qu s đ c tr v client b ng l nh write()
Trang 38- Giai đo n 4: k t thúc phiên làm vi c
Kênh o s b xóa khi client và server đóng Socket b ng l nh close()
2.4.2 Xây d ng Server h tr s d ng b n đ offline
h tr cho vi c s d ng b n đ offline, server s đ c xây d ng kèm v i ng
o Maps: là th m c ch a ngu n nh đ c l u trong ng d ng
o x, y, zoomLevel: là các thông s c a hàm GetUri
Server: đ m nh n vai trò nh n yêu c u g i đ n t client Sau đó, server s ki m
yêu c u k t n i đ n: n u đó là yêu c u truy xu t thông tin (HTTP GET), server
s tìm trong ngu n nh Google maps đã đ c l u trong ng d ng đ tìm ra file
Trang 39nh th a các thông s x, y, zoomLevel c a hàm GetUri, tr v cho Bing maps
đ hi n th lên cho ng i dùng
Hình 2.5: Mô hình ho t đ ng c a server h tr s d ng b n đ offline
B n tin yêu c u HTTP bao g m các thông tin sau:
B n tin yêu c u HTTP theo mã đ nh d ng ASCII g m 3 thành ph n chính: dòng yêu c u (l nh GET, POST, HEAD), các dòng header và k t thúc thông đi p B n tin yêu
c u HTTP client có th kèm các thông tin mà client mong mu n trao đ i v i server Trong hàm GetUri: các thông s x, y, zoomLevel ch ra r ng client mu n truy xu t file
nh trong th m c Maps c a server
Hình 2.6: C u trúc c a m t b n tin yêu c u HTTP
Trang 40 B n tin tr l i HTTP:
B n tin tr l i HTTP g m 3 thành ph n chính: dòng tr ng thái (ch a mã tr ng thái), các dòng tiêu đ và d li u đ tr v cho client Mã tr ng thái đ c ghi t i dòng đ u tiên trong thông đi p c a server tr v cho client v i các tr ng h p nh sau:
Trong môi tr ng l p trình Windows phone trên Net, vi c xây d ng server đ c
hi n th c thông qua đ i t ng thu c l p StreamSocketListener (thu c namespace
Windows.Networking.Sockets) L p StreamSocketListener cung c p thu c tính
BindServiceNameAsync(string name) đ gán s hi u port cho server và s ki n ConnectionReceived đ ti p nh n k t n i đ n t client Trong s ki n ConnectionReceived, ta có th xây d ng các ph ng th c nh ki m tra b n tin yêu c u HTTP client, ph n h i k t qu v client,…
Hình 2.7: C u trúc c a m t b n tin tr l i HTTP
Hình 2.8: Danh m c tr ng thái trong thông đi p server g i client