Ờ Ả Ơ L I C M  N

ả ơ ệ ệ ủ Em xin chân thành c m  n ban ch  nhi m khoa Công ngh  thông tin,

ầ ạ ấ ộ ỡ ề   các th y cô giáo, gia đình và b n bè đã đ ng viên giúp đ  em r t nhi u

ề ố ệ ặ ệ ỏ trong quá trình làm chuyên đ  t t nghi p  này. Đ c bi t em xin bày t lòng

ắ ớ ầ ướ ươ ẫ ả ơ c m  n sâu s c t i th y giáo h ề ự ậ   ng d n T.S D ng Thăng Long v  s  t n

ướ ừ ữ ưở ề ầ ậ tình, t n tâm h ẫ ng d n em t nh ng ý t ng đ u tiên cho đ n lúc hoàn

ề ố thành bài chuyên đ  t ệ ủ t nghi p c a mình.

ỏ ữ Em xin bày t lòng bi ế ơ ớ t  n t i gia đình thân yêu, nh ng ng ườ ạ   i b n

ưở ộ ỡ ờ thân đã luôn tin t ng, quan tâm, đ ng viên, giúp đ  em trong th i gian qua.

ấ ậ ượ ự ữ ờ Em r t mong nh n đ ổ c s  đánh giá, b  sung và nh ng l ỉ ả   i ch  b o

ể ế ụ ứ ự ề ề ầ ơ ủ c a các th y cô đ  em có th  ti p t c nghiên c u kĩ h n v  lĩnh v c này.

ả ơ Em xin chân thành c m  n!

ễ Sinh viên: Nguy n Văn Quy

M C L C

DANH M C VI T T T

Tên vi

ế ắ t t

t

Tên đ y đầ ủ

ế

ST T

ệ ế t Dich ra ti ng vi ế (N u là ti ng anh)

1

iOS

Iphone Opera System

ệ ề ộ

H  đi u h nh trên ề n n di đ ng c a Apple

2

API

Application Programming  Interface

ệ ậ Giao di n l p trình ụ ng d ng

ườ

3

JDT

Java Development Toolkit Môi tr

ể   ng phát tri n Java

ụ ừ ượ 4 AWT Abstract Window Toolkit Công c  tr u t ng

5 JNI Java Native Interface

ệ Giao di n Java nguyên b nả

ả 7 RIM Research In Motion

ấ   Công ty s n su t BlackBerry

8 JVM Java Virtual Machine ả Máy  o Java

9 SDK

ụ ầ ề Software Developement  Kit ể   Công c  phát tri n ph n m m

10 IDE Môi tr ế ế  t k

Integrated Development  Environmen ườ ng thi ấ ợ h p nh t

ươ

Ơ Ở

Ch

ng 1: C  S  LÝ THUY T

ề ả ộ 1.1 N n t ng di đ ng

ị ườ ộ Ngày này, th  tr ng di đ ng đang phát

ư ừ ể ẽ ạ ấ ớ tri n m nh m  ch a t ng th y v i vô

ể ệ vàng   các   nhãn   hi u,   ki u   dáng,   tính

ế ệ ạ ế năng...Đã  bi n chi c  đi n tho i  thành

ộ ế ả ươ m t   thi ị t   b   gi i   trí   đa   ph ệ   ng   ti n

ớ ợ ể ế ế không th  thi u. V i l ỏ ọ   i th  nh  g n,

ượ ườ ử ụ đ ọ c m i ng ọ   i s  d ng đem theo m i

ư ọ ơ ỏ ọ   lúc   m i   n i,   nh ng   cũng   vì   nh   g n

ộ ấ ợ ề ử ố ộ ư ậ ế ả ộ nh  v y cũng là m t b t l ệ   ể ả i v  x  lý và t c đ . Đ  đ m b o m t chi c đi n

ạ ộ ạ ố ầ ả tho i thông minh ho t đ ng t ộ ệ ề t thì nó c n có m t h  đi u hành qu n lý thi ế   t

b .ị

ớ ự ứ ầ ế ị ộ ộ ể Đi kèm v i s  phát tri n ph n c ng trên thi ế   t b  đ ng thì cu c chi n

ệ ề ể ệ ạ ộ ễ   ủ c a các nhà phát tri n các h  đi u hành trên đi n tho i di đ ng cũng di n

ế ứ ố ệ ệ ộ ớ ượ ra h t s c kh c li ề ả t. Hi n nay, các n n t ng di đ ng l n đ c bi ế ế   t đ n

nh  sauư

ề ả ệ ạ ộ ớ ộ ớ   N n t ng di đ ng iOS v i đi n tho i di đ ng thông minh iPhone, v i

ế ế ẹ ả ứ ượ ẹ ắ ờ thi t k  đ p, th i trang, c m  ng m t mà, màn hình đ p và s c nét cùng

ủ ở ớ v i tài năng c a "thánh" ế Steve Jobs  đã khi n cho iPhone tr ệ    thành hi n

ượ ị ườ ọ ệ ở ỹ ủ ố t ng trên m i th  tr ặ ng, đ c bi t là M . Doanh s  bán ra c a iPhone

ị ườ ầ ầ ầ ố ủ ề tăng d n qua các năm, và d n d n th ng lĩnh th  tr ng c a nhi u n ướ   c.

ư ứ ủ ả ỗ ộ ớ ỉ ỏ   iPhone dù m i năm ch  ra m t phiên b n m i nh ng s c nóng đ  lan t a

ư ắ ẫ ộ ờ kh p làng di đ ng, do đó, iOS v n ch a bao gi "già".

ệ ề ạ ộ iOS là h  đi u hành "đóng" ho t đ ng trên iPhone, iPad, iPod. iOS đã

ố ớ ự ế ị ủ ề ệ ấ ớ quy t đ nh r t nhi u đ i v i s  thành công c a Apple, v i giao di n bóng

4

ố ể ự ễ ử ụ ẹ ắ ạ ỉ ấ ả ẩ b y, đ p m t, và d  s  d ng. T t c  ch  là ch m và vu t đ  th c thi.

ậ ớ ợ ế ứ ể Cùng v i chính sách h p lý đ  thu hút các l p trình viên vi ụ   t  ng d ng,

ứ ụ ế ớ ườ kho  ng d ng Appstore ngày càng l n khi n cho ng i dùng càng thêm

ủ ừ ầ ọ ườ ề ể ượ ứ thích thú, m i nhu c u c a t ng ng i đ u có th  đ c đáp  ng. Cũng

ư ệ ậ ậ ỗ ụ nh  vi c Apple cũng tung ra c p nh t, vá các l ệ   i liên t c khi phát hi n,

ế ở ơ ơ khi n cho iOS ngày càng tr  nên "thông minh" h n, an toàn h n.

ư ư ế ề ọ ố ị ể   Nh ng n u g i iOS là th ng tr  năm 2012 thì đi u đó cũng là ch a th .

ỉ ượ ớ ạ ế ị ủ ữ ồ Vì iOS ch  đ c cài gi i h n trên thi t b  c a Apple g m nh ng thi ế ị  t b

ủ ư ầ ị ế ị ế ớ nh  iPhone, iPad, iPod... Th  ph n c a thi t b  Apple trên th  gi i nói

ố ệ ỉ ố ạ ấ ớ ố chung là không l n, s  li u các b n th y trên các báo đa s  ch  th ng kê

ạ ị ườ ư ả ọ ố ố ỹ ị t ị i M , nh ng đã g i là th ng tr  thì ph i là th ng tr  trên th  tr ng di

ế ớ ộ đ ng toàn th  gi i.

1.1.1 Android

ữ ẻ ặ ộ ướ ế ư M c dù sinh sau đ  mu n, nh ng Android đang có nh ng b ầ   c ti n th n

ạ ượ ắ ờ ọ ệ ề ề ề ế ố t c, trong th i gian ng n đã đ t đ c nhi u đi u khi n m i h  đi u hành

ơ ướ ộ ệ ả ạ ượ ạ di đ ng m c: kho ng 700.000 đi n tho i Android đ ỗ   c kích ho t m i

ngày.

ướ ạ ủ ứ Khi mà iOS ngày càng bành tr ng mà Symbian l i không đ  s c đ ể

ệ ậ ả ấ ạ ế   ạ c nh tranh. Các l p trình viên, các nhà s n xu t đi n tho i chú ý đ n

ệ ề ở ượ ộ ự Android. H  đi u hành di đ ng m  đ ề   ể c Google phát tri n d a trên n n

ả t ng Linux.

ề ố ượ ạ ớ ấ ượ Android  ngày càng l n m nh v  s  l ng và ch t l ở ự ng b i s  linh

ạ ừ ề ả ấ ẫ ầ ợ ho t t ớ ả  n n t ng Google, phù h p v i c  smartphone t m th p l n giá

ử ụ ệ ạ ả ấ ạ ộ cao. Hàng lo t các nhà s n xu t đi n tho i di đ ng s  d ng Android làm

ủ ư ả ẩ ệ ề h  đi u hành chính cho các s n ph m c a mình. Nh  HTC, Samsung, LG,

ừ ệ ủ ế ạ ả Motorola, Sony Ericsson... T  đi n tho i, cho đ n máy tính b ng c a các

5

ệ ề ề ậ ế ứ hãng này đ u dùng h  đi u hành Android. Các nhà l p trình vi ụ   t  ng d ng

ứ ụ ề ạ ự   ngày càng nhi u trên Android Market. Kho  ng d ng đang c nh tranh tr c

ủ ề ế ế ớ ti p v i AppStore c a Apple. Chính vì đi u này mà đã khi n Android ngày

ướ ị ườ ế ắ càng bành tr ng trên th  tr ụ ng kh p các châu l c, và đ n năm 2012,

ẽ ố ị ệ ề Android s  là h  đi u hành th ng tr .

ể ấ ư ạ ườ ư ở Nh ng các b n có th  th y, d ng nh  Android đang ỉ  trên đ nh cao

ề ế ị ỗ ế ị ấ ủ c a mình. Chính vì có quá nhi u thi t b , m i thi t b  có c u hình riêng,

ề ứ ụ ư ế ả ấ ệ nhà s n xu t tùy bi n riêng và vi c có quá nhi u  ng d ng, nh ng l ạ   i

ẩ ụ ể ế ộ ị ả   không theo m t chu n c  th  nào. Khi n Android ngày càng b  phân m nh

ờ ạ và r i r c.

ượ ậ ườ ế ẫ ạ Android đ ậ c c p nh t quá th ng xuyên, d n đ n tình tr ng trên th ị

ườ ồ ạ ề ả ượ tr ng có nhi u phiên b n cùng t n t i, đ ớ   c phát hành song song v i

ế ự ể ầ ạ ả ố ư   nhau. Google đang d n mu n ki m soát và h n ch  s  phân m nh, nh ng

ở ố ờ ế ơ ả ủ ấ ầ ồ đ ng th i cũng làm m t d n tính "m " v n là tri t lý c  b n c a Android.

1.1.2 Windows Phone

ẽ ạ ự ệ ệ ề ợ Sau s  ki n Microsoft h p tác cùng Nokia. Nokia s  ch y h  đi u hành

ủ ớ Windows Phone trên các smartphone c a mình song song v i Symbian và

ớ ợ ế ệ ế ả ấ ạ ầ ị MeeGo. V i l i th  là nhà s n xu t đi n tho i chi m th  ph n cao trên

ệ ề ắ ầ ộ th  gi ế ế ớ Windows Phone b t đ u khi n các h  đi u hành di đ ng khác lo i.

l ng.ắ

ệ ề ố Windows Phone 7  không có gì gi ng Windows Mobile. H  đi u hành

ệ ệ ạ ớ ộ ợ ờ ớ ầ   ớ m i này có m t di n m o hoàn m i, h p th i, v i giao di n Metro đ y

ớ ạ ầ ư ộ ờ ạ ự ỳ ễ ử ụ ặ ố m i l , g n gi ng nh  m t t t p chí, và c c k  d  s  d ng m c dù cách

ệ ấ ộ ứ ử ạ ọ ấ   x  lý m i vi c r t khác. Windows Phone 7 cũng đã t o ra m t s c h p

ứ ụ ệ ớ ố   ẫ d n m i cho làng công ngh . Kho  ng d ng Marketplace tuy có khiêm t n

ữ ư ề ề ấ ượ ể ầ nh ng r t nhi u ph n m m h u ích và đ ở c ki m soát b i Microsoft.

6

1.1.3 Sysbian

ệ ề ộ ượ ệ Symbian, h  đi u hành di đ ng đ c đánh giá là thân thi n, d  s ễ ử

ạ ử ụ ố ớ ệ ấ ạ ụ d ng. Symbian r t m nh đ i v i các dòng đi n tho i s  d ng màn hình

ơ ả ụ ủ ứ ứ c ng, bàn phím T9 c  b n. Và kho  ng d ng c a Symbian trong 10 năm

ứ ụ ứ ữ ả ỏ qua không ph i là ít. Nh ng  ng d ng này đáp  ng không nh  trong công

ờ ố ủ ệ ằ ọ ườ vi c, đ i s ng h ng ngày c a m i ng i.

ổ ấ ư ư ề ệ T  b n ệ   ừ ả Symbian^3, giao di n đã thay đ i r t nhi u. Nh ng ch a rõ r t

ế ắ ả ộ cho l m. Cho đ n b n Symbian Anna, Symbian Belle toàn b  đã khác:

ể ượ ố ơ ạ ỏ ượ ề ệ ơ Bi u t ng trau chu t h n, giao di n m t mà h n, lo i b  nhi u th ứ

ầ ế ọ ự ố ắ ủ ề ộ không c n thi t. M i s  c  g ng c a Symbian khi thu c v  Nokia có v ẻ

ự ế ư ệ ả ộ ủ   ề nh  đang có s  ti n b  rõ r t. Có đi u năm 2012 không ph i là năm c a

ố ố Symbian khi chính Nokia cũng đang xu ng d c.

1.1.4 BlackBerry

ổ ế ế ớ ấ Là dòng máy Smartphone cao c p và n i ti ng trên th  gi i do hãng

ữ ấ ườ Research In Motion cung c p. Ngoài nh ng tính năng thông th ng, đi mể

ệ ủ ể ế ế ấ ặ ư ự ạ t o nên s  khác bi t c a máy BlackBerry là ki u thi t k  r t đ c tr ng;

ố ụ ế ả ơ ổ ị ươ pin   t t   và   h n   c   là   d ch   v   Push   Mail   n i   ti ng   và   th ệ   ng   hi u

ượ ự BlackBerry đ ấ c xây d ng r t thành công.

ượ ố ạ ự ệ BlackBery OS 6 đ c RIM công b  t i s  ki n Wireless Enterprise

ễ ừ ế ạ ư ư ỹ Symposium (di n ra t 27 đ n 29/4 t i M ). RIM ch a đ a ra chi ti ế ề  t v

ấ ượ ạ ả ớ ộ ệ ề h  đi u hành m i, ngoài m t đo n video qu ng cáo khá  n t ng. Theo

ề ả ế ừ ữ ầ ệ nh ng thông tin đ u tiên, nhi u c i ti n t ớ    giao di n, màn hình Home m i,

ớ ự ể ệ ả ị ề   menu pop­up, kh  năng chuy n d ch, trình duy t web m i d a trên n n

ươ ỗ ợ ả t ng WebKit t ng thích HTML5. Ngoài ra, BlackBerry OS 6 h  tr  kh ả

ả ứ ể ể ề ố ơ năng đi u khi n trên màn hình c m  ng đa đi m t t h n.

7

ệ ề 1.2 H  đi u hành Android

ớ ệ 1.2.1 Gi i thi u

ệ ề ệ ệ ả ạ ộ Android là h  đi u hành trên đi n tho i di đ ng (và hi n nay là c  trên

ộ ố ầ ự ể ở m t s  đ u phát HD, HD Player, TV) phát tri n b i Google và d a trên

ướ ượ ể ở ề ả n n t ng Linux. Tr c đây, Android đ ợ   c phát tri n b i công ty liên h p

ượ ạ Android ( sau đó đ c Google mua l i vào năm 2005).

ể ế ứ ữ ự ụ Các nhà phát tri n vi t  ng d ng cho Android d a trên ngôn ng  Java.

ắ ủ ớ ự ự ắ ậ   S  ra m t c a Android vào ngày 5 tháng 11 năm 2007 g n v i s  thành l p

ế ị ầ ồ ồ ủ c a liên minh thi ầ   ở t b  c m tay mã ngu n m , bao g m 78 công ty ph n

ụ ề ễ ầ ẩ ạ ộ ằ ứ c ng, ph n m m và vi n thông nh m m c đính t o nên m t chu n m ở

ệ ạ ộ ươ cho đi n tho i di đ ng trong t ng lai.

ế 1.2.2 Ki n trúc

ệ ề ế Hình 1.. Ki n trúc H  đi u hành Android

8

ầ 1.2.2.1 T ng Aplycation

ộ ố ứ ệ ề ơ ả ụ ẳ ợ H  đi u hành Android tích h p s n m t s   ng d ng c  b n nh ư

ệ ử ả ạ ồ ổ ị email client, SMS, l ch đi n t ệ , b n đ , trình duy t web, s  liên l c và

ộ ố ứ ứ ụ ầ ầ m t s   ng d ng khác. Ngoài ra t ng này cũng chính là t ng ch a các

ứ ượ ữ ể ằ ụ ng d ng đ c phát tri n b ng ngôn ng  Java.

ầ 1.2.2.2 T ng Applycation Famework

ủ ệ ề ộ ề ả ầ ấ ể   T ng này c a h  đi u hành Android cung c p m t n n t ng phát tri n

ứ ể ứ ụ ụ ả ở ạ   ng d ng m  qua đó cho phép nhà phát tri n  ng d ng có kh  năng t o

ứ ụ ạ ể ứ   ra các  ng d ng vô cùng sáng t o và phong phú. Các nhà phát tri n  ng

ấ ủ ử ụ ế ị ụ d ng đ ượ ự c t do s  d ng các tính năng cao c p c a thi ầ ứ   t b  ph n c ng

ụ ướ ề ư ả ạ ị ị ị ị nh : thông tin đ nh v  đ a lý, kh  năng ch y d ch v  d i n n, thi ế ậ   t l p

ủ ứ ồ ồ đ ng h  báo th c, thêm notification vào status bar c a màn hình thi ế   t

b …ị

ườ ụ ượ ử ụ ủ ộ ầ Ng ể ứ i phát tri n  ng d ng đ c phép s  d ng đ y đ  b  API đ ượ   c

ứ ứ ụ ế ụ   ợ ẳ ủ dùng trong các  ng d ng tích h p s n c a Android. Ki n trúc  ng d ng

ượ ế ế ụ ệ ằ ả ủ c a Android đ c thi ơ t k  nh m m c đích đ n gi n hóa vi c tái s ử

ứ ụ ể ấ ụ d ng các component. Qua đó b t kì  ng d ng nào cũng có th  công b ố

ụ ứ ố Ứ   ẻ các tính năng mà nó mu n chia s  cho các  ng d ng khác (VD:  ng

ể ử ụ ụ ứ ố ở   ụ d ng email có mu n các  ng d ng khác có th  s  d ng tính năng g i

ủ ươ ươ ự ầ mail c a nó). Ph ng pháp t ng t cho phép các thành ph n có th ể

ượ ế ở ườ ử ụ đ c thay th  b i ng i s  d ng.

ộ ậ ầ ầ ồ T ng này bao g m m t t p các services và thành ph n sau:

9

1. M t t p phong phú và có th  m  r ng bao g m các đ i t

ể ở ộ ộ ậ ố ượ ồ ng View

ượ ụ ư ự ứ ể ậ đ c dùng đ  xây d ng  ng d ng nh : list, grid, text box, button và th m chí

ụ ứ ể ệ ộ là m t trình duy t web có th  nhúng vào  ng d ng.

ụ ể ấ ữ ệ ừ ứ 2. Content Provider: Cho phép các  ng d ng có th  truy xu t d  li u t

ẽ ữ ệ ủ ụ ứ ặ các  ng d ng khác ho c chia s  d  li u c a chúng.

ấ ấ ả 3. Resource Manager: Cung c p kh  năng truy xu t các tài nguyên non­

ư ả ặ code nh  hình  nh ho c file layout.

4. Notification Manager:  Cung c p kh  năng hi n th  custom alert trên

ể ả ấ ị

thanh status bar.

ờ ủ ộ ứ ụ ả 5. Activity Manager: Giúp qu n lý vòng đ i c a m t  ng d ng.

ầ 1.2.2.3 T ng Library

ể ệ ộ ượ ự ừ c xây d ng t ủ  BSD c a b  th ộ ư System C library: m t th  hi n đ

ệ ố ệ ẩ ượ ể ố ư ề vi n h  th ng C chu n (libc), đ ỉ c đi u ch nh đ  t i  u hóa cho các

ế ị ạ ề thi t b  ch y trên n n Linux.

ộ ư ệ ễ ị ạ   ổ ợ Media libraries: B  th  vi n h  tr  trình di n và ghi các đ nh d ng

ổ ế ả âm than và hình  nh ph  bi n.

ị ộ ể ả Surface manager: Qu n lý hi n th  n i dung 2D và 3D.

ạ ượ ử ụ ệ ộ c s  d ng trong LibWebCore: M t web browser engine hi n đ i đ

ệ ủ ệ ầ trình duy t c a Android l n trong trình duy t nhúng web view đ ượ ử  c s

ứ ụ ụ d ng trong  ng d ng.

ổ ợ ồ ọ SGL: Engine h  tr  đ  h a 2D.

ể ệ ộ ượ ự ự ủ   c xây d ng d a trên các APIs c a 3D libraries:  M t th  hi n  đ

ư ệ ử ụ ữ ằ ố ầ   OpenGL ES 1.0. Nh ng th  vi n này s  d ng các tăng t c 3D b ng ph n

ể ố ư ề ẫ ị ầ ứ c ng l n ph n m m đ  t ể i  u hóa hi n th  3D.

10

FreeType: Bitmap and vector font rendering.

ỏ ọ ạ ộ ẽ SQLite: M t DBMS nh  g n và m nh m .

1.2.2.4 Android Runtime

ợ ẳ ư ệ ệ ề ộ ậ ợ ố H  đi u hành Android tích h p s n m t t p h p các th  vi n c t lõi

ư ệ ủ ứ ế ấ ầ ẵ cung c p h u h t các ch c năng có s n trong các th  vi n lõi c a ngôn

ộ ế ọ ứ ữ ậ ụ ạ ủ ng  l p trình Java. M i  ng d ng c a Android ch y trên m t ti n trình

ể ệ ủ ả ả ớ ộ ủ c a riêng nó cùng v i m t th  hi n c a máy  o Dalvik. Máy  o Dalvik

ự ế ế ả ộ ượ ử ổ ổ th c t ể ủ  là m t bi n th  c a máy  o Java đ c s a đ i, b  sung các công

ệ ặ ủ ế ị ượ ụ ự ớ ư ngh  đ c tr ng c a thi ộ t b  di đ ng. Nó đ c xây d ng v i m c đích

ế ị ể ề ạ ả ộ ộ làm cho các thi ệ   t b  di đ ng có th  ch y nhi u máy  o m t cách hi u

ướ ụ ứ ự ấ ượ ả qu . Tr c khi th c thi, b t kì  ng d ng Android nào cũng đ c convert

ớ ị ự ạ ị ạ   thành file th c thi v i đ nh d ng nén Dalvik Executable (.dex). Đ nh d ng

ượ ế ế ể ớ ế ị ạ ớ này đ c thi ợ t k  đ  phù h p v i các thi ế ề ộ t b  h n ch  v  b  nh  cũng

ử ụ ộ ử ư ố ộ ả nh  t c đ  x  lý. Ngoài ra máy  o Dalvik s  d ng b  nhân Linux đ ể

ư ấ cung c p các tính năng nh  thread, low­level memory management.

1.2.2.5 Linux Ken

ệ ề ượ ự H  đi u hành Android đ ộ c xây d ng trên b  nhân Linux 2.6 cho

ụ ệ ư ữ ố ố ị nh ng   d ch   v   h   th ng   c t   lõi   nh :   security,   memory   management,

ộ process   management,   network   stack,   driver   model.   B   nhân   này   làm

ư ộ ớ ế ố ứ ụ ệ ầ ế ị nhi m v  nh  m t l p trung gian k t n i ph n c ng thi ầ   t b  và ph n

ứ ụ ng d ng.

11

̀ ́ ́ ̀ ợ ̉ ̃ ư Hình 1.2. Mô hinh h p tac gi a may ao Dalvik va Navite code

ươ ự ệ JNI:   Java   Native   Interface   (T ng   t khái   ni m   Application

Programming Interface).

ộ ộ ệ Java Native Interface: là m t b  framework cho phép mã l nh vi ế   t

ể ọ ạ ặ ượ ọ ở ả ằ b ng Java ch y trên máy  o java có th  g i ho c đ ộ   c g i b i m t

ứ ế ằ Ứ ụ ượ ế ụ ng d ng vi t b ng c vi ầ   ộ t cho m t ph n native code ( ng d ng đ

ộ ệ ề ụ ể ụ ể ữ ặ ộ ư ệ   ứ c ng c  th  và trên m t h  đi u hành c  th ) ho c nh ng b  th  vi n

ế ằ ặ vi t b ng C, C++ ho c Assembly.

ử ụ ứ ụ ằ ạ B ng cách s  d ng JNI, Android cho phép các  ng d ng ch y trên

ể ử ụ ữ ả ươ ứ ượ ế ằ máy  o Dalvik có th  s  d ng nh ng ph ng th c đ c vi t b ng các

ữ ấ ư ể ấ ngôn ng  c p th p nh : C, C++, Assembly. Qua đó các nhà phát tri n

ứ ộ ư ệ ự ứ ự ụ ể ế ằ ụ ng d ng có th  xây d ng  ng d ng d a trên các b  th  vi n vi t b ng

ủ ứ ụ ằ ặ ử ố ộ ự C, C++, Assembly nh m tăng t c đ  th c thi c a  ng d ng ho c s

ổ ợ ữ ữ ứ ấ ụ d ng nh ng tính năng m c th p mà ngôn ng  Java không h  tr . Tuy

ườ ộ ứ ắ ự ể ứ ụ ầ ả nhiên ng i phát tri n  ng d ng c n ph i cân nh c s  gia tăng đ  ph c

ộ ư ệ ử ụ ế ị ụ ạ ủ ứ t p c a  ng d ng khi quy t đ nh s  d ng các b  th  vi n này.

ữ ậ 1.3 Ngôn ng  l p trình JAVA

12

ớ ệ 1.3.1 Gi i thi u

ự ệ ộ Java là m t công ngh  xây d ng các

ứ ụ ầ ị ấ ớ   ề ng   d ng   ph n   m m   có   v   trí   r t   l n

ế ỉ ữ ầ ố trong nh ng năm cu i th  k  20, đ u th ế

ượ ệ ả ạ ỉ k  21. Nó đ ấ   c coi là công ngh  mang tính cách m ng và kh  thi nh t

ệ ạ ụ ứ ấ ạ ả ố ề   trong vi c t o ra các  ng d ng có kh  năng ch y th ng nh t trên nhi u

ộ ầ ỉ ầ ị ề ả n n t ng mà ch  c n biên d ch m t l n.

ư ữ ệ ấ ầ ầ ộ L n đ u tiên xu t hi n vào năm 1992 nh  là m t ngôn ng  dùng

ộ ộ ậ ụ ứ ự ể ề   trong n i b  t p đoàn Sun Microsystems đ  xây d ng  ng d ng đi u

ạ ầ ộ ử ể ệ khi n các b  x  lý bên trong máy đi n tho i c m tay, lò vi sóng, các

ữ ụ ộ ỉ thi ế ị ệ ử t b  đi n t dân d ng khác. Không ch  là m t ngôn ng , Java còn là

ộ ề ả ứ ụ ể ể ả m t n n t ng phát tri n và tri n khai  ng d ng trong đó máy  o Java.

ứ ữ ả   Sun, công ty đã phát minh ra ngôn ng  Java, chính th c ban hành b n

ể ễ Java Development Kit 1.0 vào năm 1996 hoàn toàn mi n phí đ  các nhà

ể ả ề ọ ự ứ ụ ể phát tri n có th  t ể   i v , h c Java, xây d ng các  ng d ng Java và tri n

ệ ề ỗ ợ ầ ủ ế   khai chúng trên các h  đi u hành có h  tr  Java. Ban đ u, Java ch  y u

ụ ể ệ ể ứ dùng đ  phát tri n các Applet, các  ng d ng nhúng vào trình duy t, góp

ế ứ ẻ ầ ộ ố ạ ồ ph n làm sinh đ ng các trang web tĩnh v n h t s c t nh t h i đó. Tuy

ớ ự ủ ệ ể ầ ủ   nhiên, cùng v i s  phát tri n c a công ngh  thông tin và nhu c u c a

ủ ầ ấ ộ ị xã h i, Java Applet đã d n m t đi v  trí c a nó và thay vào đó, các công

ồ ủ ộ ướ ể ộ ộ ty, c ng đ ng  ng h  Java đã phát tri n nó theo m t h ng khác.

ư ặ 1.3.2 Đ c tr ng

6.Đ n gi n

ơ ả

13

ữ ườ ế ế ố ộ Nh ng ng i thi ữ ễ ọ   ể t k  mong mu n phát tri n m t ngôn ng  d  h c

ộ ớ ố ườ ậ ạ ỏ ậ và quen thu c v i đa s  ng ặ   i l p trình. Do v y Java lo i b  các đ c

ứ ạ ủ ư ư ỏ ị tr ng ph c t p c a C và C++ nh  thao tác con tr , thao tác đ nh nghĩa

ồ ử ử ụ ch ng   toán   t ệ     (operator   overloading),…   Java   không   s   d ng   l nh

ư ấ “goto” cũng nh  file header (.h). C u trúc “struct” và “union” cũng

ượ ạ ỏ ỏ đ clo i b  kh i Java.

7.H ng đ i t

ố ượ ướ ng

ượ ế ế ướ ố ượ Java đ c thi t k  xoay quanh mô hình h ng đ i t ậ   ng. Vì v y

ữ ệ ể ươ trong Java, tiêu đi m là d  li u và các ph ng pháp thao tác lên d ữ

ệ ươ ả ạ ứ ữ ệ li u đó. D  li u và các ph ng pháp mô t tr ng thái và cách  ng x ử

ộ ố ượ ủ c a m t đ i t ng trong Java.

8.Đ c l p ph n c ng và h  đi u hành

ầ ứ ệ ề ộ ậ

ả ộ ươ ượ ư ộ Đây là kh  năng m t ch ng trình đ c vi ế ạ t t i m t máy nh ng có

ể ạ ượ ấ ỳ ượ ể ệ ở ứ ồ th  ch y đ c b t k  đâu. Chúng đ c th  hi n m c mã ngu nvà

ứ ị m c nh  phân.

ộ ậ ở ứ ộ ị ươ ị Tính đ c l p m c nh  phân, m t ch ng trình đã biên d ch có

ầ ứ ể ạ ệ ề ề ề ầ   th  ch y trên nhi u n n (ph n c ng, h  đi u hành) khác mà không c n

ạ ậ ầ ề ả ồ ị d ch l ạ   ầ i mã ngu n. Tuy v y c n có ph n m m máy  o Java (JVM) ho t

ư ộ ị ạ ự ộ đ ng nh  m t trình thông d ch t i máy th c thi.

ườ ủ ể ượ ầ Môi tr ng phát tri n c a Java đ c chia làm hai ph n: Trình

ư ị ị ị ủ   biên d ch và trình thông d ch. Không nh  C hay C++, trình biên d ch c a

ầ ứ ộ ậ ể ạ ồ ớ Java chuy n mã ngu n thành d ng bytecode đ c l p v i ph n c ng mà

ể ạ ấ ỳ có th  ch y trên b t k  CPU nào.

ư ươ ướ ạ ạ ể ự Nh ng đ  th c thi ch ng trình d i d ng bytecode, t ỗ i m i máy

ủ ả ả ọ ị ầ c n ph i có trình thông d ch c a Java hay còn g i là máy  o Java. Máy

ả ự ệ ể ượ o Java chuy n bytecode thành mã l nh mà CPU th c thi đ c.

14

9.M nh mạ

ẽ ề ể ữ ệ ữ ả ặ ầ Java là ngôn ng  yêu c u ch t ch  v  ki u d  li u.Ph i khai báo

ữ ệ ườ ể ế ươ ể ki u d  li u t ng minh khi vi t ch ng trình. Java ki m tra lúcbiên

ạ ỏ ộ ả ậ ờ ị ị d ch và c  trong th i gian thông d ch vì v y Java lo i b  m t m t s ộ ố

ạ ỗ ậ ử ụ ấ ị ỏ lo il i l p trình nh t đ nh. Java không s  d ng con tr  và các phép toán

ể ỏ ấ ả ế ậ ả ỗ con tr . Java ki m tra t ự   t c  các truy nh p đ n m ng, chu i khi th c

ả ằ ể ả ậ ớ ạ thi đ  đ m b o r ng các truy nh p đó không ra ngoài gi i h n kích

ướ ữ ệ ừ ạ ự ể ể ể ổ th c. Java ki m tra s  chuy n  đ i ki u d  li u t d ng này sang

ự ạ d ng khác lúc th c thi.

ế ẫ ỗ ủ ử ơ ơ ỗ C  ch  b y l ả i c a Java giúp đ n gi n hóa qúa trình x  lý l i và

ỗ ụ ồ h i ph c sau l i.

ậ ả 10. B o m t

ệ ử ụ ắ ự Viruses là nguyên nhân gây ra s  lo l ng trong vi c s  d ng máy

ướ ệ ậ ả tính. Tr c khi có Java, các l p trình viên ph i quét virus các t p tr ướ   c

ả ề ự ườ ệ khi t ệ i v  hay th c hi n chúng. Thông th ng vi c này cũng không

ạ ừ ươ ự ả lo i tr  hoàn toàn virus. Ngoài ra ch ng trình khi th c thi có kh  năng

ủ ế ạ ả ọ tìm ki m và đ c các thông tin nh y c m trên máy c a ng ườ ử ụ   i s  d ng

ườ ử ụ ề ế mà ng i s  d ng không h  hay bi t.

ộ ườ ự ả ươ ấ Java cung c p m t môi tr ng qu n lý th c thi ch ng trình. Nó

ằ ạ ả ậ ộ cho r ng không có m t đo n mã nào là an toàn c . Và vì v y Java

ữ ậ ề ấ ỉ ứ   ầ không ch  là ngôn ng  l p trình thu n tuý mà còn cung c p nhi u m c

ự ươ ể ể đ  ki m soát tính an toàn khi th c thi ch ng trình.

Ở ứ ữ ệ ầ ươ ượ m c đ u tiên, d  li u và các ph ứ ng th c đ c đóng gói bên

ỉ ượ ớ ệ ấ trong l p. Chúng ch  đ ớ   c truy xu t thông qua các giao di n mà l p

ỗ ợ ấ ậ ấ   ỏ cung c p. Java không h  tr  con tr  vì v y không cho phép truy xu t

ớ ự ế ấ ặ ộ b  nh  tr c ti p. Nó cũng ngăn ch n không cho truy xu t thông tin bên

15

ướ ủ ả ằ ấ ỹ ngoài kích th ậ c c a m ng b ng k  thu t tràn và cũng cung c p k ỹ

ậ ọ ư ạ ộ ớ ặ thu t d n rác trong b  nh . Các đ c tr ng này t o cho Java an toàn t ố   i

ơ ộ ả đa và cókh  năng c  đ ng cao.

ể ả ứ ể ả ớ ị Trong l p th  hai, trình biên d ch ki m soát đ  đ m b o mã là an

ắ ủ toàn, và tuân theo các nguyên t c c a Java.

ớ ượ ả ể ả ở ị ứ L p th  ba đ c đ m b o b i trình thông d ch. Chúng ki m tra xem

ả ả ắ ướ bytecode có đ m b o các qui t c an toàn tr ự c khi th c thi.

ứ ư ể ệ ạ ớ ể ệ ớ ộ ớ L p th  t ki m soát vi c n p các l p vào b  nh  đ  giám sát vi c vi

11. Phân tán

ớ ạ ấ ướ ệ ố ạ ạ ph m gi i h n truy xu t tr c khi n p vào h  th ng.

ứ ụ ự ệ ể ể ể Java có th  dùng đ  xây d ng các  ng d ng có th  làm vi c trên

ầ ứ ệ ề ồ ọ ề ệ ượ nhi u ph n c ng, h  đi u hành và giao di n đ  h a. Java đ c thi ế   t

ụ ứ ậ ạ ạ ế ỗ ợ k  h  tr  cho các  ng d ng ch y trên m ng. Vì v y chúng đ ượ ử  c s

ụ ư ể ộ ơ ử ụ   ụ d ng r ng rãi nh  là công c  phát tri n trên Internet, n i s  d ng

12. Đa lu ngồ

ề ả ề nhi u n n t ng khác nhau.

ươ ể ự ồ Ch ng trình Java đa lu ng( Multithreading) đ  th c thi các công

ệ ấ ồ ờ ả ộ ữ ồ vi c đ ng th i. Chúng cũng cung c p gi i pháp đ ng b  gi a các

ỗ ợ ứ ự ặ ồ ụ   lu ng. Đ c tính h  tr  đa này này cho phép xây d ng các  ng d ng

13. Đ ngộ

ệ ạ ả ạ trên m ngch y hi u qu .

ượ ế ế ư ộ ữ ộ ứ ể Java đ c thi ữ   t k  nh  m t ngôn ng  đ ng đ  đáp  ng cho nh ng

ườ ở ươ ứ ấ ề môi tr ng m . Các ch ự   ng trình Java ch a r t nhi u thông tin th c

16

ố ượ ể ằ ậ ạỵ ề thi nh m ki m soát và truy nh p đ i t ng lúc ch . Đi u nàycho

ế ộ ả phép kh  năng liên k t đ ng mã.

ế ạ 1.3.3 Các th  m nh

ượ ọ ữ ậ Ngôn ng  l p trình JAVA  đ c ch n cho Collections framework vì

ộ ố ướ m t s  lý do d i đây:

ữ ậ ướ ố ượ ứ Nó là ngôn ng  l p trình h ng đ i t ấ   ng và các ch c năng cung c p

ể ượ ỉ ạ ở ỹ ở b i Collections framework ch  có th  đ c mang l ậ   i b i các k  thu t

ướ ố ượ h ng đ i t ng.

ở ộ ầ ẩ ậ ươ ủ Nó là thành ph n m  r ng c a chu n ANSI C vì v y các ch ng trình

ế ằ ị ấ ủ vi ẽ t b ng java c a framework này s  không b  m t đi tính năng nào và

ườ ợ ế ủ ớ ng i dùng đ ượ ưở c h ng các l ữ i th  c a ngôn ng  java.V i ngôn ng ữ

ườ ể ự ả ậ ọ ướ ố ượ này, ng i dùng có th  l a ch n c  l p trình h ng đ i t ậ   ng và l p

ủ ụ ầ ế trình th  t c khi c n thi t.

ễ ọ ủ ả ắ ơ ở ọ Nó đ n gi n và d  h c b i cú pháp c a nó khá ng n g n nên nó giúp

ạ ượ ậ ệ ặ ả cho l p trình viên đ t đ ề   ố c hi u qu  mong mu n mà không g p nhi u

khó khăn.

ữ ạ ế ị ể ượ ư ộ ở Nó là m t ngôn ng  m nh b i vì các quy t đ nh có th  đ c đ a ra lúc

ẽ ượ ớ ươ ạ ị biên d ch s  đ c trì hoãn cho t i khi ch ng trình ch y.

ộ ấ ỗ ợ ở ạ ả ộ ộ ơ ố ớ   Nó h  tr  ràng bu c đ ng và m  t o ra m t c u trúc đ n gi n đ i v i

ệ ươ ườ giao di n t ng tác ng i dùng.

ứ ạ ể ể ộ ệ   ụ Nó cho phép phát tri n các công c  phát tri n ph c t p. M t giao di n

ệ ố ệ ệ ế ề ạ ậ cho h  th ng run time t o đi u ki n cho vi c ti p c n các thông tin lúc

ứ ụ ệ ế ằ run time giúp cho vi c monitor  ng d ng vi t b ng JAVA.

ệ 1.3.4 Mô hình làm vi c Xcode

17

ề ễ ầ ượ ể ử ụ ể Eclipse là ph n m m mi n phí, đ c các nhà phát tri n s  d ng đ  xây

ữ ứ ử ụ ụ ự ể ể ợ   d ng nh ng  ng d ng J2EE, s  d ng Eclipse nhà phát tri n có th  tích h p

ụ ỗ ợ ể ề ượ ộ ộ ỉ ớ v i nhi u công c  h  tr  khác đ  có đ ụ c m t b  công c  hòan ch nh mà

ề ế ầ ồ không c n dùng đ n ph n ầ m m riêng nào khác. Eclipse SDK bao g m 3

ầ ph n chính:

Platform,   Java   Development   Toolkit(JDT),   Plug­in   Development

Environment(PDE)

ớ ượ ư ộ ườ ỗ ợ ể V i JDT, Eclipse đ c xem nh  là m t môi tr ng h  tr  phát tri n Java

ỗ ợ ệ ở ộ ẽ ạ ợ m nh m . PDE h  tr vi c m  r ng Eclipse, tích h p các Plug­in vào

Eclipse Platform.

ề ả ụ ủ ề ầ ộ Eclipse Platform là n n t ng c a toàn b  ph n m m Eclipse, m c đích

ụ ầ ữ ấ ị ế ữ ệ ợ ủ c a nó là cung c p nh ng d ch v  c n thi t cho vi c tích h p nh ng b ộ

ụ ế ể ầ ướ ạ ả công c  phát tri n ph n m m khách d i d ng Plug­in, b n thân JDT

ể ượ ư ư ộ ộ cũng có th  đ c coi nh  là m t Plug­in làm cho Eclipse nh  là m t Java

IDE (Integrated Development Enviroment).

ủ ầ Các thành ph n chính c a Eclipse:

(cid:0) The Platform runtime: Công vi c chính c a Platform runtime là phát

ủ ệ

ủ ỗ ư ụ xem plug­in nào đang có trong th  m c plug­in c aEclipse.M i Plug­in

ậ ệ ế ố ữ ầ ề đ u có 1 t p tin Manifest li t kê nh ng k t n i mà plug­in c n.Pug­in

ỉ ượ ả ự ự ầ ỗ ế ể ả ượ ch  đ c t ivào Eclipse m i khi th c s  c n thi t đ  gi m l ng tài

ở ạ ầ ờ nguyên yêu c u và th i gian kh i t o..

(cid:0) The workspace: Workspace ch u trách nhi m qu n lý tài nguyên ng

ệ ả ị ườ   i

dùng đ ượ ồ ứ ướ ạ  ch c d i d ng Project. c t

ư ụ ư ụ ộ ỗ M i Project là m t th  m c con trong th  m c Workspace.

18

­ Workspace b o qu n c p th p l ch s  nh ng s  thay  đ i tài

ấ ị ự ử ữ ả ả ấ ổ

ấ ườ nguyên, tránh th t thoát tài nguyên ng i dùng.

­ Workspace đ ng th i ch u trách nhi m thông báo nh ng công c

ữ ệ ồ ờ ị ụ

ế ệ ầ c n thi t cho vi c thay đôit tà nguyên.

(cid:0) The Workbench: Jface. Eclipse không hoàn toan b t bu c ph i s  d ng ả ử ụ

ắ ộ

ể ử ụ ể ậ ạ ẫ ệ SWT hay Jface đ  l p trình giao di n, b n v n có th  s  d ng AWT

ủ ệ ặ hay SWING c a Java thông qua vi c cài đ t các Plug­ins.

(cid:0) Team supost: Trang b  h  th ng qu n tr  đ  qu n lý d  án c a ng

ị ệ ố ị ể ủ ự ả ả ườ   i

dùng: Concurrent Version System(CVS).

(cid:0) Help: Cung c p h  th ng tài li u m  r ng, có th  là đ nh d ng HTML

ệ ố ở ộ ệ ể ấ ạ ị

hay XML.

19

ươ

Ch

ng 2: PHÂN TÍCH BÀI TOÁN

2.1 Gi

ớ ệ ề i thi u đ  tài

2.1.1 Mô t

ả bài toán

ệ ọ ờ ạ ể ế ệ ứ ề ậ   Trong th i đ i công ngh  thông tin vi c h c và ki m tra ki n th c v  lu t

ườ ệ ậ ở ơ ờ ế ữ ế giao thông đ ng tr  nên thu n ti n h n bao gi ệ    h t qua nh ng chi c đi n

ể ạ ệ ậ ạ ầ   tho i thông minh. Qua công ngh  l p trình Android có th  l o ra ph n

ứ ề ậ ỗ ợ ể ế ề ọ ườ m m h c và h  tr  ki m tra ki n th c v  lu t giao thông đ ộ ng b  đem

ạ ự ệ ậ ườ ở ọ l i s  thu n ti n cho ng i dùng ọ ơ  m i lúc m i n i

ứ 2.1.2 Các ch c năng

ậ ườ ­ Lu t giao thông đ ộ ng b

(cid:0) ả ạ ậ Văn b ng quy ph m pháp lu t,

(cid:0) ứ ử ạ Các m c x  ph t xe moto

ể ­ Các bi n báo giao thông

ệ ạ ­ Luy n thi sát h ch

ạ ử ­ Thi th  sát h ch

ể ố ứ ỉ ­ Tra c u bi n s  các t nh

ơ ở ữ ệ 2.2   C  s  d  li u

ử ạ ứ ­ “fine” : ch a thông tin x  ph t xe moto

ề ậ ứ ườ ộ ­ “lawdocument” : Ch a thông tin v  lu t giao thông đ ng b

ể ố ủ ứ ề ỉ ­ “licenseplates”: ch a thông tin v  các bi n s  xe c a các t nh

ể ố ứ ạ ­ “trafficsigns”: ch a thông tin các lo i bi n s  xe

20

CSDL SQLite

ở ạ Kh i t o csdl:

ế ừ ế ươ ng

ạ ứ ớ T o 1 l p CreateDatabase k  th a SQLiteOpenHelper có các bi n và ph th c sau:

1.

private static final String DATABASE_NAME = "mydb.db";

ẽ ạ ủ (Tên c a csdl s  t o là mydb)

2.

private static final int SCHEMA_VERSION = 2; ả ủ (Phiên b n c a sqlite)

3.

ươ ở ự ủ ớ ứ Ph ng th c kh i d ng c a l p là

public CreateDatabase(Context context){     super(context, DATABASE_NAME, null, SCHEMA_VERSION); }

ẽ ự ộ ạ ạ đ ng ch y và t o csdl

ọ ế ớ ư ặ ế ạ (Khi g i đ n l p CreateDatabase thì h m này s  t ẽ ở ế n u ch a có ho c n u đã có csdl này thì nó s  m  csdl nó lên)

4.

ươ ứ Ghi đè ph ủ ớ ng th c onCreate c a l p CreateDatabase:

@Override public void onCreate(SQLiteDatabase db) {     db.execSQL("CREATE TABLE lawdocument (provision TEXT,content  TEXT,chapter TEXT);");     db.execSQL("CREATE TABLE fine (_id INTEGER PRIMARY KEY  AUTOINCREMENT,sentence TEXT, price TEXT);");

21

ạ ẽ ượ ự ộ c t

ở ự ẽ ạ ượ ạ

ề ử ạ ỉ ứ ả ả

ề ể ứ ả db.execSQL("CREATE TABLE licenseplates (cityname  TEXT,licensepalte INTERGER);");     db.execSQL("CREATE TABLE trafficsigns (signname TEXT,signtype  TEXT,signconten TEXT);"); } ọ ế ớ Khi g i đ n l p CreateDatabase thì hàm này cũng s  đ  đ ng ch y sau  ả   ả c ch y. Hàm này s  t o các b ng lawdocument (b ng khi hàm Kh i d ng đ ứ ữ ệ ả ả ậ ả các văn b n pháp lu t), b ng fine (b ng này ch a d  li u v  x  ph t xe  ả   ể máy), b ng licenseplates (b ng ch a các thông tin bi n xe theo các t nh), b ng trafficsigns (b ng ch a các thông tin v  bi n báo giao thông).

5.

Hàm getAll

ể ầ

ả ề ố ấ ữ ệ ủ ả ị ủ ả ẽ ả ề ọ ộ

ừ public Cursor getAll(String tableName){     return (getReadableDatabase().rawQuery("SELECT * FROM  "+tableName,null)); } Hàm ki u tr  v  là Cursor có đ u vào là String tableName là tên c a b ng  mu n l y d  li u. Khi g i hàm này thì s  tr  v  toàn b  giá tr  c a b ng  tableName t trong csdl.

6.

Hàm getByID

ả ề ể

ầ ả ề ị ủ ả ị

ủ ầ public Cursor getById(String tableName,String id){     String [] args = {id};     return (getReadableDatabase().rawQuery("SELECT * FROM "+  tableName + " WHERE _id=?",args)); } Hàm có ki u tr  v  là Cursor và đ u vào là String tableName, String id (tên  ả b ng và id c a giá tr ). Hàm này tr  v  giá tr  c a b ng có tên tableName và  có id =  id đ u vào .

7.

Hàm insert

22

ế

ầ ả ệ

ẽ ả ộ ị public void insert(String tableName, ContentValues contentValues){     getWritableDatabase().insert(tableName,null,contentValues); } Hàm này có 2 bi n đ u vào là String tableName và ContentValues  ự ố ư ị contenValues (tên b ng và giá tr  mu n l u vào csdl). Sau khi th c hi n hàm  này, ta s  thêm vào csdl m t giá tr  contentValues vào b ng có tên tableName.

8.

Hàm deleteAllData

ữ ệ ố

ả ộ ữ ệ ủ ả ầ ượ ọ ẽ c g i s  xóa toàn b  d  li u c a b ng có tên tableName trong

public void deleteAllData(String tableName){     getWritableDatabase().execSQL("DELETE FROM " + tableName); } Hàm này có đ u vào là String tableName (tên b ng mu n xóa d  li u). Hàm  này khi đ csdl.

9.

ả ữ ệ Cách ghi d  li u vào b ng:

ướ ố ượ ở ạ c tiên ta ph i t o đ i t

ả ạ ủ ớ ế i,

ẽ ở CreateDatabase createDatabase = new CreateDatabase(context); ể ng ki u CreateDatabase, sau khi kh i t o thì  Tr ư ồ ạ ạ ở ự hàm kh i d ng c a l p CreateDatabase s  ch y và t o csdl n u ch a t n t ồ ạ ế n u đã t n t ẽ ạ i hàm này s  m  csdl “mydb” lên.

createDatabase.deleteAllData("fine");

ẽ ồ ạ ể ả i trong b ng “fine” đ  tránh ghi

ộ ữ ệ ả ề ầ ữ ệ Hàm này s  xóa toàn b  d  li u đã t n t nhi u l n d  li u vào b ng.

ContentValues cv = new ContentValues();

ẽ ế ế ộ

ữ ệ ụ   ể ở ạ Hàm này s  kh i t o m t bi n “cv” ki u ContenValues , bi n này có tác d ng gán d  li u vào và thêm vào csdl.

try {

23

ườ ườ ề ồ i đi u khi n, ng

ả ể ộ ặ ộ

ể ể ộ ); ng b : " ồ ế ị ườ  100.000 đ ng đ n 200.000

);

cv.put("sentence","1.\tNg i ng i trên xe không  ả đ i mũ b o hi m ho c đ i mũ b o hi m không cài quai đúng quy  cách khi tham gia giao thông trên đ ạ ề ừ cv.put("price", ">>b  ph t ti n t đ ng."ồ createDatabase.insert("fine", cv);

ữ ệ ố ệ ế

ẽ ự ả ệ ộ ộ catch (Exception e){     e.printStackTrace(); } finally {     createDatabase.close(); } ệ Kh i l nh này s  th c hi n công vi c gán d  li u vào bi n cv qua hàm  ữ ệ put(tên c t trong b ng , n i dung d  li u);

ữ ệ ẽ ọ bi n

ừ ế ng insert t ả ố ữ

ươ c kh i t o bên trên v i đ u vào là tên b ng mu n thêm d ượ ữ ệ ệ Sau khi gán d  li u vào bi n “cv” ta s  g i ph ớ ầ ượ createDatabase đ ế li u và bi n cv đã đ ế ở ạ c gán d  li u.

ấ ặ ệ ẽ c

ế ữ ệ ố ệ

ố ệ ẽ ỏ ẽ ử ế

ệ ữ ệ ố ệ ố ệ ẽ ử ả ỗ

ố ệ ự ố   i. Trong kh i l nh finally s  x  lý cho dù kh i i

ượ ế ạ ớ ộ i phóng dung l

ả ượ ệ Vi c thêm d  li u vào csdl trong android r t ch t ch  nên vi c đó ph i đ ầ ệ ặ đ t trong kh i l nh try­catch. N u thêm thành công thì s  b  qua ph n l nh  ệ ự th c hi n trong kh i l nh catch. Trong kh i l nh catch s  x  lý n u vi c  thêm d  li u vào csdl x y ra l ẽ ả ệ ệ l nh try hay kh i l nh catch có th c hi n hay không. Trong hàm này s  gi ị ể ả phóng bi n createDatabase đã t o đ  gi ng b  nh  đã b   chi m.ế

10.

ươ ứ ệ ệ ữ

ư ướ ướ ệ Các l p SetDataFineMoto, SetImageData, SetLawProvisionData,  SetLicensePlatesData có ph ả li u vào các b ng trong csdl qua các b ự ng th c kh i d ng th c hi n công vi c thêm d c 9. ở ự c nh  b

ể ủ ớ ỉ ầ ạ ệ ượ ọ ế ế

ộ c g i đ n, ta ch  c n t o m t bi n có ki u c a l p trên  ẽ ượ Khi các giao di n đ ủ ả thì csdl c a b ng đó s  đ c thêm vào.

SetDataFineMoto setDataFineMoto = new SetDataFineMoto(this); SetLicensePlatesData licensePlatesData = new SetLicensePlatesData(this);

24

ươ

Ch

ng 3  NG D NG

3.1     Ngu n d  li u

ồ ữ ệ

http://vanban.chinhphu.vn/

3.2     Giao di nệ

http://www.luatgiaothongduongbo.net/

ệ ủ ứ ụ Hình 3.1 Giao di n c a  ng d ng

25

ệ ậ ấ ậ ạ Hình 3.2 giao di n quy ph m pháp lu t khi  n vào lu t giao thông

ườ ộ đ ng b

26

ứ ử ạ Hình 3.3 các m c x  ph t moto

27

ể ố ứ ệ Hình 3.4 giao di n tra c u bi n s

ế ố ứ ỉ Hình 3.5 tra c u tên t nh theo bi n s  xe

28

TÀI LI U THAM KH O

ậ ế ị ệ ộ ở 1) L p trình thi t b  di đ ng, Khoa CNTT – Vi n ĐH M  Hà

N iộ

2) http://developer.android.com/reference/packages.html

3) http://android.vn/threads/kho­tai­lieu­giao­trinh­ve­lap­trinh­

android­day­du.16856/

29