Tải bản đầy đủ (.pdf) (165 trang)

XÂY DỰNG ỨNG DỤNG TRA CỨU TÀU, XE TRÊN HỆ ĐIỀU HÀNH 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 (7.13 MB, 165 trang )

I HM TPHCM
KHOA CÔNG NGHỆ THÔNG TIN



LÊ ANH TOÀN
TRẦN CÔNG MINH



XÂY DỰNG ỨNG DỤNG
TRA CỨU TÀU, XE TRÊN
HỆ ĐIỀU HÀNH ANDROID


KHÓA LUẬN TỐT NGHIỆP




TP.H CHÍ MINH - 


1





























I HM TPHCM
KHOA CÔNG NGHỆ THÔNG TIN



LÊ ANH TOÀN
TRẦN CÔNG MINH




XÂY DỰNG ỨNG DỤNG
TRA CỨU TÀU, XE TRÊN
HỆ ĐIỀU HÀNH ANDROID

CHUYÊN NGÀNH: CÔNG NGHỆ PHẦN MỀM



KHÓA LUẬN TỐT NGHIỆP



NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. TRẦN NGỌC BẢO






2

LỜI CẢM ƠN



Trong thi gian thc hin lui s ng dn ca Khoa Công Ngh Thông
i Hc bit là s ng dn ca thy Trn Ngc
Bi th kic kt qu y
chúng em xin chân thành gi ln :

 Thy Trn Ngc Bo  ng phòng Công Ngh  ng
i hng dng và phát
trin lut nghip. S  ng dn nhit tình ca th
cng c kin thc và hoàn thành tt lut nghip. Chúng em xin chân thành cám
y.
 Quý thy cô Khoa Công Ngh    i h  m
Tp.HCM nói riêng và các thi Hng
dn dy bo, giúp chúng em trang b nhng kin thc quý báu trong sut thi gian hc tp
và nghiên cu.
Dù rt c gng và liên tc nâng cao kin th tài vn không th tránh
nhng sai sót và hn cht mong nhc s thông cm và ý kin
ch b chúng em có th hoàn thin nhc phi. Mt ln
na, chúng em xin chân thành c

Nhóm sinh viên thc hin
Lê Anh Toàn  Trn Công Minh




3

MC LC
Bng các thut ng và các t vit tt 8
Danh mc các bng biu 9
Danh mc các hình nh 11





 14
PHN 1: TÌM HIU V K THUT LP TRÌNH TRÊN ANDROID 16
1  tin hành lp trình trong Android 16
1.1. Java Runtime Environment (JRE) 16
1.2. Eclipse IDE 16
1.3. Android SDK 16
1.4. Android ADT 17
2 K thut lp trình vu khin 17
2.1. ListView 17
2.1.1. Yêu ct ra 17
2.1.2. Gii quyt 18
2.2. GridView 18
2.2.1. Yêu ct ra 18
2.2.2. Gii quyt 18
2.3. Spinner View, DatePicker 19
2.3.1. Yêu ct ra 19
2.3.2. Gii quyt 19
2.4. TabHost View 20
2.4.1. Yêu ct ra 20
2.4.2. Gii quyt 21
2.5. Gallery và ImageView 21
2.5.1. Yêu ct ra 21
2.5.2. Gii quyt 22


4

3 K thut lp trình vi SQLite 22
3.1. Gii thiu 22
3.2. Ví d minh ha 24

3.2.1. t v 24
3.2.2. Gii quyt 25
4 K thut lp trình vi Web Service 25
4.1. Dng SOAP (Simple Object Access Protocol) 25
4.2. a 26
4.2.1.  26
4.2.2. Gii quyt 28
5 Phát audio, video trong Android 28
5.1. Gii thiu 28
5.1.1. Phát audio 28
5.1.2 Phát video 30
5.2. Minh ha 31
5.2.1. V t ra 31
5.2.2. Gii quyt 31
PHN 2: XÂY DNG NG DNG TRA CU THÔNG TIN TÀU, XE 32
6 











 32
6.1. 






 32
6.2  c t yêu cu 33
7 Phân tích, thit k 46
7.1. Mô hình thc th kt hp (CDM) 46
7.1.1. Thc th Hang 47
7.1.2. Thc th PhuongTien 47
7.1.3. Thc th LoaiPhuongTien 47
7.1.4. Thc th Phim 48
7.1.5. Thc th HinhAnh 48


5

7.1.6. Thc th DiaDiem 48
7.1.7. Thc th Tuyen 48
7.1.8. Thc th TrungGian 49
7.1.9. Thc th LoaiGhe 49
7.1.10. Thc th Gia 49
7.1.11. Thc th DoiTuong 50
7.1.12. Thc th KhuyenMai 50
7.1.13. Mi kt hp ChiTietTuyen 50
7.1.14. Mi kt hp ChiTietViTri 51
7.2. Mô hình vt lý (PDM) 51
7.2.1. Bng Hang 53
7.2.2. Bng Phim 53
7.2.3. Bng LoaiPhuongTien 54

7.2.4. Bng ChiTietHang 54
7.2.5. Bng PhuongTien 54
7.2.6. Bng HinhAnh 55
7.2.7. Bng KhuyenMai 56
7.2.8. Bng Gia 56
7.2.9. Bng ChiTietViTri 57
7.2.10. Bng LoaiGhe 58
7.2.11. Bng Tuyn 58
7.2.12. Bng TrungGian 59
7.2.13. Bng ChiTietTuyen 60
7.2.14. Bng Nhom 60
7.2.15. Bng NguoiDung 60
7.2.16. Bng ChucNang 61
7.2.17. Bng ChiTietChucNang 61
7.3. Thit k giao din 62


6

7.3.1. Giao din phân h tra cu trên nn web 62
7.3.2. Giao din qun tr phân h web 67
7.3.3. Giao din phân h tra cu trên thit b ng 99
8 t 109
8.1. t phân h qun tr web 109
8.2. t phân h tra cu trên nn web 109
8.3. t phân h tra cu trên mobile 110
9 Tng kt 110
9.1. Kt lun 110
9.1.1. Nhng kt qu c v mt lý thuyt 110
9.1.2. Nhng kt qu c v mt ng dng 110

9.2. ng phát trin 111
TÀI LIU THAM KHO 112
PH LC: MÃ NGUN PHN MINH HA K THUT 113
1 K thut lp trình vu khin 113
1.1 ListView 113
1.1.1 Xây dng giao din 113
1.1.2 Xây dng x lý 115
1.2 GridView 117
1.2.1 Xây dng giao din 117
1.2.2 Xây dng x lý 118
1.3 Spinner View, DatePicker 121
1.3.1 Xây dng giao din 121
5.3.2. Xây dng x lý 123
1.4 TabHost View 126
1.4.1 Xây dng giao din 126
1.4.2 Xây dng x lý 128
1.5 Gallery và ImageView 128


7

1.5.1 Xây dng giao din 128
1.5.2 Xây dng x lý 129
2 K thut lp trình vi SQLite 131
2.1 Xây dng giao din 131
2.2 Xây dng x lý 136
3. K thut lp trình vi Web Service 144
3.1 Xây dng giao din 144
3.2 Xây dng x lý 148
4. Demo lp trình phát audio, video 153

4.1 Xây dng giao din 153
4.2 Xây dng x lý 155
















8

Bảng các thuật ngữ và các từ viết tắt
Ký hiệu
Diễn giải
ADT
ADT - Android Development Tools, b công c
h tr cho phn mm Eclipse trong vic phát trin ng
dng Android
Android
H u hành trên n thong phát trin bi
Google và da trên nn tng Linux

AVD Manager
Giao din qun lý cu hình thit b Android o
3G
Mng 3G là th h th ba ca chun công ngh
n thong, cho phép truyn c d liu thoi và
d liu ngoài thoi (ti d liu, gi email, tin nhn
nhanh, hình nh )
HTML
HTML - Hyper Text Markup Language, là ngôn
ng c thit k  to nên
các trang web
IDE
IDE - Integrated Development Environment, còn
gi là mng phát trin tích hp
iOS
H u hành trên các thit b  ng ca hãng
Apple
Java Runtime
Environment
Là thành phn ca b công c phát trin, h tr
phát trin ng dng Java
KSOAP2
 viên h tr gi Web Service dng SOAP trên
Android
SD Card
Mt dng th nh ca thit b ng
SDK
SDK - Software Development Kit là b công c
phát trin ng dng phn mm
SOAP

SOAP  Simple Object Access Protocol, m tiêu
chun ca W3C, là giao thc s d  nh
 liu dng thun thông qua giao thc
HTTP
URL
URL - Uniform Resource Locator
tham chiu ti tài nguyên trên mng Internet.
Web Service
Mt tp hc gi thc hin
t xa thông qua ma ch
Window Service
Windows service là mt ng dng chy trên máy
server hoc workstation và cung cp nhng ch
mà s din tin ca nó không cn s c tip
ci dùng



9

Danh mục các bảng biểu
Bng 6.1 - c t use case tra cu gi tàu, xe 34
Bng 6.2 - c t use case tra cu hành trình tàu, xe 35
Bng 6.3 - c t use case tra cu giá vé tàu, xe 36
Bng 6.4 - c t use case gt vé tàu, xe 36
Bng 6.5 - c t use case chia s thông tin kt qu tra cu 37
Bng 6.6 - c t c s tra cu 37
Bng 6.7 - c t p 39
Bng 6.8 - c t use case nhp liu 39
Bng 6.9 - c t use case phân quyn 40

Bng 7.1 - Mô t thc th Hang 47
Bng 7.2 - Mô t thc th PhuongTien 47
Bng 7.3 - Mô t thc th LoaiPhuongTien 47
Bng 7.4 - Mô t thc th Phim 48
Bng 7.5 - Mô t thc th HinhAnh 48
Bng 7.6 - Mô t thc th DiaDiem 48
Bng 7.7 - Mô t thc th Tuyen 49
Bng 7.8 - Mô t thc th TrungGian 49
Bng 7.9 - Mô t thc th LoaiGhe 49
Bng 7.10 - Mô t thc th Gia 50
Bng 7.11 - Mô t thc th DoiTuong 50
Bng 7.12 - Mô t thc th KhuyenMai 50
Bng 7.13 - Mô t thc th ChiTietTuyen 50
Bng 7.14 - Mô t thc th ChiTietViTri 51
Bng 7.15 - Mô t bng Hang 53
Bng 7.16 - Mô t bng Phim 53
Bng 7.17 - Mô t bng LoaiPhuongTien 54


10

Bng 7.18 - Mô t bng ChiTietHang 54
Bng 7.19 - Mô t bng PhuongTien 54
Bng 7.20 - Mô t bng HinhAnh 55
Bng 7.21 - Mô t bng KhuyenMai 56
Bng 7.22 - Mô t bng Gia 56
Bng 7.23 - Mô t bng ChiTietViTri 57
Bng 7.24 - Mô t bng LoaiGhe 58
Bng 7.25 - Mô t bng Tuyen 58
Bng 7.26 - Mô t bng TrungGian 59

Bng 7.27 - Mô t bng ChiTietTuyen 60
Bng 7.28 - Mô t bng Nhom 60
Bng 7.29 - Mô t bng NguoiDung 60
Bng 7.30 - Mô t bng ChucNang 61
Bng 7.31 - Mô t bng ChiTietChucNang 61













11

Danh mục các hình ảnh
Hình 2.1 - Giao diu khin ListView 17
Hình 2.2 - Giao diu khin GridView 18
Hình 2.3 - Giao din minh h

 19
Hình 2.4 - Giao diu khin TabHost 20
Hình 2.5 - Giao diu khin Gallery và ImageView 21
Hình 3.1 - Giao din ng dng minh ha SQLite 24
Hình 4.1 - Minh ha kt qu sau khi gi web service 27

Hình 4.2 - Mô hình kt ni g





 27
Hình 4.3 - Hình minh ha vin KSOAP2 vào ng dng 28
Hình 5.1 - Minh ha 

 31
Hình 6.1 - Kin trúc ng dng tra cu thông tin tàu xe 32
Hình 6.2 -  use case ci dùng cui 34
Hình 6.3 -  use case ci qun tr h thng tàu, xe 38
Hình 6.4 - Quy trình x lý nghip v tra cu gi tàu, xe trên thit b ng 41
Hình 6.5 - Quy trình x lý nghip v tra cu l trình tàu, xe trên thit b ng 41
Hình 6.6 - Quy trình x lý nghip v tra cu giá vé tàu, xe trên thit b ng 42
Hình 6.7 - Quy trình x lý nghip v tra cu trên nn web 43
Hình 6.8 - Quy trình x lý nghip v nhp liu trên web server 44
Hình 6.9 - Quy trình x lý nghip v phân quyn 45
Hình 7.1 -  CDM 46
Hình 7.2 -  vt lý PDM 52
Hình 7.3 - Giao din trang tra cu 62
Hình 7.4 - Giao din kt qu khi không cung cp lon và hãng 63
Hình 7.5 - Giao din kt qu tra cu khi cung cp thông tin hãng vn chuyn 63
Hình 7.6 - Giao din kt qu tra cu khi cung cp thông tin lon 64
Hình 7.7 - Giao din kt qu khi cung cp lo tin và hãng 64


12


Hình 7.8 - Giao din thông tin l trình ca tuyn 65
Hình 7.9 - Giao din thông tin giá vé trên các trm ca tuyn 66
Hình 7.10 - Giao din thông tin giá vé gia các trm ca tuyn 66
Hình 7.11 - Giao din th hin hình nh cn 67
Hình 7.12 - Giao dip 67
Hình 7.13 - Activity biu dip 68
Hình 7.14  Giao din màn hình chính ca trang qun tr 69
Hình 7.15 - Giao din màn hình qun dành cho nhân viên h thng 69
Hình 7.16 - Activity biu din use case nhp liu 70
Hình 7.17 - Giao din màn hình qung khác 71
Hình 7.18 - Activity biu din use case nhp liu 72
Hình 7.19 - Giao din qun lý tuyi vi nhân viên nhp liu h thng 73
Hình 7.20 - Activity biu din use case nhp liu 74
Hình 7.21 - Giao din qun lý tuyi vng khác 75
Hình 7.22 - Activity biu din use case nhp liu 76
Hình 7.23 - Giao din qui vi nhân viên nhp liu h thng 77
Hình 7.24 - Activity biu din use case nhp liu 78
Hình 7.25 - Giao din qui vng khác 79
Hình 7.26 - Activity biu din use case nhp liu 80
Hình 7.27 - Giao din qun lý tài khoi vi nhân viên nhp liu h thng 81
Hình 7.28 - Activity biu din use case nhp liu 82
Hình 7.29 - Giao din qun lý tài khoi vng khác 83
Hình 7.30 - Activity biu din use case nhp liu 84
Hình 7.31 - Giao din qui dùng 85
Hình 7.32 - Activity biu din use case nhp liu 86
Hình 7.33 - Giao din danh mm 87
Hình 7.34 - Activity biu din use case nhp li 88
Hình 7.35 - Giao din danh mc hình i vi nhân viên h thng 89



13

Hình 7.36 - Activity biu din use case nhp liu 90
Hình 7.37 - Giao din danh mc hình i vng khác 91
Hình 7.38 - Activity biu din use case nhp liu 92
Hình 7.39 - Giao din danh mi vi nhân viên h thng 93
Hình 7.40 - Activity biu din use case nhp liu 94
Hình 7.41 - Giao din danh mi vng khác 95
Hình 7.42 - Activity biu din use case nhp liu 96
Hình 7.43 - Giao din danh mc loi gh 96
Hình 7.44 - Giao din danh mng 97
Hình 7.45 - Giao din danh mc lon 97
Hình 7.46 - Giao din danh mc khuyn mãi 98
Hình 7.47 - Giao din danh mc nhóm ch 98
Hình 7.48 - Giao din màn hình chính ng dng 99
Hình 7.49 - Giao dic s tra cu 99
Hình 7.50 - Activity biu dic s tra cu 100
Hình 7.51 - Giao din màn hình Gii thiu 101
Hình 7.52  Giao ding dn s dng 101
Hình 7.53  Giao din màn hình tra cu 102
Hình 7.54 - Activity biu din Use case tra cu tàu, xe 103
Hình 7.55 - Giao din 104
Hình 7.56 - Giao din màn hình th hin gi chy tàu, xe 104
Hình 7.57 - Activity biu din Use case xem gi chy tàu, xe 105
Hình 7.58 - Giao din màn hình th hin l trình 106
Hình 7.59 - Activity biu din Use case xem l trình tàu, xe 106
Hình 7.60 - Giao din màn hình th hin giá vé 107
Hình 7.61 - Activity biu din Use case xem giá vé tàu, xe 108
Hình 7.62 - Giao din màn hình th hin l trình trên b 109



14



̀
i ni đầu
Ngày nay khi các thit b cm tay tr nên ph bi phát trin ln mnh
ca các h thng vin thông làm cho các dch v phc v nhu cu con ngi trên thit b
cm tay ngày càng ph bic bit là các dch v tra cu trc tuyn trên thit b cm
c d t phát trin khi mà công ngh mc phát trin
mt cách ri dùng t truyn ti d liu rt nhanh. Cùng vi
 i ca h u hành mã ngun m Android có kh n cao, có th
c tic công ngh.
Theo comScore, th n thoi thông minh M thi gian gu du
hiu cho thy h u hành Android c ng hoàn toàn h u hành iOS
ca Apple và BlackBerry ca RIM. Ch u tiên cn 69,5
trii M s dng lon thoi cuc kh kt
thúc vào tháng 11/2010. 33% s n thoi tui t 13 tr lên tham gia cuc
kho sát cho bit h thích h        n thoi
BlackBerry ca RIM, trong khi ch   i s dng chn các sn phm ca
Apple. Vi nhng con s  phát trit bt và ti
phát trin ca h u hành Android ln mc nào.
Khi nhu cu thông tin ngày càng phát trii dùng s mun truy cp hoc tìm
kim thông tin mi lúc, m s dng
 tìm kin thoy
 chu hình cao, có giá thành r c ph bic xây
dng các ng dng trên thit b ng s tr thành mt ngành công nghip ha hn s có
t phát trin nhanh trong nhi.

Dân s trung bình c c tính 87,84 trii (Tng cc Thng
kê), nhu ci vào các dp l, tng rt lu thông tin v giá vé


15

tàu, xe tng rt ln thông tin cung cp lng rt ít. Hin nay  trong
   t s ng dng tra c     n xe buýt (ng dng
c xây d ng nhu ci vi xe buýt. Tuy nhiên, các ng
dng tra cu thông tin v xe khách, tàu l Vit Nam trên các thit b 


minh dùng h u hành Android vc quan tâm và phát tric. Vì
nhng lý do trên mà chúng em quyu, tìm hiu k thut lp trình
trên Andr xây dng mt ng dng tra cu thông tin v tàu, xe trên thit b ng
s dng h u hành mã ngun m Android.
 tài ca nhóm ch yn hai v 
 Mt là, xây dng ng dng tra cu thông tin các hãng tàu, xe trên
Android có các ch
- Cho phép tra cu thông tin gi chy, l trình, giá vé v
i dùng cung cp.
- Cho phép chia s thông tin tra cu thông qua các ng d 
SMS, Facebook, Gmail.
- Cho phép xem lc s các tra cu gn t ci dùng
 Hai là, xây dng mt web server h tr cho vic nhp liu các thông tin
v các hãng tàu, xe. Bên cc h tr l trang web dng HTML ca
hãng , xe.









2 

:
 1: 
















 2: 










, xe




























. 














. 



.



& Công Minh


16







PHẦN 1: TÌM HIỂU VỀ KỸ THUẬT LẬP TRÌNH TRÊN
ANDROID
1 Các bƣớc để tiến hành lập trình trong Android
Không giy h u hành Android có th hoc trên
hu ht các nn tng t Windows, Linux và Mac. Do vy, hu ht các h u hành và cu
hình máy tính hin nay u có th ti v và s dng c b công c lp trình lp trình
này. Thêm na, các nn tng và các b công c lp trình cu min phí. Do
n có th ti v trc tip các b công c lp trình này trên trang ch ca
i phát hành.  có th bt u lp trình trên h u hành Android, mt s phn
mm sau s cn phi c t :
1.1. Java Runtime Environment (JRE)
B JRE giúp làm nn t chy các ng dng trên h u hành Android. Ti thi
m hin ti thì b Java Platform mi nht là JRE 7. Chúng ta có th vào trang
 ti v t theo
ng dn mnh mà phn m tránh nhn
các tc sau này khi lp trình.
1.2. Eclipse IDE
ng h tr lp trình Java rt tt và tin li. Ti thm này thì bn
Eclipse mi nht là phiên bn INDIGO i dùng có th vào trang :
và tùy theo h u hành s dng mà ti v bn
Eclipse Classic phù hp cho mình. Sau khi ti v, vic cn làm ch là gic
va ti v và khng Eclipse. (Eclipse ch chc t).

1.3. Android SDK



17

Là gói h tr lp trình trên h u hành Android. Chúng ta có th vào trang web :
và ti v bn SDK phù hp cho mình. Công
vic cn làm tip theo là gii nén tp tin va ti v vào trong mc c 
ng dn ca nó) và tit
1.4. Android ADT
t trình cm thêm (plug-in) dành cho Eclipse IDE nhm mang li các tính
 nh m  ng tích h  xây dng các ng dng trên h u hành
Android. Công vic tip theo là tin hành ti v   t trình cm thêm này vào
t xong, chúng ta khng li Eclipse và chn menu Window
>> Android SDK and AVD Manager . Khi ca s mi hin ra thì chúng ta s u
vào tt c các Packages hin có và tit xong, chúng ta
 s dng.
2 Kỹ thuật lập trình với các điều khiển
2.1. ListView
2.1.1. Yêu cầu đặt ra
S du khin ListView xây dng giao din hin th chi tit l 
tin vn chuyn s  :

Hình 2.1 - Giao diu khin ListView


18

2.1.2. Giải quyết
 thc hic yêu cu trên, chúng ta s thc hic chính sau:
 c 1: xây dng lp tha k t lp BaseAdapter và np chng các hàm

 thc hin vic gn kt d liu
khin ListView.
 c 2: xây dng mt lp tha k t l   hin th
ListView. Thông qua hàm setListAdapt  d liu và hin th lên ListView. Ngoài
 thit lp x lý khi chn mt mc tin, ta dùng hàm onListItemClick(). Chi tit xin
xem thêm trong phn Ph lc mc 1.1.
2.2. GridView
2.2.1. Yêu cầu đặt ra
S du khin GridView xây dng giao din màn hình ca ng d

Hình 2.2 - Giao diu khin GridView
2.2.2. Giải quyết
 thc hic yêu cu trên, chúng ta s thc hic chính sau :


19

 c 1: xây dng lp tha k t lp BaseAdapter và np chng các hàm
 thc hin vic gn kt d liu
khin GridView.
 c 2: xây dng mt lp tha k t l hin th GridView.
  d liu và hin th lên G thit lp
x lý khi chn mt mc tin, ta thit lp setOnItemClickListener() cho GridView và hin
thc hàm onItemClick(). Chi tit xin xem thêm trong phn Ph lc mc 1.2.
2.3. Spinner View, DatePicker
2.3.1. Yêu cầu đặt ra
S du khin Spinner và DatePicker xây dng giao din tra cu thông tin tàu,
i dùng chn ngày tra cu, hp thoi DatePicker s c hin th cho phép
thit lp ngày tháng và chn, lon, hãng vn chuyn qua
Spinner. Giao di gi:


Hình 2.3 - Giao din minh ha Spinner View 
2.3.2. Giải quyết


20

 thc hic yêu cu trên, chúng ta s thc hic sau :
 n cho màn hình trong tp XML
 c 2: to lp k tha t l thit lp hin th và x lý cho
Spinner, DatePicker. Gn kt d liu khin Spinner bng cách to mt th hin
ca l      th  hin th hp thoi
DatePicker ta cn np chng hàm onCreateDialog(). Thông tin ngày tháng khi cp nht
trong hp thoc x  ly thông tin
c chn. Chi tit xin xem thêm trong phn Ph lc mc 1.3
2.4. TabHost View
2.4.1. Yêu cầu đặt ra
S du khin TabHost c tùy chnh xây dng chi
dùng tùy chn Tab hin th theo tng m dng trong ng di dùng
nhn vào tng mc trong Tab thì giao din s i cho phù hp vi tng loi


Hình 2.4 - Giao diu khin TabHost



21

2.4.2. Giải quyết
 thc hic yêu cu trên, chúng ta s thc hic sau :

 nh n tab trong t  o mt lp
tha k t l hin th giao di
            u khin
TabHost. Ta có th ch nh ni dung hin th và bing hình n) ca tab
lt thông qua hàm setContent() và setIndicator().
 c 3: s dng ln màn hình tra cu thông tàu, xe
liên kt vu khin TabHost. Chi tit xin xem thêm trong
phn Ph lc mc 1.4.
2.5. Gallery và ImageView
2.5.1. Yêu cầu đặt ra
S d u khin Gallery và ImageView xây dng ch    i
dùng xem danh sách hình n vn chuyi dùng chn các mc
hình  c hin th  kích c l trên ImageView.
Giao di

Hình 2.5 - Giao diu khin Gallery và ImageView


22

2.5.2. Giải quyết
 thc hic yêu cu trên, chúng ta s thc hic chính sau :
 c 1: xây dng lp tha k t lp BaseAdapter và np chng các hàm
 thc hin vic gn kt hình u
khin Gallery.
 c 2: xây dng mt lp tha k t l hin th Gallery.
Thông qua hàm setAdapter()  hình nh và hin th  thit lp x
lý khi chn mt mc hình nh ta thit lp hàm setOnItemClickListener() cho Gallery và
hin thc hàm onItemClick(). Chi tit xin xem thêm trong phn Ph lc mc 1.5
3 Kỹ thuật lập trình với SQLite

3.1. Giới thiệu
Trong Android thì h  d lic s d thng mã
ngun m c s dng rng rãi trong các ng dng (Mozilla Firefox s d 
tr các thông tin v cu hình, iPhone  d d liu SQLite).  d
lic nhúng trong Android, s dng ít b nh. N d liu t c thì ta s
ch vic assets ca d c hin vic sao chép tp tin d
liu t v     c /data/data/package_name/databases/ trên thit b (


package_







 )ng hp mun t d liu bng mã 
thm chy ng d
To mt lp tha k t  m d liu, qun lý
vic t d lin ca nó thông qua các hàm onCreate(), open(),
close() và onUpgrade(). Ngoài ra trong lp này, ta có th 
vic thêm, xóa, s      d liu. Mt s  ng dùng ca lp
SQLiteOpenHelper
 onCreate() tham s truyng thuc lp SQLiteDatabase,
 t d liu (n.


23


 onUpgrade() có 3 tham s truyn vào lng thuc lp
SQLiteDatabase, s ch phiên b ch phiên bn mi c d lic dùng
 cp nh d liu.
 getReadableDatabase() tr v m
m m d liu (ch c, không ghi).
 getWriteableDatabase() tr v m
m m d liu (cho phép ghi).
 thc hin vic truy vn, thêm, xóa, sa d liu ta dùng lp SQLiteDatabase. Mt
s ng dùng ca lp này :
 Hàm query() có 7 tham s lt và kt qu tr v ng Cursor.
Ta cn dùng mt s  t trên dòng d limo dch chuyn
n dòng cun dòng tip theo
dòng hin tc dòng hin ti, getCount() ly s ng
dòng. 

7 :
- String table: tên ca bng s c thc hin truy vn.
- String[] columns: danh sách các ct cn ly. N ly tt c
các ct.
- String u kin lc. N ly tt c.
- String[] selectionArgs : danh sách các giá tr  thay th 
trong tham s selection.
- u kinh d 
GROUP BY trong SQL.
- iu kin lnh dng
  HAVING trong SQL.
- String orderBy: sp xnh d  ORDER
BY trong SQL.
 Hàm insert() có 3 tham s và giá tr tr v là mã ca dòng mi nht
c chèn, nu tht bi tr v -1.

- String table: bng cn chèn d liu.
-  t 
cho phép thêm mt hàng trng vào mà không bit ít nht tên ca mt ct. Nu tham s


24

values là rng s ng hp này, ta có th gii quyt
bng cách truyn tên mt c.
- ContentValue values: giá tr  dng c.
 Hàm update() có 4 tham s và giá tr tr v là s c cp nht
- String table: bng cn cp nht.
- ContentValues values: (column_name, value).
- u kip nht, null s cp nht tt
c các dòng.
- String[] whereArgs: các tham s trong whereClause.
 Hàm delete() có 3 tham s và giá tr tr v là s c xóa.
- String table: bng cn xóa.
- String whereClause: null nu xóa tt c các dòng.
- String[] whereArgs: các tham s cho whereClause.
3.2. Ví dụ minh họa
3.2.1. Đặt vấn đề
Ta s xây dng mt ví d minh ha các thao tác truy vn, thêm, xóa, sa vi SQLite.
Giao di :

Hình 3.1 - Giao din ng dng minh ha SQLite

×