chương · web viewandroid liên tục được phát triển, mỗi bản cập nhật từ...

129
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM KHOA CÔNG NGHỆ THÔNG TIN THỰC TẬP TỐT NGHIỆP TÌM HIỂU TỔNG QUAN VỀ PADA, ANDROID ỨNG DỤNG VÀO BÀI TOÁN ỨNG DỤNG WEBSERVICES TRÊN ANDROID, BADA Giảng viên hướng dẫn: Thạc sĩ PHẠM ĐỨC THÀNH Sinh viên thực hiện : NGUYỄN THIỆN KHIÊM 3.08.01.0297 Ngành: Công Nghệ Phần Mềm

Upload: dangduong

Post on 01-May-2018

216 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM

KHOA CÔNG NGHỆ THÔNG TIN

THỰC TẬP TỐT NGHIỆP

TÌM HIỂU TỔNG QUAN VỀ PADA, ANDROID

ỨNG DỤNG VÀO BÀI TOÁN ỨNG DỤNG

WEBSERVICES

TRÊN ANDROID, BADA

Giảng viên hướng dẫn: Thạc sĩ PHẠM ĐỨC THÀNH

Sinh viên thực hiện : NGUYỄN THIỆN KHIÊM 3.08.01.0297

Ngành: Công Nghệ Phần Mềm

Khóa: 2008 – 2011

Page 2: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Tp. Hồ Chí Minh, tháng 7 năm 2011

MỞ ĐẦU

Công ty chuyên nghiên cứu và phân tích thị trường research2guidance mới đây

dự đoán rằng thị trường ứng dụng dành cho điện thoại di động sẽ có mức tăng trưởng

kỷ lục trong vòng 5 năm tới. Cụ thể, tới năm 2013, mức lợi nhuận trên thị trường ứng

dụng này sẽ vào khoảng 15,65 tỉ USD, tăng 807% so với 1,95 tỉ USD năm 2009.

Research2guidance dự đoán thị trường ứng dụng cho điện thoại di động sẽ có tốc

độ tăng trưởng rất nhanh trong vòng một vài năm tới. Lợi nhuận sẽ tăng gấp 8 lần sau 5

năm, từ 1,95 tỉ USD năm 2009 lên 15,65 tỉ USD năm 2013.

Ngoài việc dự đoán mức tăng trưởng về lợi nhuận thì research2guidance cũng dự

đoán về số người dùng smartphone trong 5 năm tới, yếu tố giúp thị trường ứng dụng

cho di động tăng trưởng. Theo đó, số người dùng smartphone sẽ tăng từ 100 triệu người

năm 2009 lên 1 tỉ người năm 2013.

Điện thoại thông minh phát triển mạnh ở Việt Nam đang được đánh giá là thiên

đường để cho các nhà phát triển ứng dụng di động.

Các ứng dụng tìm kiếm tích hợp trên các hệ điều hành chưa có, tìm kiếm địa chỉ

tuyển sinh, tìm điểm kẹt xe vẫn chưa tích hợp được.

LỜI CẢM ƠN

Page 3: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Kính Thưa các thầy cô khoa Công nghệ thông tin và thầy Phạm Đức Thành giáo

viên hướng dẫn và các bạn học cùng khóa.

Vậy là đã thấm thoát đã 3 năm kể từ ngày chúng em gia nhập đại gia đình Cao

Đẳng Công Nghệ Thông Tin.Giờ đây, chúng em đang đứng trước một bước tiến khác

lớn hơn trong ngưỡng cửa cuộc đời mình. Mặc dù vậy, chúng em luôn ý thức rằng,

thành công mà chúng em đạt được như ngày hôm nay không phải chỉ do nỗ lực của

chúng em mà còn là do sự giúp đỡ rất lớn từ nhiều phía xung quanh.

Đầu tiên, chúng em xin gửi lời cám ơn chân thành đến toàn bộ thầy cô Khoa

Công Nghệ Thông Tin.Trong nhiều năm qua, thầy cô là những con trỏ vững vàng và

chính xác trong sự nghiệp đào tạo. Không ngại gian nan, vất vả, các thầy các cô không

ngừng cải tiến giáo trình, cách giảng dạy nhằm đem lại hiệu quả cao nhất trong công

việc đào tạo ra các thế hệ trẻ tài năng, giúp chúng em biết thích ứng với những thay đổi

nhanh chóng của thế giới công nghệ thông tin cũng như xã hội đương thời.

Chúng em xin cám ơn thầy Phạm Đức Thành đã nhận trọng trách vất vả là giáo

viên hướng dẫn cho chúng em trong suốt thời gian qua. Thầy không những là thầy mà

còn là người cha đồng hành, là chỗ dựa vững chắc về mặt kiến thức trong suốt thời gian

làm khoá luận tốt nghiệp. Thành quả của chúng em đạt được qua đề án là nhờ một phần

không nhỏ công sức của thầy. Chúc thầy được nhiều sức khỏe và thành công trên con

đường cao cả mà thầy đã lựa chọn.

Chúng tôi cũng xin gửi lời cám ơn và chia sẻ niềm vui cùng các bạn học khóa

2008. Các bạn là những người lữ khách đồng hành trên cùng chuyến tàu trong 3 năm

học vừa qua. Các bạn là niềm vui, là nguồn động lực mạnh mẽ thúc đẩy chúng tôi vào

mỗi buổi sáng khi thức dậy, vào lúc gặp những bài tập khó khăn hay vào những kỳ thi

vất vả. Hi vọng rằng sau này, cho dù vòng lặp vô tận của cuộc đời có đưa mỗi người

chúng ta đi những con đường hay nơi chốn xa xôi nào đi chăng nữa, thì chúng ta luôn là

một ràng buộc toàn vẹn, mãi mãi liên kết với nhau trong tình bạn chân thành.

Cuối cùng và quan trọng nhất, chúng con xin dành tất cả sự tri ân và biết ơn cho

gia đình yêu quý, nơi sinh ra con người, tài năng và nhiệt huyết của chúng em. Xin cám

ơn những con người đóng góp thầm lặng cho thành quả của chúng em ngày hôm nay.

Page 4: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Xin cảm ơn điểm tựa vững chắc cho chuyến phiêu lưu dài mà em sắp đối diện phía

trước.

Một lần nữa, chúng em xin cám ơn tất cả mọi người, chúc mọi người được dồi

dào sức khỏe.Chúc cho khóa học kết thúc tốt đẹp. Chúng em tin tưởng vào một tương

lai sáng lạng của Công nghệ thông tin Việt Nam. Chúc cho Công nghệ thông tin Việt

Nam mau chóng sánh ngang cùng các cường quốc năm châu trên thế giới.

NHẬN XÉT

CỦA GIÁO VIÊN HƯỚNG DẪN

.............................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

TP.HCM, ngày 3 tháng 7 năm 2010

Sinh viên

Nguyễn Thiện Khiêm

Page 5: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

Page 6: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

NHẬN XÉT

CỦA GIÁO VIÊN PHẢN BIỆN

..............................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

.........................................................................................................................

Page 7: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

MỤC LỤC

CH NG 1: TÌM HI U H ĐI U HÀNH BADAƯƠ Ể Ệ Ề .....................................................4

1.1 Khái Quát Hệ Điều Hành Bada............................................................................................4

1.2 Mô Hình Kiến Trúc............................................................................................................. 7

1.3 Không Gian Tên................................................................................................................. 9

1.3.1 Osp::Base.......................................................................................................................9

1.3.2 Osp::Io..........................................................................................................................10

1.3.3 Database : SQLite.........................................................................................................11

1.3.4 Osp::Test và Osp::Locales.............................................................................................12

1.3.5 Osp::System.................................................................................................................12

1.3.6 Osp::App.......................................................................................................................12

1.3.7 Osp::Net :.....................................................................................................................12

1.3.8 Osp::Telephony............................................................................................................13

1.3.9 Osp::Sercurity...............................................................................................................13

1.3.10 Osp::Graphics...............................................................................................................13

1.3.11 Osp::UI:........................................................................................................................13

1.3.12 Osp::Uix........................................................................................................................13

1.3.13 Osp:Web :.....................................................................................................................13

1.3.14 Osp::Social :..................................................................................................................13

1.3.15 Osp::Content :..............................................................................................................14

1.3.16 Osp::Locations :............................................................................................................14

1.3.17 Osp::Messaging :..........................................................................................................14

1.3.18 Osp::Commerce :..........................................................................................................14

1.4 Môi trường phát triển.....................................................................................................14

1.4.1 Vòng đời của ứng dụng................................................................................................15

1.4.2 Sự kiện trên pada.........................................................................................................16

1.5 Các Đặc Điểm Và ConTrols Trong Pada.............................................................................20

1.5.1 Đặc Điểm Giao Diện Trên Pada:....................................................................................20

1.5.2 Một Số Control cơ bản trong pada:..............................................................................24

Page 8: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.6 Webservice deCarta.........................................................................................................34

1.6.1 Giới Thiệu deCarta:......................................................................................................34

1.6.2 Cách Kết Nối.................................................................................................................34

1.6.3 Thư viện hỗ trợ deCarta:..............................................................................................35

1.6.4 Sơ Đồ Class Trong Webservice.....................................................................................37

1.6.5 Location........................................................................................................................39

1.6.6 LocationProvider..........................................................................................................39

1.7 Kỹ Thuật Phân Tích File XML Sử Dụng Xpath....................................................................40

1.7.1 Định Nghĩa:...................................................................................................................40

1.7.2 Xử lý file XML với libxml...............................................................................................40

CH NG2 : T NG QUAN V ANDROID.ƯƠ Ổ Ề .............................................................43

2.1 Giới Thiệu....................................................................................................................... 43

2.2 Các Thành Phần Trong Ứng Dụng Android........................................................................43

2.2.1 Activity.........................................................................................................................44

2.2.2 Service:.........................................................................................................................44

2.2.3 Content Provider..........................................................................................................44

2.2.4 Intent:..........................................................................................................................44

2.2.5 Broadcast Receiver.......................................................................................................44

2.2.6 Notification..................................................................................................................44

2.3 Tiến trình của một ứng dụng android...............................................................................44

2.3.1 Foreground process.....................................................................................................45

2.3.2 Visible process..............................................................................................................45

2.3.3 Service process.............................................................................................................45

2.3.4 Background process.....................................................................................................45

2.3.5 Empty process..............................................................................................................45

2.4 Các Thành Phần Trong Giao Diện.....................................................................................47

2.4.1 ViewGroup...................................................................................................................47

2.4.2 LinearLayout.................................................................................................................47

2.4.3 FrameLayout................................................................................................................47

2.4.4 AbsoluteLayout............................................................................................................48

2.4.5 RetaliveLayout..............................................................................................................48

2.4.6 TableLayout..................................................................................................................48

2.4.7 Button..........................................................................................................................49

Page 9: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2.4.8 ImageButton.................................................................................................................49

2.4.9 ImageView...................................................................................................................50

2.4.10 ListView........................................................................................................................50

2.4.11 TextView......................................................................................................................51

2.4.12 EditText........................................................................................................................51

2.4.13 CheckBox......................................................................................................................52

2.4.14 MenuOptions...............................................................................................................52

2.4.15 ContextMenu...............................................................................................................54

2.5 Activity Và Intend............................................................................................................ 55

2.5.1 Activity.........................................................................................................................55

2.5.2 Intent...........................................................................................................................55

2.6 Dịch vụ Google Map........................................................................................................56

2.6.1 Giới thiệu dịch vụ Google Map:....................................................................................56

2.6.2 Giới thiệu về Mapping package:...................................................................................56

2.6.3 MapView và MapActivity:............................................................................................56

2.6.4 Sử dụng Overlay...........................................................................................................57

2.6.5 Package Location..........................................................................................................58

2.6.6 View Trong Map Google...............................................................................................59

2.6.7 Xác định vị trí trên Google Maps:.................................................................................60

2.7 Kỹ Thuật Phân Tích JSON.................................................................................................61

2.7.1 Khái niệm:....................................................................................................................61

2.7.2 Cách thức sử dụng JSON..............................................................................................61

CH NG 3 : GI I THI U BÀI TOÁN VÀ NG D NGƯƠ Ớ Ệ Ứ Ụ .......................................63

3.1 GIỚI THIỆU BÀI TOÁN......................................................................................................63

3.2 PHÁT BIỂU BÀI TOÁN.......................................................................................................63

3.2.1 Khảo sát hiện trạng......................................................................................................63

3.2.2 Yêu cầu hệ thống..........................................................................................................63

3.3 Xác định actor và usercase...............................................................................................63

3.3.1 Danh sách Actor...........................................................................................................63

3.3.2 Sơ đồ usercase.............................................................................................................63

3.3.3 Danh sách usercase......................................................................................................64

Page 10: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

CH NG 4:ƯƠ THI T K CH NG TRÌNHẾ Ế ƯƠ ....................................................71

4.1 THIẾT KẾ DỮ LIỆU............................................................................................................ 71

4.2 THIẾT KẾ KIẾN TRÚC......................................................................................................... 71

4.2.1 Kiến trúc trên Android..................................................................................................71

4.2.2 Kiến trúc trên Bada.......................................................................................................72

4.3 THIẾT KẾ GIAO DIỆN......................................................................................................... 73

4.3.1 Giao diện trên android.................................................................................................73

4.3.2 Giao diện trên bada......................................................................................................77

CH NG 5: T NG K TƯƠ Ổ Ế ............................................................................................ 83

5.1 Về Mặt Lý Thuyết............................................................................................................ 83

5.2 Về Mặt Ứng Dụng............................................................................................................ 83

5.3 Hướng Phát Triển............................................................................................................ 83

TÀI LI U THAM KH OỆ Ả .............................................................................................. 84

Page 11: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

DANH MỤC CÁC HÌNH, BẢNG BIỂU VÀ SƠ ĐỒ

Hình 1: Kiến Trúc Ứng Dụng Trên BaDA..........................................................................................8

Hình 2: Kiến Trúc Ứng Dụng Trên BaDA..........................................................................................9

Hình 3: Các thư mục trong ứng dụng bada........................................................................................14

Hình 4: Vòng đời của ứng dụng trên Bada........................................................................................15

Hình 5: Liên Quan Giữa Vòng Đời Và Sự Kiện................................................................................16

Hình 6: Sự kiện khởi tạo và giải phóng trên bada..............................................................................17

Hình 7: Mô hình giao diện trên bada.................................................................................................20

Hình 8: Client Area của ứng dụng.....................................................................................................21

Hình 9: OptionMenu .........................................................................................................................22

Hình 10: Danh sách các list trong Pada.............................................................................................26

Hình 11: lidableList...........................................................................................................................28

Hình 12: Option Menu.......................................................................................................................30

Hình 13: Tab trong Bada....................................................................................................................32

Hình 14: Biểu đồ vòng đời ứng dụng android...................................................................................46

Hình 15: Cấu trúc một giao diện ứng dụng Android.........................................................................47

Hình 16: Bố trí các widget sử dụng LinearLayout.............................................................................47

Hình 17: Bố trí widget trong FrameLayout.......................................................................................48

Hình 18: Bố trí widget trong RataliveLayout....................................................................................48

Hình 19: Bố trí widget trong TableLayout.........................................................................................49

Hình 20: ImageButton........................................................................................................................50

Hình 21: ImageView và ImageButton...............................................................................................50

Hình 22: Minh họa 1 listview............................................................................................................51

Hình 23: Minh họa OptionMenu........................................................................................................53

Hình 24: ContextMenu.......................................................................................................................55

Hình 25: Truyền dữ liệu giữa 2 Activity............................................................................................56

Hình 26: Đánh dấu vị trí trên bản đồ.................................................................................................58

Hình 27: SatelliteView.......................................................................................................................59

Hình 28: TrafficView.........................................................................................................................59

Hình 29: TrafficView.........................................................................................................................60

Hình 30: Giao diện chính...................................................................................................................72

Hình 31: Giao diện vị trí hiện tại.......................................................................................................73

Hình 32: Giao diện điểm kẹt xe.........................................................................................................74

Hình 33: Giao diện tìm kiếm đường giữa 2 điểm..............................................................................75

Hình 34: Giao diện tìm kiếm 1 vị trí..................................................................................................76

Hình 35: Màn hình chính...................................................................................................................77

Hình 36: Màn hình chức năng chính..................................................................................................78

Hình 37: Màn hình tìm địa điểm tuyển sinh......................................................................................79

Hình 38: Màn hình hiển thị vị trí giữa 2 điểm...................................................................................81

Trang 11

Page 12: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Bảng 1: Bảng truy cập máy chủ dịch vụ............................................................................................35

Bảng 2: Các thư viện hỗ trợ deCarta..................................................................................................37

Sơ đồ 1: Sơ đồ quan hệ giữa các class 1............................................................................................37

Sơ đồ 2: Sơ đồ quan hệ giữa các class 2............................................................................................38

Sơ đồ 3: Sơ đồ quan hệ giữa các class 1............................................................................................38

Sơ đồ 4: Sơ đồ dữ liệu trong class Location.....................................................................................39

Sơ đồ 5: Usecase Admin....................................................................................................................63

Sơ đồ 6: Usecase Người dùng............................................................................................................64

Trang 12

Page 13: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Chương 1: TÌM HIỂU HỆ ĐIỀU HÀNH BADA

1.1 Khái Quát Hệ Điều Hành Bada.

Pada là hệ điều hành điện thoại di động do Samsung phát triển. Thông qua

10 điều dưới đây về Pada, bạn sẽ hình dung được phần nào về HĐH này.

Samsung sản xuất điện thoại sử dụng hầu hết các HĐH di động, từ Window

Mobile, Linux Mobile, Symbian và cả Android. Tuy vậy, hãng vẫn chưa phát

triển một nền tảng di động riêng dành cho mình. Chính tham vọng ''bùng nổ''

trên thị trường smartphone đã thúc đẩy sự ra đời của Pada, HĐH mới toanh

gắn ''mác'' Samsung. Hãng điện tử Hàn Quốc vẫn còn khá kín tiếng về các

thông tin xung quan Pada. Nhưng với sự ra đời của S8500 Wave, thông tin

đã dần được hé mở

- Nền tảng thông minh cho mọi người

Việc Samsung giới thiệu Pada có thể sẽ gây bối rối cho nhiều người, nhưng

thông điệp của nhà sản xuất lại rất đơn giản, họ muốn tất cả mọi người đều

có thể sử dụng điện thoại thông minh chứ không bó hẹp trong số ít người

dùng cao cấp như hiện nay. Điều này được thể hiện rất rõ trong buổi lễ giới

thiệu Pada, Samsung đã chỉ thẳng vào phần nhỏ của thị trường điện thoại và

nói rằng muốn chiếm được nhiều hơn tại thị trường đó. Đó chính là thị

trường điện thoại thông minh, tuy nhỏ nhưng lại rất có lợi nhuận.

Pada của Samsung đã làm dấy lại một tranh cãi từ xưa đến nay của thị trường

di động, đó là định nghĩa về điện thoại thông minh. Samsung cho rằng Pada

của mình là điện thoại thông minh , và do đó bất cứ điện thoại nào có kho

ứng dụng riêng, có phần cứng đủ mạnh và hỗ trợ đa điểm cũng được xếp vào

loại này.

- Cạnh tranh

Trang 13

Page 14: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Một câu hỏi đặt ra: Pada là cái gì? Nó là HĐH hay chỉ là giao diện người

dùng thông thường? Ông Justin Hong, trường nhóm phát triển nền tảng Pada

cho biết đây là một HĐH vì nó cũng được xây dựng trên nền tảng Linux

giống như Android của Google.

Vậy nếu Pada là một hệ điều hành thì nó có tính cạnh tranh với các sản phẩm

khác không? Nhất là khi Android, Symbian, LiMo, Window Mobile đều có

mặt trong các sản phẩm của chính Samsung?

Samsung cho biết họ tạo ra Pada bằng cách lấy giao diện người dùng của các

thiết bị kiển như Jét, rồi bổ sung thêm một số tính năng mới, thêm chợ ứng

dụng, cảm ứng đa điểm là đã tạo ra một hệ điều hành mới rồi.

Tuy vậy, Samsung chưa hề có ý định mang Pada ra để các công ty khác cùng

phát triển mà muốn giữ nó dưới quyền kiểm soát của mình. Ông Justin Hong

cho biết: '' Giá của chiếc Pada rẻ nhất chắc chắn sẽ luôn thấp hơn bất cứ

chiếc Android nào''.

- Ứng dụng

Samsung không cho biết gì nhiều về phần này, tất cả các thông tin chúng ta

có được là các nhà phát triển có thể sử dụng các công cụ và ngôn ngữ: Flash,

C++. Web Run time và Java. Những ứng dụng này sẽ có thể được tích hợp

vào Widget trong giao diện độc quyền TouchWiz của Samsung.

- Thông minh hơn cả điện thoại thông minh?

Khi Jét ra đời, Samsung đã có một câu slogan rất ấn tượng: ''Thông minh hơn

cả smartphone''. Nhiều người cho rằng Jét chính là phiên bản tiền thân của

Pada và nó được xây dựng trên một nền tảng SHP OS của chính Samsung

vốn đã được sử dụng nhiều năm về trước. Họ chỉ đơn giảm thêm vào các bộ

framework và API là đã tạo được Pada. Tuy vậy, Samsung cho biết, tuy giao

diện gần giống S8000 nhưng trải nghiệm về Pada chắc chắn sẽ khác vì họ đã

tối ưu hóa nó.

Trang 14

Page 15: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

- Cảm ứng

Pada là một hệ điều hành được xây dựng cho những thiết bị cảm ứng. Nhưng

không hiểu vì lý do gì mà Samsung lại luôn phủ nhận Pada hỗ trợ đa điểm

trong khi thực sự là nó có. Chắc hẳn bạn cũng đã biết điều này qua các video

review S8500.

Một điều khác cũng phải nhắc đến rằng Samsung tin là họ có thể tại ra những

màn hình cảm ứng điện trở hỗ trợ cảm ứng đa điểm. Pada sẽ sử dụng cả màn

hình điện dung và điện trở cho nên chắc chắn Samsung sẽ sớm phổ biến công

nghệ này.

- Cấu hình

Không hiểu Samsung đặt ra cấu hình tối thiểu cho Pada làm gì khi chỉ mình

hãng sản xuất nó. Hệ điều hành của Samsung yêu cầu phải có chip xử lý

mạnh, có 3G, GPS, các kết nối và khả năng xử lý Flash. Màn hình có thể sử

dụng cảm ứng điện dung hoặc điện trở và Samsung cũng không quy định độ

phân giải hay tỷ lệ màn hình trong các máy Pada.

- Chơi Game

Có thể dễ dàng thấy Samsung tập trung vào khả năng chơi Game thế nào khi

trong buổi giới thiệu Pada, họ không chỉ giới thiệu một phiên bản của trò

chơi kinh dị nổi tiếng Resident Evil mà còn thông báo sẽ hỗ trợ đa điểm

trong Game. Với sự xuất hiện của các đại gia sản xuất Game như Capcom,

EA, Gameloft... thì không ai có thể nghi ngờ về mục đích của Samsung.

- Đa phương tiện

Một số nguồn tin cho biết Pada sẽ có thể trở thành một chiếc điều khiển từ xa

cho tất cả các thiết bị cuả Samsung trong tương lai. Samsung đã từng trình

diễn tại CES năm nay, sử dụng Omnia2 như một chiếc điều khiển từ xa với

TV, hay một tay chơi game, thậm chí là điều khiển... xe hơi. Vậy thì có gì mà

Trang 15

Page 16: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Samsung lại không đưa công nghệ cao cấp này vào đứa ''con cưng'' của

mình?

Nếu đó là sự thật, thì đây sẽ là một tin vui cho những ai đang sở hữu các thiết

bị của Samsung trong nhà. Ít nhất thì điện thoại Pada cũng có thể điều khiển

được TV, laptop hay đầu đĩa Blu-ray. Sẽ tốt hơn nếu Samsung nghĩ kỹ về

việc này và tích hợp một số thứ mang tầm vĩ mô hơn vào hệ thống, kiểu như

điện toán đám mây, để người dùng có thể truy cập file ở bất cứ đâu.

- Flash

Khi mà ứng dụng của Pada chưa lớn thì sự hỗ trợ của Flash có ý nghĩa

rất lớn. Samsung hứa hẹn Flash trên Pada sẽ hoàn toàn tương thích với các

tiêu chuẩn Flash của Adobe. Đồng nghĩa với việc bạn sẽ có sẵn hàng ngàn

Game và phần mềm chỉ ngay khi máy ra đời.

Bên cạnh đó, một trong những ứng dụng đầu tiên có mặt trên chợ

phần mềm của Samsung chính là trình duyệt Skyfire nổi tiếng. Với Skyfire,

chắc chắn người dùng Pada sẽ có thể xem Youtube trực tiếp trên trình duyệt

mà không phải thông qua các ứng dụng bên ngoài.

- Thời điểm bán ra

Chiếc điện thoại Pada đầu tiên của Samsung, S8500 sẽ ra mắt vào nửa

đầu năm nay. S8500 Wave là chiếc điện thoại hết sức ý nghĩa với Samsung

nên chắc chắn nó sẽ không làm bạn thất vọng. Bạn sẽ có trong tay một chiếc

điện thoại đầu tiên trên thế giới có Wi-Fi chuẩn n, bluetooth 3.0 và màn hình

super AMOLED nếu mua sản phẩm này.

- Kết luận

Tổng biên tập của trang Mobile-review của Nga, một trong những

''huyền thoại sống'' của làng công nghệ thế giới. Không phải ngẫu nhiên mà

ông khen S8500 hết lời, đánh giá là chiếc điện thoại xuất sắc về cả phẩn cứng

Trang 16

Page 17: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

và phần mềm, là chiếc điện thoại có tỷ lệ giá/hiệu năng tốt nhất hiện nay trên

thế giới.

Tuy vậy, không phải là không có những ý kiến trái ngược. Chúng ta

hãy cùng chờ đợi sự xuất hiện của Pada để trải nghiệm kỹ hơn về hệ điều

hành này.

Kiến trúc - Không gian tên:

1.2 Mô Hình Kiến Trúc.

Các thành phần cơ bản, kiến trúc:

- Kanel.

- Device.

- Service.

- Framework.

Trang 17

Hình 1.2.1. 1: Mô hình kiến trúc bada.Hình 1.2.1.1Kiến Trúc Ứng Dụng Trên BaDA.Hình 1: Kiến Trúc Ứng Dụng Trên BaDA.

Page 18: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.3 Không Gian Tên.

Các namespace cơ bản của bada:

1.3.1 Osp::Base

Chứa lớp cơ sở của pada.

Chứa các kiểu dữ liệu cơ bản: cấu trúc C++, String, Buffer, DateTime,

TimeSpan, UUID.

Collection: ArrayList, HashMap, LinkedList, Queue, Stack..

Runtime: Timer, Thread, Mutext, Semaphore, Monitor..

Các tiện ích khác như: Mathematical functions, StringTokenizer,

StringUtil…

- Osp::Base::Object.

- Osp::Base::String.

- Osp::Base::Buffer. Có cấu trúc là 1 mảng nhưng chứa vùng đệm

“Buffer” có các thuộc tính sau :

+ Positon : vị trí dữ liệu được đọc/ghi.

+ Limit : thành phần cuối cùng của array.

Trang 18

Hình 1.2.1. 2: các namespace trong bada.Hình 1.2.2.1 Không Gian Tên (Namespace)Hình 2: Kiến Trúc Ứng Dụng Trên BaDA.

Page 19: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

+Remaining : thành phần dữ liệu giữa positon và limit.

+ Mark : đánh dấu tại 1 vị trí của position.

+ Capacity : số lượng tối đa của mẫu tin Buffer.

Một số kiểu dữ liệu Buffer khác như : IntBuffer, FloatBuffer,

LongBuffer, McharBuffer.

- Osp::Base::DateTime & TimeSpan : class xữ lý ngày tháng.

- Osp::Base::UuId.

Một số class khác giống như C++.

- Osp::Base::Collection: bao gồm

Interfaces bao gồm :

- ICollection và IEnumerator:

ICollection : là interface cơ bản của class Collection

gồm .GetCount(),GetEnumeratorN().

IEnumerator : là lớp điều khiển của collections:GetCurrent(),

MoveNext(), Reset().

1.3.2 Osp::Io

Quản lý các dữ liệu, file, thư mục, registry.

- Input và output:

File

Directory

Registry

- Osp::Io::Registry: Là một file dùng để chứa các cài đặt của ứng dụng.

-

-

Trang 19

Page 20: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

-

-

-

-

1.3.3 Database : SQLite

Create :

Insert Rows :

Update và Delete :

Trang 20

Database db;DbStatement* pStmt;DbEnumerator* pEnum;result r = E_SUCCESS;// Opening databaser = db.Construct(L"/Home/sampleDb", true);// Running SQL command to create a tabler = db.ExecuteSql(L"CREATE TABLE IF NOT EXISTSmyTable1( column0 INTEGER PRIMARY KEY,column1 DOUBLE, column2 TEXT )", true);

db.BeginTransaction();// creating a INSERT statementpStmt= db.CreateStatementN(L"INSERT INTO myTable1(column0, column1, column2) VALUES (?, ?, ?)");for (inti=0; i<10; i++){// binding data for each rowpStmt->BindInt(0, i);// integerpStmt->BindDouble(1, i*0.1);// doublepStmt->BindString(2, L”InitialData”);// String

// Reading value at section1->s1key1.// if not exist, making oneRegistry reg;String regName(L"/Home/regTest.ini");String sect1(L"section1");// section nameString key1(L"s1key1");// key nameintiVal;// create a new registry if not existsif( IsFailed(reg.Construct(regName, true))) gotoCATCH;// create a section. If exist, it will do nothingreg.AddSection(sect1);// section1 s1key1 = 999if( IsFailed(reg.AddValue(sect1,key1,999))) gotoCATCH;// Get intvalue from the section1 s1key1reg.GetValue(sect1, key1, iVal);return;CATCH:// do something

Page 21: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Search database

1.3.4 Osp::Test và Osp::Locales

Quản lý các phần như: Encoding, locales,…

1.3.5 Osp::System

Quản lý thông tin hệ thống như: systemtime, systemInfo, RuntimeInfor,

Battery,…

Các điều khiển như: báo rung, báo động…

1.3.6 Osp::App

Điều khiển vòng đời của ứng dụng.

Trang 21

// updating rowsdb.BeginTransaction();db.ExecuteSql(L"UPDATE myTable1SET column2 = „Converted Data‟WHERE column2 = „Initial Data ", true);‟db.CommitTransaction();// deleting a rowdb.BeginTransaction();db.ExecuteSql(L"DELETE FROM myTable1WHERE column0 = 1&", true);

Databasedb;DbStatement* dStmt= null;DbEnumerator* dEnum= null;// Loading DBdb.Construct(String(L"dbFile"), true);// Create statementString stmt(L"SELECT * FROM member WHERE Address = ?");dStmt= db.CreateStatementN(stmt);// Bind query stringdStmt->BindString(0, String(L"Seattle"));// Execute statement and get datadEnum= db.ExecuteStatementN(*dStmt);dEnum->MoveNext();intcolumnCount= dEnum->GetColumnCount();// Get a value from the second columnString name;pEnum->GetStringAt(1, name);

Page 22: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.3.7 Osp::Net :

Hỗ trợ điều khiển các kết nối như: Wi - fe, HTTP, Bluetooth.

Quản lý các kết nối mạng:

1.3.8 Osp::Telephony

Quản lý các hàm như: Call, 3G,Sim…

1.3.9 Osp::Sercurity

Các hàm liên quan đến bảo mật...

1.3.10 Osp::Graphics

Đồ họa 2D : màu sắc, fonts, Bitmap, drawing.

Đồ họa 3D : OpenGL|ES, EGL.

1.3.11 Osp::UI:

Form và Frame.

Control, keypad,…

1.3.12 Osp::Uix

Sử dụng các tính năng nâng cao của điện thoại như :

Cảm biến, thời tiết, độ rung, chuyển động và nhận dạng khuôn mặt.

Osp::Media

Các phương thức liên quan đến đa phương tiện

Recoding, camera, audio I/O.

1.3.13 Osp:Web :

Các phương thức điều khiển như:

Webcontrol, download, Javascript.

Namespace truy xuất liên quan đến các dịch vụ của pada:

Trang 22

Page 23: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.3.14 Osp::Social :

Quản lý thông tin của người dùng đang tương tác đến dịch vụ : Contract,

event, to – do, log.

Quản lý dịch vụ / các giao tiếp trong nền tảng đám mây: các thông tin tài

khoản người dùng, bạn bè, kết nối SNS gateway.

1.3.15 Osp::Content :

Quản lý nội dung và tính năng tìm kiếm trên điện thoại và đám mây.

1.3.16 Osp::Locations :

Quản lý các thông tin cơ bản về định vị vị trí của người dùng như : Map UI,

vị trí địa lý, các dịch vụ định vị.

1.3.17 Osp::Messaging :

Các thông tin về Messaging.

1.3.18 Osp::Commerce :

Các ứng dụng thương mại trên AppStore.

Trang 23

Page 24: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.4 Môi trường phát triển.

Hình 1: Các thư mục trong ứng dụng bada.

Mô Tả :

/Includes : chức các thư viện trong pada.

/inc, /src : là implement và header của ứng ụng.

/Home :

Thư mục chứa dữ liệu ứng dụng của bạn.

Là folder sẽ được copy sang điện thoại của bạn/ Simulator.

Có thể đọc/ghi ứng dụng.

/Icons : chứa các icons của ứng ụng.

/Res : chứa các file thiết kế giao diện, hình ảnh trong ứng dụng.

Trang 24

Page 25: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Mô hình ứng dụng trên Pada.

Hình 2: Vòng đời của ứng dụng trên Bada.

1.4.1 Vòng đời của ứng dụng

Launch :

+ OnAppInitialization.

+ OnForeground.

Running :

+ OnBackground.

+ OnForeground.

Trang 25

Page 26: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 3: Liên Quan Giữa Vòng Đời Và Sự Kiện

Terminated :

+ OnAppTerminating.

1.4.2 Sự kiện trên pada

void Test::OnLowMemory(): giải phóng tài nguyên không cần thiết.

void Test::OnBatteryLevelChanged(BatteryLevellevel): dừng camera, lặp lại

mp3, …

void Test::OnScreenOff() : giải phóng tài nguyên (3D, cảm biến) đưa vào chế

độ ngủ để tiết kiệm pin.

void Test::OnScreenOn() : lấy lại các tài nguyên đã dừng và tiếp tục sử dụng

nếu bị giải phóng bới OnScreenOff.

Chu trình sống của form và các controls khác :

OnInitializing : được gọi để thêm một forms vào frame.

OnTerminatingwhen : gọi khi cần xóa forms.

Trang 26

Page 27: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Một số sự kiện khác khi người dùng tác động vào forms:

Hình 4: Sự kiện khởi tạo và giải phóng trên bada.

Chúng ta có đoạn mô tả sau :

- Form Initialization :

result TestForm::OnInitializing(void)

{

result r = E_SUCCESS;

// Find the button from loaded UI file

__pButtonOk= static_cast<Button *>

(GetControl(L"IDC_BUTTON_OK"));

// If success to find, set action

if (__pButtonOk!= null)

{

__pButtonOk->SetActionId(ID_BUTTON_OK);

__pButtonOk->AddActionEventListener(*this);

}

Trang 27

Page 28: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

return r;

}

- Event Listener :

// As this class is set to be a listener of the button,

// a function “OnActionPerformed” must be implemented

void TestForm::OnActionPerformed(

const Osp::Ui::Control& source, intactionId)

{

switch(actionId)

{

// If this function is called by the button

// as we set in the previous slide

case ID_BUTTON_OK:

// print some here. See Output window of IDE

AppLog("OK Button is clicked! \n");

break;

default:

break;}}

-

OnTerminating : giải phóng bộ nhớ khỏi forms

// At termination time,

Trang 28

Page 29: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

// Nothing specific to do

result TestForm::OnTerminating(void)

{

result r = E_SUCCESS;

return r;

}

1.5 Các Đặc Điểm Và ConTrols Trong Pada

1.5.1 Đặc Điểm Giao Diện Trên Pada:

Hình 5: Mô hình giao diện trên bada.

- Frame: chạy phía trên mỗi cửa sổ, mỗi ứng dụng chỉ có 1 Frame.

- Form: quản lý tất cả các controls như : Titlebar, OptionMenu,

SoftKeys & Tab

- Controls : chứa các cấu trúc bên trong của controls.

- Một số phương thức quan trọng để lấy thông tin của ứng dụng :

Trang 29

Page 30: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

- GetBounds(), GetWidth(), GetHeight()

- GetClientAreaBounds()

Hình 6: Client Area của ứng dụng.

Cách sử dụng Frame :

o Lấy thông tin của 1 frame : GetAppFrame()->GetFrame();

o Vẽ lên đối tượng lên Frame : GetCanvasN() : hàm này trả về

một canvas của Frame.

- Thêm vào 1 Form và hiển thị

AddControl(aForm), SetCurrentForm(aForm)

Cách sử dụng Form :

- Có thể sử dụng Form với 1 mẫu có sẳn.

Bổ sung 2 phương thức : OnInitializing()và OnTerminating()

- OnInitializing():

Thêm Controls vào Form.

Đặt text softkey vào trong Form

Đặt action id vào keys.

Trang 30

Page 31: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Đăng ký sự kiện cho mỗi action.

Khởi tạo toàn bộ dữ liệu của Form.

Thêm phương thức để lắng nghe sự kiện trên Form.

- OnTerminating() : giải phóng cấp phát bộ nhớ cho Form.

Hình 7: OptionMenu .

- Phương thức OnInitializing.

Trang 31

class FormExample:// It is form and need to listen eventspublic Osp::Ui::Controls::Form,public Osp::Ui::IActionEventListener{public:FormExample(void) {};virtual ~FormExample(void) {};protected:// event id for soft-keysstatic const intID_SOFTKEY_OK = 101;static const intID_SOFTKEY_CANCEL = 102;public:// initialization functionvirtual result OnInitializing(void);// listening functionvirtual void OnActionPerformed(const Control& src,intactionId);};

Page 32: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

- Phương thức OnActionPerformed : đăng ký sự kiện trên Form.

- Thêm Form vào Frame.

Trang 32

return r = E_SUCCESS;// Set a title text & soft-key textSetTitleText("My Form");SetSoftkeyText(SOFTKEY_0, "OK");SetSoftkeyText(SOFTKEY_1, "CANCEL");// Assign an action ID of SoftkeySetSoftkeyActionId(SOFTKEY_0, ID_SOFTKEY_OK);SetSoftkeyActionId(SOFTKEY_1, ID_SOFTKEY_CANCEL);// Register an event listenerAddSoftkeyActionListener(SOFTKEY_0, *this);AddSoftkeyActionListener(SOFTKEY_1, *this);// This is right place to create and add controlsreturn r;

void FormExample::OnActionPerformed(const Control& src,intactionId){switch (actionId){case ID_SOFTKEY_OK:// Todo:break;case ID_SOFTKEY_CANCEL:// Todo:break;default:break;}}

// Usually OnAppInitializing// Creating a formFormExample* form=new FormExample();// Note that all controls must be on the heap!form->Construct(FORM_STYLE_TITLE|FORM_STYLE_SOFTKEY_0|FORM_STYLE_SOFTKEY_1|FORM_STYLE_INDICATOR);// Getting application frameFrame* frame = GetAppFrame()->GetFrame();// Adding frameframe->AddControl( *form );// Making the form as the current form from many formsframe->SetCurrentForm( *form );frame->RequestRedraw(true);

Page 33: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.5.2 Một Số Control cơ bản trong pada:

1.5.2.1 List :

Khai báo đối tượng list trong header Form:

Tùy chọn các Element :

Trang 33

// creating and setting up a list for example// creating it on the heapList* list = new List();list->Construct( Rectangle(..), LIST_STYLE_NORMAL,...);list->AddItemEventListener( aEventListeningObject);// adding the list to the Formform->AddControl( *list );

// Declaring the form as a event listenerclass TestForm: ...public ICustomItemEventListener{...// Element interactionvoid OnItemStateChanged(const Control &source,intindex, intitemId, intelementId,ItemStatusstatus);// Item-wise interactionvoid OnItemStateChanged(const Control &source,intindex, intitemId, ItemStatusstatus);

Page 34: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Khởi tạo custom list

Khởi tạo Item và add item vào List:

Trang 34

// Custom drawing element// We will discuss 2D drawing laterclass MyElement: public ICustomListElement{public:MyElement( inti){....};result DrawElement(const Osp::Graphics::Canvas& canvas, const Osp::Graphics::Rectangle& rect, CustomListItemStatusitemStatus){Canvas* pCanvas= const_cast<Canvas*>(&canvas);// Drawing Custom element with Canvas(2D graphics)return E_SUCCESS;}};20

result TestForm::OnInitializing( void ){...// Creating and constructing a listCustomList* pList= new CustomList();pList->Construct( Rectangle( 0, 0, 480, 600 ),CUSTOM_LIST_STYLE_NORMAL, false);// Setting event listenerpList->AddCustomItemEventListener( *this );

CustomListItemFormat* pFormat= new CustomListItemFormat();pFormat->Construct();pFormat->AddElement(0, Rectangle(0, 0, 100, 100));pFormat->AddElement(1, Rectangle(120, 10, 310, 60),50, Color::COLOR_WHITE, Color::COLOR_BLUE);pFormat->AddElement(2, Rectangle(120, 65, 310, 90),25, Color::COLOR_YELLOW,Color::COLOR_BLUE);// Enabling interaction for the custom elementpFormat->SetElementEventEnabled( 0, true );

Page 35: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Sự Kiện Trên List : OnItemStateChanged() : được gọi khi có 1 item

được chọn.

Số lượng Item :GetItemCount()

Lấy Item được check : GetFirstCheckedItem(),

GetNextCheckedItem(), GetLastCheckedItem(), IsItemChecked()

Trang 35

// Creating items and adding to the listfor( inti=0; i<10; i++ ) {// creating & construct with an item heightCustomListItem* item = new CustomListItem();item->Construct(100);item->SetItemFormat( *pFormat);// Creating custom drawing element and adding itMyElement* myElement= new MyElement( i);item->SetElement( 0, *((ICustomListElement*)myElement) );// other elementsString name(“Name “); name.Append(i);item->SetElement( 1, name );item->SetElement( 2, “Subtitle” );pList->AddItem( *item, i);}this->AddControl( *pList);return r;}

Page 36: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 8: Danh sách các list trong Pada.

1.5.2.2 EditField & EditArea

Khởi tạo và cấp phát :

EditField& editField= *(new EditField);

editField.Construct( Rectangle(0,100,480,100 ) );

Thêm sự kiện và set các propertise :

editField.AddTextEventListener( *this );

editField.SetName( “EditField1” );

Add Edittext vào Form: this->AddControl( editField);

Trang 36

// Declaring the form as a text field listenerclass TestForm: public Form, public ITextEventListener..{ ...void OnTextValueChanged(const Control& source);void OnTextValueChangeCanceled(const Control& source);...};void TestForm::OnInitializing( void ) { ...// creating an edit fieldEditField& editField= *(new EditField());editField.Construct(Rectangle(0,100,480,100));// Setting event listener & nameeditField.AddTextEventListener( *this );editField.SetName(“EditField1”);// adding the edit field to the formthis->AddControl( editField);...

Page 37: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.5.2.3 Button :

Cấu trúc phương thức Listener :

1.5.2.4 SlidableList:

Hình 9: lidableList

Trang 37

// Declaring the form as a text field listenerclass TestForm: public Form, public ITextEventListener..{ ...void OnTextValueChanged(const Control& source);void OnTextValueChangeCanceled(const Control& source);...};void TestForm::OnInitializing( void ) { ...// creating an edit fieldEditField& editField= *(new EditField());editField.Construct(Rectangle(0,100,480,100));// Setting event listener & nameeditField.AddTextEventListener( *this );editField.SetName(“EditField1”);// adding the edit field to the formthis->AddControl( editField);...

Button& button = *(new Button);button.Construct(rectangle, “”);// setting a prepared bitmap to button// we will discuss about bitmap, laterbutton.SetNormalBitmap(position,bitmap);// setting action id and listenerbutton.SetActionId(actionID);button.AddActionEventListener(listener);// adding the button to a form (this)this->AddControl(button);

// Element interactionvoid TestForm::OnItemStateChanged(const Control &source,intindex, intitemId, intelementId,ItemStatusstatus){AppLog(“Element of %d item”, itemId);}// Item-wise interactionvoid TestForm::OnItemStateChanged(const Control &source,intindex, intitemId, ItemStatusstatus){AppLog(“%d-thitem”, itemId);}

Page 38: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

- Khởi tạo Item:

- Listener:

Trang 38

result TestForm::OnInitializing(void) {...// Create a SlidableListpList= new SlidableList();pList->Construct(Rectangle(0, 0, 480, 500),CUSTOM_LIST_STYLE_NORMAL);pList->AddCustomItemEventListener(*this);pList->AddSlidableListEventListener(*this);// Preparing a formatpFormat= new CustomListItemFormat();pFormat->Construct();pFormat->AddElement(0,Rectangle(10, 25, 200, 80));...// Add the SlidableListto the FormAddControl(*pList);...}

// A function to create an itemCustomListItem* TestForm::CreateItem(String text1, .. ){// creating and construct an itemCustomListItem* pItem= new CustomListItem();pItem->Construct(HEIGHT);// setting up the itempItem->SetItemFormat(*pCustomListItemFormat);pItem->SetElement(0, text1);...return pItem;}// Implementation of an ISlidableEventListenervoid TestForm::OnListPropertyRequested(const Control &s){// setting the total count and the height of itemspList->SetItemCountAndHeight(COUNT, COUNT*HEIGHT);}

void TestForm::OnLoadToBottomRequested(const Control &src, intindex, intnumItems){// For the requested indicesfor(inti= index; i< index + numItems; i++){String text = "ITEM_";text.Append(i);// Creating and adding the item to the list// i+1 is the id of the itempList->LoadItemToBottom(*CreateListItem(text,...), i+1);}}

Page 39: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.5.2.5 MenuOption:

Hình 10: Option Menu

Trang 39

void TestForm::OnLoadToTopRequested(const Control &source, intindex, intnumItems){// For the items requested// Note: it is reverse orderfor(inti= index; i> index -numItems; i--){String text = "ITEM_";text.Append(i);// Creating the item and adding it to the list// i+1 is the id of the itempList->LoadItemToTop(*CreateListItem(text,..), i+1);}}

void TestForm::OnUnloadItemRequested(const Control& source, intitemIndex){// Release resources of the specified item// Do not worry about the resources added to// the list item (elements):// there are freed automatically}

Page 40: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Trang 40

class OForm: ... {void ShowHideOptionMenu(boolshow);...OptionMenu* optionMenu;};OForm::Construct(){// add option key to form stylereturn Form::Construct(....|FORM_STYLE_OPTIONKEY);}OForm::OnInitializing(void) { ...// Creating an OptionMenuoptionMenu= new OptionMenu();optionMenu->Construct();optionMenu->AddItem(“Item1”,1);optionMenu->AddItem(“Item2”,2);SetOptionKeyActionId(100);AddOptionKeyActionListener(*this);}

void OForm::ShowHideOptionMenu( boolshow ) {optionMenu->SetShowState( show );if( show ) optionMenu->Show();else Show();}void OForm::OnActionPerformed(const Control& s, intid){switch( id ){case 100: ShowHideOptionMenu( true ); break;case 1://do some action herebreak;case 2: //do some action herebreak;}}result OForm::OnTerminating(){ ...delete optionMenu; ...}

Page 41: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.5.2.6 Tab

Hình 11: Tab trong Bada

1.5.2.7 Multiple Form

Trang 41

TForm::Construct(){// adding tab to form stylereturn Form::Construct(....|FORM_STYLE_TEXT_TAB);}OForm::OnInitializing(void) { ...Tab* tab = GetTab();if( tab ){// adding tab itemstab->AddItem(“Genre”, 0);tab->AddItem(“Artist”, 1);tab->AddActionEventListener(*this);}...}void TForm::OnActionPerformed(const Control& s, intid){switch( id ){case 0: // show hide some controlsbreak;case 1: // show hide some controlsbreak;}}

Page 42: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Trang 42

// The function to switch form available from the outsideresult MyApp::MoveToForm( inti){// checking the id is validif( i<0 || i>=2 ) return E_OBJ_NOT_FOUND; // exception// Get pFrameof the applicationFrame* pFrame= GetAppFrame()->GetFrame();// Setting the current formpFrame->SetCurrentForm( *form[i] );// Force the frame to redrawpFrame->RequestRedraw();return E_SUCCESS;}

// Usually on some event// (action event listener for example)void Form1::OnActionEventListener( ... )...if( ... ){MyApp* app = (MyApp*)GetInstance();app->MoveToForm( 1 );}...}

class Form1: .... { ...};class Form2: .... { ...}// in the <App>.hclass MyApp: ...{...private:// Form arrayForm* form[2];...public:result MoveToForm( inti);};

MyApp::OnAppInitializing( ... ){...// Creating two forms (which are member variable now)form[0] = new Form1();((Form1*)form[0])->Initialize();form[1] = new Form2();((Form2*)form[1])->Initialize();...

Page 43: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.6 Webservice deCarta.

1.6.1 Giới Thiệu deCarta:

deCarta là một dịch vụ được hỗ trợ rất mạnh về tính năng định vị trên pada,

để truy cập được thư viện trên deCarta cần có 1 tài khoản trên trang chủ

http://developer.decarta.com/ .

1.6.2 Cách Kết Nối

Sử dụng phương thức :

Địa chỉ truy cập URL sẽ thay đổi theo phiên bản sau :

Host URL Compatible

version

Feature

http://developer.kr.dz.decarta.com/openls/openls bada1.0

http://samsungcdn.vip.decartahws.com/openls/openls bada1.1 and

later

CDN

support

Trang 43

ProviderManager::ConnectToServiceProviderN(const

Osp::Base::String & name, LocationServiceProviderType type,

const Osp::Base::String & extraInfo)

Ví dụ:

ProviderManager::ConnectToServiceProviderN(L“deCarta”,

LOC_SVC_PROVIDER_TYPE_MAP,

L“ClientName=<client_name>;ClientPassword=<client_password>;

HostUrl=http://developer.kr.dz.decarta.com/openls/openls”);

MyApp::OnAppInitializing( ... ){...// Creating two forms (which are member variable now)form[0] = new Form1();((Form1*)form[0])->Initialize();form[1] = new Form2();((Form2*)form[1])->Initialize();...

Page 44: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Bảng 1: Bảng truy cập máy chủ dịch vụ.

1.6.3 Thư viện hỗ trợ deCarta:

Mô Tả Thư Viện

Nơi bắt đầu của toàn bộ vị trí trong ứng

dụng.

LocationProvider

Chứa thông tin về vị trí trong ứng dụng. Location

Thông tin kinh tuyến, vĩ tuyến, độ cao. Coordinates

Thông tin về kinh tuyến, vĩ tuyến, độ

cao và độ chính xác của thông tin của

ứng dụng.

QualifiedCoordinates

Thông báo cho người dùng biết ranh

giới trên bản đồ địa lí.

IAreaListener

Quản lý thông tin khi người dùng thay

đổi vị trí trên bản đồ.

ILocationListener

Quản lý phương thức đánh dấu vị trí

trên bản đồ.

Landmark

Quản lý dịch vụ Landmark và các

phương thức để quản lý Landmark.

LandmarkStore

Thông tin từ vị trí trên bản đồ sang vị

trí thật của địa lí.

AddressInfo

Quản lý các khu vực địa lý và ranh giới

giữa chúng dựa trên tiêu chuẩn WGS 84

Ellipsoid.

GeographicArea

Cung cấp các phương thức để tìm kiếm

các vị trí Landmark trên bản đồ.

IlandmarkSearchListener

Quản lý thông tin dịch vị định vị và

truyền thông tin đó cho dịch vụ khác.

RemoteLocationProvider

Cung cấp một đối tượng để lấy thông

tin về ID người dùng và thông tin dịch

vụ.

TargetInfo

Trang 44

Page 45: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Cung cấp thông tin cho dịch vụ. TraceServiceInfo

Cung cấp dịch vụ để lắng nghe và báo

cáo vị trí lên badaServer.

ILocationResportListener

Cung cấp dịch vụ để lắng nghe khi

người dùng lấy thông tin vị trí cuối từ

server.

IRemoteLocationListener

Cung cấp dịch vụ theo dõi sự kiện vị trí

của người dùng.

ITraceServiceListener

Cung cấp thông tin Landmark và

phương thức CRUD.

RemoteLandmarkStore

Quản lý thông tin Landmark của dịch

vụ.

IRemoteLandmarkStoreListener

Bảng 2: Các thư viện hỗ trợ deCarta.

1.6.4 Sơ Đồ Class Trong Webservice.

Sơ đồ 1: Sơ đồ quan hệ giữa các class 1.

Trang 45

Page 46: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Sơ đồ 2: Sơ đồ quan hệ giữa các class 2.

Sơ đồ 3: Sơ đồ quan hệ giữa các class 1.

Trang 46

Page 47: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.6.5 Location

Mô hình dữ liệu

Sơ đồ 4: Sơ đồ dữ liệu trong class Location

Có 3 phương thức hỗ trợ chế độ kết nối:

LOC_METHOD_GPS: hỗ trợ GPS.

LOC_METHOD_WPS: hỗ trợ Wi-Fi và cell-based positioning.

LOC_METHOD_HYBRID: Hỗ trợ cả GPS và WPS .

1.6.6 LocationProvider

- LocationProvider là nơi bắt đầu của mỗi ứng dụng sử dụng dịch vụ

map trên pada.

- Lấy thông tin về vị trí : Sử dụng phương thức

- LocationProvider::Construct(LOC_METHOD_HYBRID)

- Lấy thông tin định kỳ :

- Tạo class và kế thừa phương thức bên trong class ILocationListener.

- Khởi tạo Location Provider sử dụng phương thức :

LocationProvider::Construct()

- Sử dụng phương thức để cập nhật thông tin vị trí mỗi 5giây :

LocationProvider::RequestLocationUpdates().

Trang 47

Page 48: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

1.7 Kỹ Thuật Phân Tích File XML Sử Dụng Xpath.

1.7.1 Định Nghĩa:

Định dạng XML: Dùng để lưu trữ và biểu diễn dữ liệu, đặc biệt quan trọng

với các dữ liệu trên Web.

1.7.2 Xử lý file XML với libxml

3 kiểu dữ liệu cơ bản:

+ xmlChar: Kiểu dữ liệu cơ bản, lưu trữ 1 bye trong UTF-8 Encoding

+ xmlDoc: Cấu trúc dữ liệu chứa tree của xml doc được parsed. xmlDocPtr

để lưu trữ con trỏ tới xmlDoc

+ xmlNode và xmlNodePtr: Lưu trữ 1 sing node trong cây

Cấu Trức 1: Parse một xml file, trả về con trỏ xmlDocPtr, nếu văn bản không

được parse thành công trả về NULL.

Thêm các dòng #include sau vào đầu các file

Cấu Trúc 2: Tìm một node với tên cho trước, trả về con trỏ xmlNodePtr

Trang 48

<?xml version="1.0"?><note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body></note>

// Return a pointer of type xmlDocPtr point to xmlDoc// @docname: xml document namexmlDocPtr getDoc( const char* docname ) { xmlDocPtr doc; doc = xmlParseFile( docname ); if ( doc == NULL ) { cerr << "Document not parsed successfully" << endl; return NULL; } return doc;

Page 49: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Cấu Trúc 3: Tìm node anh em của một node, với tên node được cho trước

(Sử dụng hàm next())

Cấu Trúc 4: Trả về giá trị của một attribute của một node, tên cho trước

Cấu Trúc 5: Lấy text content của một node

Trang 49

// Return a pointer to xmlNodePtr// Find the child node with name node_namexmlNodePtr getChildNode( xmlNodePtr parent, string node_name ) { xmlNodePtr cur = parent->xmlChildrenNode; while ( cur != NULL ) { if ( !xmlStrcmp( cur->name, ( xmlChar* ) node_name.c_str() ) ) { return cur; } cur = cur->next; } return NULL;}

// Get sibling node with @node_namexmlNodePtr getSiblingNode( xmlNodePtr a_node, string node_name ) { xmlNodePtr cur = a_node->next; while ( cur != NULL ) { if ( !xmlStrcmp( cur->name, ( xmlChar* ) node_name.c_str() ) ) { return cur; } cur = cur->next; }

// Get attribute value of @att_namestring getAttrStr( xmlNodePtr cur, string att_name ) { xmlChar* uri = xmlGetProp( cur, (xmlChar*) att_name.c_str() ); if ( uri == NULL ) { cerr << "Attribute " << att_name << " does not exist" << endl; return ""; } string att_val = (char*) uri; xmlFree(uri); return att_val;}

Page 50: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Cấu Trúc 6: Trả về một tập các node theo xPath

Trang 50

string getElementContent( xmlDocPtr doc, xmlNodePtr cur ) { xmlChar * txt_content = xmlNodeListGetString( doc, cur->xmlChildrenNode, 1); if ( txt_content == NULL ) { cerr << "Text content does not exist!!!" << endl; return ""; } string strContent = (char*) txt_content; trimSpaces( strContent ); xmlFree( txt_content ); return strContent;}

xmlXPathObjectPtr getNodeSet(xmlDocPtr doc, xmlChar* xpath) { xmlXPathContextPtr context; xmlXPathObjectPtr result; context = xmlXPathNewContext( doc ); if ( context == NULL ) { cerr << "Error in xmlXPathNewContext" << endl; return NULL;} result = xmlXPathEvalExpression( xpath, context );xmlXPathFreeContext( context ); if ( result == NULL ) { cerr << "Error in xmlXPathEvalExpression" << endl; return NULL;} if ( xmlXPathNodeSetIsEmpty ( result->nodesetval ) ) { xmlXPathFreeObject( result );// cerr << "No result" << endl; return NULL; } return result;}

Page 51: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Chương 2 : Giới Thiệu Về Android

Chương2 : TỔNG QUAN VỀ ANDROID.

2

2.1 Giới Thiệu

Android là một hệ điều hành di động dựa trên nền tảng linux phiên

bản 2.6 dành cho các dòng điện thoại SmartPhone. Đầu tiên được ra đời bởi

công ty liên hợp Android, sau đó được Google mua lại và phát triển từ năm

2005 và trở thành một hệ điều hành di động mã nguồn mở, miễn phí, mạnh

mẽ và được ưa chuộng cao trên thế giới. Hệ điều hành android một hệ điều

hành rất mạnh mạnh, có bảo mật cao, hỗ trợ được nhiều công nghệ tiên tiến

như 3G, GPS, EDGE, Wifi.. tương thích với nhiều phần cứng, hỗ trợ nhiều

loại bộ nhập dữ liệu như keyboard, touch và trackball. Android là hệ điều

hành di động nên có khả năng kết nối cao với các mạng không dây. Hỗ trợ

công nghệ OpenGL nên có khả năng chơi các phương tiện media, hoạt hình

cũng như trình diễn các khả năng đồ họa khác cực tốt, là tiền đề để phát triển

các ứng dụng có giao diện phức tạp chẳng hạn như là các trò chơi.

Android liên tục được phát triển, mỗi bản cập nhật từ google là mỗi

lần android được tối ưu hóa để hoạt động tốt hơn, nhanh và ổn định hơn, hỗ

trợ thêm công nghệ mới. Chẳng hạn như theo một đánh giá thì android phiên

bản 2.2 hoạt động nhanh hơn bản 2.1 tới 450%. Năm 2008, hệ điều hành

android đã chính thức mở toàn bộ mã nguồn, điều đó cho phép các hãng điện

thoại có thể đem mã nguồn về tùy chỉnh, thiết kế lại sao cho phù hợp với mỗi

mẫu mã điện thoại của họ và điều quan trọng nữa là hệ điều hành mở này

hoàn toàn miễn phí, không phải trả tiền nên giúp họ tiết kiệm khá lớn chi phí

phát triển hệ điều hành. Những điều đó là cực kỳ tốt không chỉ đối với các

hãng sản xuất điện thoại nhỏ mà ngay cả với những hãng lớn như Samsung,

HTC....

Trang 51

Page 52: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2.2 Các Thành Phần Trong Ứng Dụng Android.

Việc hiểu được các thành phần (component) tạo nên một ứng dụng

Android là rất cần thiết cho việc lập trình. Các thành phần này được chia làm

6 loại bao gồm:

2.2.1 Activity

Activity là nền của 1 ứng dụng. Khi khởi động 1 ứng dụng Android

nào đó thì bao giờ cũng có 1 main Activity được gọi, hiển thị màn hình giao

diện của ứng dụng cho phép người dùng tương tác.

2.2.2 Service:

Thành phần chạy ẩn trong Android. Service sử dụng để update dữ

liệu, đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người

dùng thấy.

2.2.3 Content Provider.

Kho dữ liệu chia sẻ. Content Provider được sử dụng để quản lý và

chia sẻ dữ liệu giữa các ứng dụng.

2.2.4 Intent:

Nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các

thông báo đi nhằm khởi tạo 1 Activity hay Service để thực hiện công việc

bạn mong muốn. VD: khi mở 1 trang web, bạn gửi 1 intent đi để tạo 1

activity mới hiển thị trang web đó.

2.2.5 Broadcast Receiver

Thành phần thu nhận các Intent bên ngoài gửi tới. VD: bạn viết 1

chương trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn

cần 1 BR để nhận biết các Intent là các cuộc gọi tới.

2.2.6 Notification

Đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt

động.

Trang 52

Page 53: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2.3 Tiến trình của một ứng dụng android

Activity, Service, Broadcast Receiver và Content Provider mới là

những thành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai

báo trong AndroidManifest.

Android có cơ chế quản lý các process theo chế độ ưu tiên. Các process

có priority thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm

bảo tài nguyên.

2.3.1 Foreground process

Foreground process là process của ứng dụng hiện thời đang được

người dùng tương tác.

2.3.2 Visible process

Visible process là process của ứng dụng mà activity đang hiển thị đối

với người dùng (onPaused() của activity được gọi).

2.3.3 Service process

Service process là Service đang running.

2.3.4 Background process

Background process là process của ứng dụng mà các activity của nó ko hiển

thị với người dùng (onStoped() của activity được gọi).

2.3.5 Empty process

Empty process: process không có bất cứ 1 thành phần nào active.

Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động kill process,

trước tiên là các empty process.

Trang 53

Page 54: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 12: Biểu đồ vòng đời ứng dụng android

Vòng đời của Activity:

- Entire lifetime: Từ phương thức onCreate( ) cho tới onDestroy( )

- Visible liftetime: Từ phương thức onStart( ) cho tới onStop( )

- Foreground lifetime: Từ phương thức onResume( ) cho tới onPause( )

Khi xây dựng Actitvity cho ứng dụng cần phải viết lại phương thức

onCreate( ) để thực hiện quá trình khởi tạo. Các phương thức khác có cần

viết lại hay không tùy vào yêu cầu lập trình.

Trang 54

Page 55: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2.4 Các Thành Phần Trong Giao Diện.

Hình 13: Cấu trúc một giao diện ứng dụng Android.

2.4.1 ViewGroup

ViewGroup thực ra chính là View hay nói đúng hơn thì ViewGroup chính là

các widget Layout được dùng để bố trí các đối tượng khác trong một screen.

Có một số loại ViewGroup như sau:

2.4.2 LinearLayout

LinearLayout được dùng để bố trí các thành phần giao diện theo chiều ngang

hoặc chiều dọc.

Hình 14: Bố trí các widget sử dụng LinearLayout

2.4.3 FrameLayout

FrameLayout được dùng để bố trí các đối tượng theo kiểu giống như là các

Layer trong Photoshop.

Trang 55

Page 56: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 15: Bố trí widget trong FrameLayout.

2.4.4 AbsoluteLayout

Layout này được sử dụng để bố trí các widget vào một vị trí bất kì trong

layout dựa vào 2 thuộc tính toạ độ x, y.

2.4.5 RetaliveLayout

Layout này cho phép bố trí các widget theo một trục đối xứng ngang hoặc

dọc. Để đặt được đúng vị trí thì các widget cần được xác định một mối ràng

buộc nào đó với các widget khác.

Hình 16: Bố trí widget trong RataliveLayout.

2.4.6 TableLayout

Layout này được sử dụng khi cần thiết kế một table chứa dữ liệu hoặc cần

bố trí các widget theo các row và column.

Trang 56

Page 57: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 17: Bố trí widget trong TableLayout.

2.4.7 Button

Thuộc tính android:onClick="touchMe" được dùng để nắm bắt sự kiện click

vào button.

Thiết kế bằng code Thực ra mà nói thì nếu không phải đòi hỏi phải custom

lại một widget thì không cần phải sử dụng tới code.

2.4.8 ImageButton

Cũng tương tự như Button, ImageButton chỉ có thêm một thuộc tính

android:src = “@drawable/icon” để thêm hình ảnh vào và không có thẻ text

Trang 57

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/cmdButton1"

android:text="Touchme!"

android:onClick="touchMe"/>

public void touchMe(View v){ Button me = (Button) v;

Me.setText(“Touched”); }

Button cmdButton = new Button(this);

Page 58: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 18: ImageButton

2.4.9 ImageView

Được dùng để thể hiện một hình ảnh. Nó cũng giống như ImageButton, chỉ

khác là không có hình dáng của một cái button.

Code:

Hình 19: ImageView và ImageButton.

2.4.10 ListView

Được sử dụng để thể hiện một danh sách các thông tin theo từng cell.

Mỗi cell thông thường được load lên từ một file XML đã được cố định trên

Trang 58

<ImageButton android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/cmdButton1"android:src="@drawable/icon"

android:onClick="touchMe"/>

ImageView iv = new ImageView(this);iv.setImageResource(R.drawable.icon);

Page 59: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

đó số lượng thông tin và loại thông tin cần được thể hiện. Để thể hiện được

một list thông tin lên một screen thì cần phải có 3 yếu tố chính:

Data Source

Adapter

Adapter là một class trung gian giúp ánh xạ dữ liệu trong Data Source

vào đúng vị trí hiển thị trong ListView.

Hình 20: Minh họa 1 listview.

2.4.11 TextView

TextView ngoài tác dụng là để hiển thị văn bản thì nó còn cho phép

định dạng nội dung bằng thẻ html.

Nội dung TextView cũng có thể được định dạng bằng thẻ html ngay

trong XML.

2.4.12 EditText

Trong Android đối tượng EditText được sử dụng như một TextField

hoặc một TextBox.

Trang 59

TextView textView = (TextView)findViewById(R.id.textView);

CharSequence styledText = Html.fromHtml("<i>This</i> is some

<b>styled</b> <s>text</s>"); textView.setText(styledText);

Page 60: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2.4.13 CheckBox

Nhận 2 giá trị true hoặc false. Đối tượng CheckBox cho phép chọn

nhiều item cùng một lúc.

Khai báo:

2.4.14 MenuOptions

Trang 60

<EditTextandroid:id="@+id/EditText01"

android:layout_height=" wrap_content"

android:textStyle="bold"

android:textSize="20dip" android:textColor="#000000"

android:text="HelloAndroid!" android:singleLine="true"

android:inputType="textCapWords"/>

CheckBox cb = new CheckBox(Context …); XML: <CheckBox

android:id="@+id/CheckBox01"android:layout_width="wrap_content"

android:layout_height="wrap_content"android:text="Checkme"

android:checked="true"/>

Page 61: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Có 2 cách tạo một MenuOptions: Tạo bằng code:

Hình 21: Minh họa OptionMenu.

Tạo bằng XML

Trang 61

public class Main extends Activity {private int searchBtnId =

Menu.FIRST; private int scheduleBtnId = Menu.FIRST + 1; private int

playBtnId = Menu.FIRST + 2; private int stopBtnId = Menu.FIRST + 3;

private int group1Id = 1;

private int group2Id = 2;

@Override

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(group1Id,searchBtnId,searchBtnId,"Search");

menu.add(group2Id,scheduleBtnId,scheduleBtnId,R.string.schedule);

menu.add(group2Id,playBtnId ,playBtnId,"Play");

menu.add(group2Id,stopBtnId ,stopBtnId,R.string.stop);

menu.setGroupVisible(1, false); return

super.onCreateOptionsMenu(menu); } }

<?xml version="1.0" encoding="utf-8"?> <menu

xmlns:android="http://schemas.android.com/apk/res/android">

<item android:icon="@drawable/icon" android:title="Item1" android:

orderInCategory="1" android:id="@+id/item1 ">

<item android:title="Item 2" android:id="@+id/item2"

android:orderInCategory="2"> <menu> <item android:id="@+id/item01"

android:title="Sub item 1" android:orderInCategory="1/>

Page 62: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2.4.15 ContextMenu

ContextMenu được sử dụng để hiển thị các tuỳ chọn khi người dùng

nhấn dài vào một cell nào đó trong ListView.

Để tạo một ContextMenu ta cũng có 2 cách giống như tạo

MenuOptions ở trên chỉ khác tên phương thức.

Sẽ được gọi và truyền vào 3 tham số là:

ContextMenu: đối tượng để add các context menu item

View: Đối tượng nơi mà xảy ra sự kiện

ContextMenuInfo: Cho biết vị trí xảy ra sự kiện trong ListView. Để

biết được vị trí xảy ra sự kiện ta làm như sau:

Trang 62

public boolean onCreateOptionsMenu(Menu menu) { new

MenuInflater( getApplication()).inflate(R.menu.menu_options, menu); return

super.onCreateOptionsMenu(menu); }

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo)

AdapterView.AdapterContextMenuInfo info;

try { info = (AdapterView.AdapterContextMenuInfo) menuInfo; } catch

(ClassCastException e) { return; } info.position

Page 63: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 22: ContextMenu.

2.5 Activity Và Intend

2.5.1 Activity

Activity là một thành chính của một ứng dụng Android, được dùng để hiển

thị một màn hình và nắm bắt các hoạt động xảy ra trên màn hình đó. Khi làm

việc với Activity cần nắm bắt được một số kiến thức cơ bản như sau:

Tính liên lạc giữa 2 activity Khi chuyển sang một Activity khác ta có thể gửi

kèm dữ liệu trong intend đó như sau:

Bên phía Activity được khởi động hay được chuyển đế n, có thể lấy dữ liệu

được gửi như sau:

Trang 63

Intend intend = new Intend(this, B.class);

startActivity(intend);

intend.putExtra(“key1”, “value1”); intend.putExtra(“key2”,

23);

getIntend().getExtra().getString(“key1”);

getIntend().getExtra().getInt(“key2”);

Page 64: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2.5.2 Intent

Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một

Activity

Hình 23: Truyền dữ liệu giữa 2 Activity

Dữ liệu của Intend:

Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớp

android.content.Intent.

2.6 Dịch vụ Google Map

2.6.1 Giới thiệu dịch vụ Google Map:

Dịch vụ cơ bản trên google map gồm 2 thành phần là : Api Mapping và Api

location. Các Api này nằm trên 1 gói cài đặt riêng biệt nhau : Api Mapping

nằm trong gói :  com.google.android.maps và Api location nằm trên gói :

android.location.Ngoài ra còn có hệ thống định vị toàn cầu GPS

2.6.2 Giới thiệu về Mapping package:

Mapping package là một trong 2 thành phần quan trọng của dịch vụ bản đồ

trên Android. Package này chứa đầy đủ thông tin cần thiết để hiển thị một

bản đồ lên màn hình, xữ lý các tương tác giữa người dùng và bản đồ (như

phóng to, thu nhỏ), hiển thị các dữ liệu tùy biến do người dùng thêm vào. Để

làm được điều đó cần lớp MapView. Để lấy được thông tin từ MapView thì

người dùng cần có 1 key từ google.

2.6.3 MapView và MapActivity:

Trang 64

Page 65: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Để sử dụng MapView, MapActivity cần khai báo trong file

AndroidManifest.xml. Để thiết lập quyền truy xuất cho người dùng.

2.6.4 Sử dụng Overlay

Đây là các thành phần mở rộng do người dùng thêm vào và được hiển thị vị

trí đánh dấu trên bản đồ.

Trang 65

<uses-permission

android:name="android.permission.INTERNET" />

<uses-permission

android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission

android:name="android.permission.ACCESS_COARSE_LOCATION" />

public InterestingLocations(Drawable marker)

{ super(marker);

this.marker=marker;

// create locations of interest

GeoPoint disneyMagicKingdom = new

GeoPoint((int)(28.418971*1000000),(int)(-81.581436*1000000));

GeoPoint disneySevenLagoon = new

GeoPoint((int)(28.410067*1000000),(int)(-81.583699*1000000));

locations.add(new OverlayItem(disneyMagicKingdom ,

"Magic Kingdom", "Magic Kingdom"));

locations.add(new OverlayItem(disneySevenLagoon ,

"Seven Lagoon", "Seven Lagoon"));

populate();

}

Page 66: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

List<Address> getFromLocation(double latitude, double longitude, int

maxResults)

List<Address> getFromLocationName(String locationName, int

maxResults, double lowerLeftLatitude, double lowerLeftLongitude, double

upperRightLatitude, double upperRightLongitude)

List<Address> getFromLocationName(String locationName, int

maxResults)

Hình 24: Đánh dấu vị trí trên bản đồ.

2.6.5 Package Location

Chứa trong nó 2 thành phần quan trọng là class Geocoder và dịch vụ

LocationManager.

Class Geocode: là lớp quản lý việc chuyển đổi qua lại giữa địa chỉ (hoặc vị

trí) sang kinh tuyến và vĩ tuyến hoặc ngược lại. Lớp này bao gồm các

phương thức sau:

Trang 66

List<Address> addressList =geocoder.getFromLocationName(locationName, 5);if(addressList!=null && addressList.size()>0){

int lat = (int)addressList.get(0).getLatitude()*1000000;int lng = (int)addressList.get(0).getLongitude()*1000000; GeoPoint pt = new GeoPoint(lat,lng);mapView.getController().setZoom(10);mapView.getController().setCenter(pt);mapView.getController().animateTo(pt);

}

Page 67: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2.6.6 View Trong Map Google

Các kiểu View:Google Maps cung cấp cho chúng ta 3 tùy chọn để

xem GoogleMaps là StreetView, SatelliteView và TrafficView.

Hình 25: SatelliteView

Trang 67

Page 68: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 26: TrafficView

StreetView ( hiện tại chỉ hỗ trợ ở 1 số nước Châu Âu vì Google phải sử dụng

xe chuyên dụng để chụp ảnh tất cả các tuyến đường nên rất mấy thời gian )

Khi lập trình các muốn view theo kiểu nào thì chỉ cần sử dụng phương

thức tương ứng:

Trang 68

mapView.setSatellite(true);mapView.setStreetView(true);mapView.setTraffic(true);

Hình 27: TrafficView

Page 69: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2.6.7 Xác định vị trí trên Google Maps:

Tọa độ 1 điểm trên GoogleMaps được xác định bằng 2 thông số là

Kinh độ (Longitude ) và Vĩ độ ( Latitude ). Để hiện thị 1 điểm trên

GoogleMaps cần biết được 2 thông số này của vị trí đó.

2.7 Kỹ Thuật Phân Tích JSON.

2.7.1 Khái niệm:

Viết tắt của JavaScript Object Notation (phiếu đối tượng JavaScript)

Nó là một chuẩn để định dạng dữ liệu, về mặt này có thể so sánh JSON với

XML YAML… Nhưng khi JSON đi với JavaScript hoặc ActionScript thì nó

có tính ưu việt hơn hẳn.

2.7.2 Cách thức sử dụng JSON

Khi sử dụng JSON với JavaScript hay ActionScript, không cần phải

có các bước phân tích phức tạp như đối với XML. Mà có thể truy vấn trực

tiếp giá trị theo tên (khóa) được định nghĩa trong JSON.

Bạn có một dữ liệu XML:

JSON là một chuẩn cực kỳ quan trọng trong lập trình webclient.

Tương tác client-server (ajax chẳng hạn) với JSON đỡ rườm rà hơn sử dụng

XML rất nhiều.

Đối với lập trình viên client script. JSON rút ngắn thời gian viết mã

JavaScript, ActionS hơn là sử  dụng XML.

Trang 69

GeoPoint p;String coordinates[] = {"21.036074","105.833636"};double latiTude = Double.parseDouble(coordinates[0]);double longiTude = Double.parseDouble(coordinates[1]);p = new GeoPoint((int)(latiTude * 1E6) ,(int)(longiTude * 1E6));

<data><x>2</x><y>3</y></data>

Page 70: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Đoạn code sau mô tả phân tích 1 địa chỉ sang đối trượng JSON trong

android

Trang 70

public JSONObject getLocationInfo(String address) {String compare = address.replace(" ","+");String a

="http://maps.google.com/maps/api/geocode/json?address="+compare+",hochiminh,vn&sensor=false";

HttpGet httpGet = new HttpGet(a);HttpClient client = new DefaultHttpClient();HttpResponse response;StringBuilder stringBuilder = new StringBuilder();try {

response = client.execute(httpGet);HttpEntity entity = response.getEntity();InputStream stream = entity.getContent();int b;while ((b = stream.read()) != -1) {

stringBuilder.append((char) b);}

} catch (ClientProtocolException e) {} catch (IOException e) {}

JSONObject jsonObject = new JSONObject();try {

jsonObject = new JSONObject(stringBuilder.toString());

} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();

}

return jsonObject;

Page 71: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Chương 3 : GIỚI THIỆU BÀI TOÁN VÀ ỨNG DỤNG

3

3.1 GIỚI THIỆU BÀI TOÁN

- Dịch vụ bản đồ là một trong những dịch vụ khá quan trọng, giúp

người dùng có thể tìm kiếm thông tin về vị trí cũng như tìm đường đi,

các loại bản đồ hiện nay chưa đáp ứng đủ nhu cầu của người dùng

như tìm kiếm địa điểm các điểm kẹt xe, tuyển sinh…Ứng dụng

“LocationV10” giúp người dùng có thể tương tác một cách dể dàng

hơn, phần mềm “LocationV10” tương tác trên hệ máy chạy android,

và samsung Ware 1.0.

3.2 PHÁT BIỂU BÀI TOÁN

3.2.1 Khảo sát hiện trạng

- Với nhu cầu hỗ trợ việc tìm kiếm địa điểm một cách nhanh chóng và

thuận tiện, chính xác, tương tác trên nhiều hệ máy khác nhau. Hệ

thống có khả năng tích hợp các công nghệ thành 1 ứng dụng. Vấn đề

đặt ra là việc tích hợp nhiều nền tảng phục vụ cho con người.

Trang 71

Page 72: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

3.2.2 Yêu cầu hệ thống

- Người dùng cần trang bị máy điện thoại chạy hệ điều hành Android

1.5, cần kết nối Internet, GPS.

- Điện thoại Samsung Ware phiên bản 1.0.

3.3 Xác định actor và usercase.

3.3.1 Danh sách Actor

STT Tên Actor Ý nghĩa/Ghi chú

1 Người dùng Người dùng sử dụng điện thoại truy cập thông tin.

2 Người quản trị hệ thống Người quản trị sử dụng website cập nhật thông tin

3.3.2 Sơ đồ usercase

3.3.3 Danh sách usercase

3.3.3.1 Usercase của actor Admin

STT Tên Use-case Ý nghĩa/Ghi chú

1 ThemViTri Thêm một tọa độ vào bản đồ.

Trang 72

Them

XoaAdmin

ViTriHienTai

TimKiemDiaDiem

TimKiemDuongDi

TimKiemViTri

NguoiDung

Sơ đồ 5: Usecase Admin

Sơ đồ 6: Usecase Người dùng

Page 73: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2 XoaViTri Xóa một vị trí cần chọn.

3.3.3.2 Usercase của actor Người dùng

STT Tên Use-case Ý nghĩa/Ghi chú

1 ViTriHienTai Hiển thị vị trí hiện tại của người dùng.

2 TimKiemDiaDiem Hiển thị vị trí đã được đánh dấu trước.

3 TimKiemDuongDi Tìm kiếm đường đi giữa 2 điểm.

4 TimKiemViTri Tìm kiếm một vị trí do người dùng chọn.

Đặc tả usercase.

Đặc tả Usecase “Them”

Tóm tắt

Người quản trị thêm một vị trí vào bản đồ

Dòng sự kiện

Dòng sự kiện chính :

Trên website người dùng chọn 1 vị trí cần thêm vào.

Hiển thị tọa độ tương ứng với vị trí đó.

Kết thúc UseCase.

Dòng sự kiện khác: không có

Các yêu cầu đặc biệt:

Không có

Trạng thái hệ thống khi bắt đầu thực hiện Usecase:

Người dùng chọn vị trí trên giao diện chính.

Trang 73

Page 74: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Trạng thái hệ thống sau khi thực hiện Usecase :

Hiển thị tọa độ tương ứng vị trí đã chọn.

Điểm mở rộng

Không có.

Đặc tả Use-case “Sửa”

Tóm tắt :

Người quản trị xóa 1 vị trí trên bản đồ.

Dòng sự kiện

Dòng sự kiện chính :

Trên giao diện hiển thị tọa độ đã chọn.

Người dùng chọn nút xóa trên giao diện.

Kết thúc Usecase.

Dòng sự kiện khác: không có

Các yêu cầu đặc biệt:

Không có

Trạng thái hệ thống khi bắt đầu thực hiện Usecase:

Người dùng đã chọn được vị trí.

Trạng thái hệ thống sau khi thực hiện Usecase:

Hệ thống xóa tọa độ trên lưới.

Điểm mở rộng :

Không có.

Đặt tả Usecase “TimDuongGPS”Trang 74

Page 75: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Tóm tắt:

Trên giao diện người dùng chọn tìm đường theo GPS.

Dòng sự kiện

Dòng sự kiện chính :

Nếu thiết bị đã kết nối GPS.

Hiển thị tọa độ của người dùng.

Người dùng nhập vào vị trí muốn đi đến.

Hiển thị giao diện tô màu con đường cần đi.

Nếu thiết bị chưa kết nối GPS.

Thông báo cho người dùng cần thiết lập kết nối GPS cho hệ

thống.

Dòng sự kiện khác: Không có.

Các yêu cầu đặc biệt:

Không có.

Trạng thái hệ thống khi bắt đầu thực hiện Usecase:

Trạng thái hệ thống sau khi thực hiện Usecase:

Tô màu con đường cần đi qua

Điểm mở rộng :

Đặt tả Usecase “TimKiemDiaDiem”

Tóm tắt:

Tìm kiếm địa điểm tuyển sinh đã được cài đặt từ trước.

Dòng sự kiện

Trang 75

Page 76: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Dòng sự kiện chính :

Người dùng chọn nút tìm kiếm địa điểm.

Hiển thị các địa điểm đã được cài đặt trước.

Chỉnh chế độ zoom của màn hình.

Dòng sự kiện khác: không có.

Các yêu cầu đặc biệt:

Không có

Trạng thái hệ thống khi bắt đầu thực hiện Usecase :

Hiển thị bản đồ mặc định.

Trạng thái hệ thống sau khi thực hiện Usecase.

Điểm mở rộng:

Không có.

Đặt tả Usecase “TimDuongDi”

Tóm tắt:

Thực hiện tìm kiếm giữa 2 điểm đã được chọn trước đó.

Dòng sự kiện

Dòng sự kiện chính :

Nếu người dùng nhập vào vị trí

Nếu tìm kiếm đúng vị trí thì hiển thị 2 điểm cần tìm, tô màu

con đường được tìm kiếm

Nếu tìm kiếm sai, hiển thị thông báo cho người dùng.

Nếu chưa nhập vị trí

Trang 76

Page 77: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Thông báo cho người dùng cần nhập vào vị trí 2 điểm.

Kết thúc Usecase

Dòng sự kiện khác: không có.

Các yêu cầu đặc biệt: không có

Trạng thái hệ thống khi bắt đầu thực hiện Usecase:

Kiểm tra vị trí của người dùng nhập vào.

Trạng thái hệ thống sau khi thực hiện Usecase

Thông báo:

Nếu tìm kiếm đúng

Hiển thị tô màu con đường cần đi.

Nếu tìm kiếm sai

Yêu cầu người dùng nhập lại.

Điểm mở rộng:

Không có.

Đặt tả Usecase “TimKiemViTri”

Tóm tắt:

Thực hiện tìm kiếm 1 điểm đã được chọn trước đó.

Dòng sự kiện

Dòng sự kiện chính :

Nếu người dùng nhập vào vị trí

Nếu tìm kiếm đúng vị trí thì hiển thị điểm cần tìm.

Nếu tìm kiếm sai, hiển thị thông báo cho người dùng.Trang 77

Page 78: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Nếu chưa nhập vị trí

Thông báo cho người dùng cần nhập vào vị trí 1 điểm.

Kết thúc Usecase

Dòng sự kiện khác: không có.

Các yêu cầu đặc biệt: không có

Trạng thái hệ thống khi bắt đầu thực hiện Usecase:

Kiểm tra vị trí của người dùng nhập vào.

Trạng thái hệ thống sau khi thực hiện Usecase

Thông báo:

Nếu tìm kiếm đúng

Hiển thị tô màu con đường cần đi.

Nếu tìm kiếm sai

Yêu cầu người dùng nhập lại.

Điểm mở rộng:

Không có

Trang 78

Page 79: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Chương 4: THIẾT KẾ CHƯƠNG TRÌNH

4

4.1 THIẾT KẾ DỮ LIỆU

Chương trình sử dụng 1 file XML để lưu thông tin các tọa độ

userInfo.XML.

userInfo.XML

Nút gốc

Nút

nhánh=“maso”

Nút lá

Bảng 4.1Cấu trúc file ngôn ngữ XML.

Ví dụ: một phần nội dung file userInfo.XML.

Trang 79

<?xml version="1.0" encoding="utf-8"?><catalog> <Point id="101"> <Location>10.769820593148937:106.6329574584961</Location> </Point> <Point id="102"> <Location>10.772350148049231:106.63209915161133</Location> </Point> <Point id="103"> <Location>10.692869837478474:106.56909942626953</Location> </Point> <Point id="104"> <Location>10.770916736214163:106.65836334228515</Location> </Point></catalog>

Page 80: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

4.2 THIẾT KẾ KIẾN TRÚC

4.2.1 Kiến trúc trên Android

LỚP ĐỐI TƯỢNG DIỄN GIẢI

AddresstoGeoPointChuyển đổi vị trí từ địa điểm sang point, phân

tích chuổi Json.

Android1 Hiển thị thông tin được đánh dấu từ trước.

GPSdemoPhân tích vị trí GPS, hiển thị thông tin vị trí hiện

tại lên bản đồ.

HelloItemizedOverlay Class xữ lý item Overlay.

InfoStreetView Hiển thị khoảng cách đường đi.

MainActivity Hiển thị bản đồ mặc định.

MyXMLHandler Phân tích chuổi XML được sử dụng XPath.

SearchOnePoint Tìm kiếm 1 vị trí trên bản đồ.

SearchTwoPoint Tìm kiếm 2 vị trí trên bản đồ

XMLParsingExample Phân tích chuổi XML lấy từ server.

4.2.2 Kiến trúc trên Bada

LỚP ĐỐI TƯỢNG DIỄN GIẢI

ClassProvider Liên kết webservice sử dụng kết nối webservice.

Form1 Form giao diện chính.

MapSer Nạp chồng phương thức, sử dụng trong bada.

NavigatorInstructForm Form dẫn đường dịch vụ trong bada.

Trang 80

Page 81: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

PointMap Chứ 2 vị trí x,y của bản đồ.

ProgressString Tiến trình chạy nền phân tích chuổi XML trả về.

ProgressXML Tiến trình đọc dữ liệu XML từ server.

Util Phân tích từ chuổi sang vị trí trên bản đồ.

4.3 THIẾT KẾ GIAO DIỆN

4.3.1 Giao diện trên android

- Giao diện chính.

Hình 28: Giao diện chính

Mô tả

Stt Tên Kiểu Ý nghĩa Ghi chú

1btnTracking Button Sử dụng hệ thống định vị GPS

vẽ các con đường đi qua

Trang 81

Page 82: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

2 btnPosition Button Vị trí hiện tại GPS

3 btnSearch2011 Button Hiển thị vị trí kẹt xe

4 btnStreets Button Tìm đường đi giữa 2 điểm

5btnPoint Button Tìm vị trí của 1 điểm trên bản

đồ

6 mapView Mapview Hiển thị bản đồ

- Giao diện vị trí hiện tại.

Hình 29: Giao diện vị trí hiện tại

- Mô tả :

Stt Tên Kiểu Ý nghĩa Ghi chú

1 mapView Mapview Hiển thị bản đồ

2 Images Image Hiển thị vị trí hiện tại

- Giao diện điểm kẹt xe.Trang 82

Page 83: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 30: Giao diện điểm kẹt xe

Mô tả :

Stt Tên Kiểu Ý nghĩa Ghi chú

1 mapView Mapview Hiển thị bản đồ

2 Images Image Hiển thị vị trí hiện tại

3 btnBack Button Quay lại màn hình chính

4btnInfo Button Hiển thị thông tin các con

đường bị kẹt xe.

- Giao diện tìm kiếm đường giữa 2 điểm.

Trang 83

Page 84: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 31: Giao diện tìm kiếm đường giữa 2 điểm

- Mô tả

Stt Tên Kiểu Ý nghĩa Ghi chú

1 Txta Textview Nhập vào vị trí điểm A

2 Txtb Textview Nhập vào vị trí điểm B

3 btnSearch Button Button tìm kiếm

4 mapView Mapview Hiển thị bản đồ lên giao diện

5 btnBack Button Quay lại giao diện

6btnInfo Button Hiển thị thông tin khoảng cách

đường đi

- Giao diện tìm kiếm 1 vị trí

Trang 84

Page 85: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 32: Giao diện tìm kiếm 1 vị trí

- Mô tả

Stt Tên Kiểu Ý nghĩa Ghi chú

1 Txta Textview Nhập vào vị trí điểm A

2 btnSearch Button Button tìm kiếm

3 mapView Mapview Hiển thị bản đồ lên giao diện

4.3.2 Giao diện trên bada

- Màn hình chính

Trang 85

Page 86: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 33: Màn hình chính

- Mô tả

Stt Tên Kiểu Ý nghĩa Ghi chú

1 Zoom Menu Zoom lớn bản đồ

2 Out Menu Zoom nhỏ bản đồ

- Màn hình chức năng chính.

Trang 86

Page 87: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 34: Màn hình chức năng chính

- Mô tả

Stt Tên Kiểu Ý nghĩa Ghi chú

1Diadiemtuyensinh Menu Hiển thị địa điểm đã được đánh

dấu trước

2Timduong Menu Tìm đường đi giữa 2 điểm cố

định trên bản đồ

3 Danduong Menu Hệ thống dẫn đường trên bản đồ

- Màn hình tìm địa điểm tuyển sinh

Trang 87

Page 88: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 35: Màn hình tìm địa điểm tuyển sinh

- Mô tả

Stt Tên Kiểu Ý nghĩa Ghi chú

1 Zoom Menu Zoom lớn bản đồ

2 Out Menu Zoom nhỏ bản đồ

Trang 88

Page 89: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

- Mô tả

Stt Tên Kiểu Ý nghĩa Ghi chú

1 Zoom Menu Zoom lớn bản đồ

2 Out Menu Zoom nhỏ bản đồ

- Màn hình hiển thị vị trí giữa 2 điểm

Trang 89

Page 90: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 36: Màn hình hiển thị vị trí giữa 2 điểm

Stt Tên Kiểu Ý nghĩa Ghi chú

1Next Menu Hiển thị bản đồ đã được định

vị

2 Prev Menu Lùi lại vị trí được chọn

3Khoangcach TextElement Hiển thị thông tin về khoảng

cách giữa 2 điểm

4 Diemcuoi TextElement Hiển thị thông tin về điểm cuối

5 Diemdau TextElement Hiển thị thông tin về điểm cuối

Trang 90

Page 91: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

4.4 Tiến trình cài đặt.

4.4.1 Tạo máy ảo Android:

4.4.1.1 Download Android SDK:

Android SDK thực chất là tập hợp các công cụ và thư viện để phát

triển các ứng dụng trên nền tảng hệ điều hành Android.

B1: Vào trang http://developer.android.com/sdk/index.html để tải Android

SDK Starter. Tùy thuộc vào hệ điều hành mà chọn bản Mac, Linux hay

Window. Ở đây ta chọn tải bản cho Window.

Hình 4 1 Download Android SDK

B2: Giải nén file zip vừa tải về. Chạy SDK Setup.exe.

Hình 4 2 Chạy SDK Setup.exe

Trang 91

Page 92: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

B3: Đánh dấu các Packages muốn tải: Documents chính là phần Javadoc mô

tả hoạt động của các phương thức và các lớp (phần này chắc chắn không thể

thiếu rồi), Sample là các đoạn code mẫu, SDK Platform ứng với các phiên

bản hệ điều hành (2.2 - API level 8, 2.1 - API level 7,...), và Google API để

phát triển các phần mềm liên quan đến dịch vụ của Google (như Google Map

nếu bạn muốn lập trình liên quan đến GPS).

-> Install Selected

-> Install

-> Cửa sổ Install hiện ra

Hình 4 3 Cài đặt Android SDK

4.4.1.2 Tích hợp Android SDK vào Eclipse:

B1: Tải Eclipse: Eclipse for Java Developers, hoặc Eclipse for Java and

Report Developers.

B2: Khởi chạy Eclipse, vào Help -> Install new softwares. Chọn Add, gõ vào

ô Name tên bạn muốn và Location gõ vào địa chỉ để tải về ADT:

Trang 92

Page 93: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

https://dl-ssl.google.com/android/eclipse/

hoặc

http://dl-ssl.google.com/android/eclipse/

Hình 4 4 Tích hợp Android SDL vào Eclipse

B3: Next, next, Accept, next,...Finish (như Install mọi chương trình bình

thường).

B4: Eclipse -> Windows -> Preferences -> Android. Nhấn nút Browse và

chỉnh đường dẫn tới thư mục của Android SDK bạn tải lúc trước.

-> Apply

Trang 93

Page 94: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

-> OK

Hình 4 5 Tích hợp Android SDK (tt)

4.4.1.3 Android Virtual Device (Emulator):

AVD là máy ảo cho developer phát triển ứng dụng. Để tạo 1 AVD thì vào

Windows -> Android SDK and AVD Manager -> Virtual Devices chọn

New.-> Cửa sổ Create new AVD hiện ra, điền thông tin cho AVD vào:

Trang 94

Page 95: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Hình 4 6 Tạo máy ảo

Name: Tùy ý (nhưng chỉ được sử dụng các ký tự "a-z", "A-Z", ".-_",

nghĩa là cả khoảng trắng cũng ko đc).

Target: Chọn phiên bản hệ điều hành bạn muốn (thường mình tạo

một Android 1.6 và một Android 2.2 để test).

SD Card: gõ vào Size SD card ảo cho AVD, hoặc chỉnh tới file đã có

sẵn. Nhiều AVD có thể dùng chung 1 Sdcard (chỉ cần tạo lần đầu, các lần

sau chỉnh đường dẫn tới file đó).

Trang 95

Page 96: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Skin: có thể để Default (HVGA) hoặc chọn kích cỡ màn hình bạn

muốn. Chỉ cần quan tâm tới 3 option: HVGA (phân giải 320-480 như G1,

G2, i5700...), QVGA (240-320 như HTC Wildfire...), WVGA854 (480-854

như Milestone, NexusOne...)

-> Create AVD.

Sau khi tạo máy ảo:

Hình 4 7 Giao diện máy ảo

Trang 96

Page 97: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

4.4.2 Thiết kế phần mềm:

4.4.2.1 Khởi tạo project:

B1: Vào thẻ File -> New -> Android Project. Nếu bạn mới lập trình

Android lần đầu thì có lẽ dòng Android Project sẽ không hiện ra, khi đó

xuống phía cuối chọn Other rồi vào Android -> Android Project.

B2: Điền thông tin của project:

Min SDK Version: 3 (con số này tương ứng với các phiên bản

android)

=> Kích nút Finish.

Vậy là ta đã tạo xong 1 project với 1 lớp Activity: Location10.

Trang 97

Page 98: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

4.4.2.2 Thiết kế class MainActivity

- Cần kế thừa phương thức MapActivity như sau : public class MainActivity extends MapActivity

- T o các đi u khi n trên giao di n trong ph ng th c OnCreate()ạ ề ể ệ ươ ứ

nh sau :ư

super.onCreate(savedInstanceState); setContentView(R.layout.layout_main_11);MapView mv = (MapView)findViewById(R.id.mvmain); mv.setTraffic(true); mv.setBuiltInZoomControls(true);Button btnStreet = (Button) findViewById(R.id.btnSTreet);Button btnPoint = (Button) findViewById(R.id.btnPoint);Button btnTracking = (Button) findViewById(R.id.btnTracking);Button btnPosition=(Button)findViewById(R.id.btnPosition);

- Set s ki n c a các ph ng th c nh sau :ự ệ ủ ươ ứ ư

btnTracking.setOnClickListener(new OnClickListener() {

@Overridepublic void onClick(View arg0) {

// TODO Auto-generated method stubstartActivity(new Intent(MainActivity.this,

LocationV10.class));

}});

btnPoint.setOnClickListener(new OnClickListener() {

@Overridepublic void onClick(View arg0) {

// TODO Auto-generated method stubstartActivity(new Intent(MainActivity.this,

SearchOnePoint.class));

}});

btnStreet.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {

Trang 98

Page 99: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

startActivity(new Intent(MainActivity.this, SearchTwoPoint.class));

}});

Button search2011= (Button)findViewById(R.id.btnSearch2011); search2011.setOnClickListener(new OnClickListener() {

@Overridepublic void onClick(View arg0) {

// TODO Auto-generated method stubIntent i = new

Intent(MainActivity.this,Android1.class);startActivity(i);

}});

- Thi t k class SearchOnePoint v n ph i k th a t l pế ế ẫ ả ế ừ ừ ớ

MapActivity:

o Kh i t o hi n th m c đ nh cho map:ở ạ ể ị ặ ị

int lat = (int)(10.314919*1000000);int lng = (int)(107.050781*1000000);GeoPoint pt = new GeoPoint(lat,lng);mapView.getController().setZoom(10);mapView.getController().setCenter(pt);mapView.getController().animateTo(pt);

o Phân tích đ a chu i thành đ a ch trên b n đ ị ổ ị ỉ ả ồ

AddresstoGeoPoint addresstoPoint = new AddresstoGeoPoint();JSONObject json=addresstoPoint.getLocationInfo(locationName);p =addresstoPoint. getGeoPoint(json);

o Thêm 1 đánh d u vào v trí vào b n đ ấ ị ả ồ

MapOverlay mapOverlay = new MapOverlay(); List<Overlay> listOfOverlays = mapView.getOverlays(); listOfOverlays.clear(); listOfOverlays.add(mapOverlay);

Trang 99

Page 100: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

o L p MapOverlay vẽ 1 đ i t ng Overlay vào b n đớ ố ượ ả ồ

super.draw(canvas, mapView, shadow);Point screnPts = new Point();mapView.getProjection().toPixels(p, screnPts);Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.bubble);canvas.drawBitmap(bmp, screnPts.x, screnPts.y-34,null);return true;

- Phân tích l p SearchTwoPoint v n extend l p MapActivityớ ẫ ớo Vẽ đ ng d a trên ma tr n đi m nh sau : ườ ự ậ ể ư

GeoPoint startGP = new GeoPoint( (int) (Double.parseDouble(lngLat[1]) *

1E6), (int) (Double .parseDouble(lngLat[0]) * 1E6)); geoPoint = startGP; myMapView.getOverlays().add(new

DirectionPathOverlay(startGP, startGP)); // NAVIGATE THE PATH GeoPoint gp1; GeoPoint gp2 = startGP; for (int i = 1; i < pairs.length; i++) { lngLat = pairs[i].split(","); gp1 = gp2; // watch out! For GeoPoint, first:latitude,

second:longitude gp2 = new GeoPoint((int)

(Double.parseDouble(lngLat[1]) * 1E6), (int) (Double.parseDouble(lngLat[0])

* 1E6)); myMapView.getOverlays().add(new

DirectionPathOverlay(gp1, gp2)); Log.d("xxx", "pair:" + pairs[i]); // END POINT myMapView.getOverlays().add(new

DirectionPathOverlay(gp2, gp2)); calculator=

CalculationByDistance(startGP,gp2);

Trang 100

Page 101: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

myMapView.getController().animateTo(startGP);

- Thi t k l p GPSdemoế ế ớo L y thông tin v d ch v GPS nh sau :ấ ề ị ụ ư

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

locationListener = new GPSLocationListener(); locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, locationListener);

o Chuy n đ i t Position sang v trí th t ể ổ ừ ị ậ

public String ConvertPointToLocation(GeoPoint point) { String address = ""; Geocoder geoCoder = new Geocoder( getBaseContext(), Locale.getDefault()); try { List<Address> addresses = geoCoder.getFromLocation( point.getLatitudeE6() / 1E6, point.getLongitudeE6() / 1E6, 1);

if (addresses.size() > 0) { for (int index = 0; index <

addresses.get(0).getMaxAddressLineIndex(); index++) address += addresses.get(0).getAddressLine(index) + " "; } } catch (IOException e) { e.printStackTrace(); } return address;

Trang 101

Page 102: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

}

- Thi t k L p AddresstoGeoPoint nh sau :ế ế ớ ưo L y d li u m ng chu i JSON khi tr vấ ữ ệ ả ổ ả ề

String[] getDirectionData(String srcPlace, String destPlace) { //AddresstoGeoPoint searchmap = new AddresstoGeoPoint(); JSONObject json1 =getLocationInfo(srcPlace); JSONObject json2=getLocationInfo(destPlace); GeoPoint geo1 =getGeoPoint(json1); GeoPoint geo2 =getGeoPoint(json2); String urlString = "http://maps.google.com/maps?f=d&hl=en&saddr=" + geo1.getLatitudeE6()/1E6+","+geo1.getLongitudeE6()/1E6 + "&daddr=" + geo2.getLatitudeE6()/1E6+","+geo2.getLongitudeE6()/1E6+ "&ie=UTF8&0&om=0&output=kml"; // tv.setText(urlString); Log.d("URL", urlString); Document doc = null; HttpURLConnection urlConnection = null; URL url = null; String pathConent = ""; try {

url = new URL(urlString.toString()); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.connect(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); doc = db.parse(urlConnection.getInputStream());

} catch (Exception e) { }

NodeList nl = doc.getElementsByTagName("LineString"); for (int s = 0; s < nl.getLength(); s++) { Node rootNode = nl.item(s);

Trang 102

Page 103: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

NodeList configItems = rootNode.getChildNodes(); for (int x = 0; x < configItems.getLength(); x++) { Node lineStringNode = configItems.item(x); NodeList path = lineStringNode.getChildNodes(); pathConent = path.item(0).getNodeValue(); } } String[] tempContent = pathConent.split(" "); // str= tempContent; return tempContent; // */ return null; }

o Phân tích chu i đ a ch thành đ i t ng JSONổ ị ỉ ố ượ

public JSONObject getLocationInfo(String address) {String compare = address.replace(" ","+");String a

="http://maps.google.com/maps/api/geocode/json?address="+compare+",hochiminh,vn&sensor=false";

HttpGet httpGet = new HttpGet(a);HttpClient client = new DefaultHttpClient();HttpResponse response;StringBuilder stringBuilder = new StringBuilder();

try {response = client.execute(httpGet);HttpEntity entity = response.getEntity();InputStream stream = entity.getContent();int b;while ((b = stream.read()) != -1) {

stringBuilder.append((char) b);}

} catch (ClientProtocolException e) {} catch (IOException e) {}

s JSONObject jsonObject = new JSONObject();try {

jsonObject = new JSONObject(stringBuilder.toString());

} catch (JSONException e) {// TODO Auto-generated catch block

Trang 103

Page 104: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

e.printStackTrace();}

return jsonObject;}

Chương 5: TỔNG KẾT

5

5.1 Về Mặt Lý Thuyết

- Tìm hiểu các đặc điểm và điểm mạnh của các ứng dụng chạy trên điện

thoại android, bada.

- Ứng dụng webservice vào điện thoại di động.

- Tìm hiểu căn bản về lập trình Bada, Android.

5.2 Về Mặt Ứng Dụng.

- Hoàn tất một số yêu cầu sau :

o Tìm kiếm các vị trí dựa trên nền webservice sẳn có, truy xuất

và cập nhật thông tin dựa trên websevice.

o Sử dụng kết hợp 2 nền tảng vào ứng dụng.

5.3 Hướng Phát Triển.

- Đi sâu vào tìm hiểu webservice.

- Ứng dụng có khả năng chạy đa nền tảng trên thiết bị di động.

Trang 104

Page 105: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

Trang 105

Page 106: Chương · Web viewAndroid liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn,

TÀI LIỆU THAM KHẢOTiếng Anh :

1. Ben Morris and Manfred Bortenschlager,Jon Lansdell, Cheng

Luo, Michelle Somerville “Introduction to bada” 2010.

2. Sayed Y. Hashimi and Satya Komatineni “Pro android” – 2009

Website

1. http://www.zonums.com/gmaps/digipoint.php

2. http://www.badaforums.net/forums/bada-development/

3. http://developer.decarta.com/docs/read/bada_api

4. http://www.badadev.com/bada-sample-project-simple-greeting/

5. http://www.androidpeople.com/android-xml-parsing-tutorial-using-

saxparser

6. http://www.androidpeople.com/android-custom-dialog-example

Trang 106