Tên đề tài Nghiên cứu công nghệ phát triển Trò chơi trên điện thoại di động sử dụng hệ điều hành android ứng dụng vào xây dựng trò chơi Xếp hình với 2 chức năng: người chơi offline với
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM
KHOA TIN HỌC
KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN
NGÀNH CÔNG NGHỆ THÔNG TIN
Trang 2Đầu tiên, Em xin gởi lời cảm ơn chân thành đến các Thầy, Cô ở khoa Tin học, trường Đại học Sư Phạm, Đại học Đà Nẵng, đã tận tình dạy dỗ, dìu dắt em suốt các năm theo học đại học
Em xin gửi lời cảm ơn đến thầy Lê Văn Sơn, người tận tình hướng dẫn, giúp đỡ, động viên em hoàn thành luận văn này
Cuối cùng, con cảm ơn Ba, Mẹ và những người thân đã khích lệ, động viên con trong thời gian học tập, nghiên cứu để có được thành quả như ngày hôm nay
Em chân thành cảm ơn
Đà Nẵng, ngày 08 tháng 05 năm 2013 Sinh viên thực hiện
Nguyễn Văn Phương
Trang 31 Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của thầy Lê Văn Sơn
2 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm
Sinh viên
Nguyễn Văn Phương
Trang 4MỤC LỤC
MỞ ĐẦU ……….1
I Đặt vấn đề 1
II Mục đích, ý nghĩa và phạm vi đề tài 1
II.1 Tên đề tài 1
II.2 Mục đích và ý nghĩa 2
II.3 Phạm vi đề tài 2
III Những việc sẽ giải quyết trong đề tài 2
III.1 Các bước thực hiện 2
III.2 Dự kiến kết quả đạt được 2
IV Nội dung luận văn tốt nghiệp 3
CHƯƠNG I GIỚI THIỆU HỆ ĐIỀU HÀNH ANDROID……… 4
I Sơ lược về các hệ điều hành 4
I.1 Các chức năng chính của hệ điều hành 4
I.2 Các thành phần của hệ điều hành 5
I.3 Phân loại hệ điều hành 5
II Tổng quan về hệ điều hành Android 6
II.1 Lịch sử Android 6
II.2 Các phiên bản của hệ điều hành Android (Android Platform) 7
II.3 Ứng dụng của Android và sự phát triển của Android trong tương lai 7
III Kiến trúc hệ điều hành Android 8
III.1 Các thành phần cấu tạo nên Android (Android Architecture) 8
III.2 Hệ thống tập tin trên hệ điều hành Android 11
III.3 So sánh giữa các hệ điều hành 13
III.4 Các thành phần tạo nên ứng dụng Android (Android Application Components) 14
CHƯƠNG II LẬP TRÌNH ỨNG DỤNG TRÊN HĐH ANDROID……… 23
I Lập trình ứng dụng Android 23
I.1 Thiết lập môi trường phát triển ứng dụng 23
I.2 Các thành phần trong Android Project 23
II Mô hình Web service 25
Trang 5II.3 Kiến trúc của dịch vụ Web 28
II.4 Xây dựng dịch vụ Web 29
III Công nghệ Bluetooth và lập trình với Bluetooth trên Android 31
III.1 Khái niệm công nghệ Bluetooth 31
III.2 Lập trình với Bluetooth trên Android 31
CHƯƠNG III XÂY DỰNG ỨNG DỤNG TRÒ CHƠI XẾP HÌNH…… 37
I Phân tích 37
I.1 Mô tả bài toán 37
I.2 Luật chơi và cách chơi 39
I.3 Cách tính điểm 39
I.4 Đối tượng người chơi 40
I.5 Phân tích yêu cầu 40
II Thiết kế 41
II.1 Use Case 41
II.2 Xây dựng kiến trúc chương trình 42
II.3 Xây dựng cấu trúc dữ liệu và thuật toán 44
II.4 Biểu đồ lớp 47
II.5 Biểu đồ trạng thái 49
II.6 Các màn hình chính trong trò chơi 51
II.7 Cài đặt và kiểm thử 55
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN……….66
III Kết quả đề tài 66
III.1 Những kết quả đã làm được 66
III.2 Những vấn đề chưa làm được 66
IV Hướng phát triển đề tài 66
IV.1 Lưu trạng thái của trò chơi khi Người chơi rời khỏi ứng dụng 67
IV.2 Hoàn thiện mô hình phát triển trò chơi online 67
PHỤ LỤC ………68
TÀI LIỆU THAM KHẢO……… 69
Trang 6Hình 6 Truyền Intent và số liệu sang Activity khác 21
Trang 7Hình 16 Biểu đồ lớp AndroidFileIO 47
Hình 21 Biểu đồ trạng thái cho toàn bộ hệ thống 50
Hình 25 Màn hình đăng nhập theo tài khoản đăng ký ở hệ thống 52
Hình 26 Màn hình đăng nhập theo tài khoản không cần đăng kí bởi
hệ thống
53
Hình 29 Màn hình thông tin về tác giả của sản phẩm 54
Hình 30 Màn hình thông tin chi tiết của người chơi 55
Trang 8STT TÊN BẢNG TRANG
Bảng 3 Bảng hai phương thức trong một activity 15
Bảng 7 Các công cụ phát triển ứng dụng về phần cứng 68
Bảng 8 Các công cụ phát triển ứng dụng về phần mềm 68
Trang 9STT TÊN VIẾT TẮT TÊN ĐẦY ĐỦ
Trang 10MỞ ĐẦU
I Đặt vấn đề
Từ lâu trò chơi là một phần không thể thiếu trên các máy điện thoại di động Một trong số đó là trò chơi Snake được bắt nguồn từ một chiếc điện thoại di động mà Nokia trình làng năm 1997 có tên là Nokia 6110 đã mở ra một kì nguyên mới cho lĩnh vực lập trình trò chơi trên điện thoại di động
Nhưng với sự hạn chế về đồ họa, tốc độ xử lý, cốt truyện trò chơi đã nhanh chóng gây nhàm chán đối với người chơi Và các công nghệ lập trình game lần lượt
ra đời như Brew, App Store, J2ME và đặc biệt là Android Android là hệ điều hành
trên điện thoại di động được xây dựng dựa trên nền tảng Linux Ban đầu nó được phát triển bởi Android Inc, và đã được Google mua lại, và gần đây là liên minh thiết
bị cầm tay mở rộng (Open Handset Alliance) Android cho phép các nhà phát triển
viết mã được quản lý bằng ngôn ngữ Java, điều khiển thiết bị thông qua các thư viện Java do Google phát triển
Các thiết bị di động sử dụng hệ điều hành Android với phần cứng mạnh mẽ, các nút bấm chơi trò chơi chuyên dụng Thế giới trò chơi trên smart phone lại gần như thống trị cả thế giới Trò chơi được xây dựng trên các thiết bị di động này có hình ảnh mượt mà hơn, tốc độ xử lý mạnh mẽ hơn cùng với những hiệu ứng rất gần với thực tế hơn
Cùng với đó là các loại hình trò chơi trí tuệ luôn có khả năng thu hút số đông người chơi, đặc biệt là số người chơi thích thử thách, đấu trí
Vì vậy em quyết định phát triển trò chơi Xếp hình với phiên bản Slide Block trên thiết bị di động sử dụng hệ điều hành Android(2.2) Với mục đích tìm hiểu rõ hơn
về Android, các tính năng của nó và nâng cao kĩ thuật lập trình cá nhân Hi vọng sẽ tạo ra được một sản phẩm có ích, đẹp mắt thu hút người chơi
II Mục đích, ý nghĩa và phạm vi đề tài
II.1 Tên đề tài
Nghiên cứu công nghệ phát triển Trò chơi trên điện thoại di động sử dụng hệ điều hành android ứng dụng vào xây dựng trò chơi Xếp hình với 2 chức năng: người chơi offline với 3 cấp độ Dễ, Bình thường,Khó, và người chơi cũng có thể chơi online với nhiều người chơi khác thông qua bluetooth và internet Người chơi có thể
Trang 11đăng nhập vào trò chơi thông qua 2 quyền user: người chơi đăng nhập với quyền Guest thông tin của người chơi không được lưu trữ lại trên hệ thống, và người chơi đăng nhập với tài khoản đã đăng kí của hệ thống thì thông tin sẽ được lưu trữ lại
II.2 Mục đích và ý nghĩa
Xây dựng ứng dụng trò chơi trên với mục đích và ý nghĩa như sau:
Tạo ra một ứng dụng trò chơi Xếp hình trên thiết bị di động sử dụng hệ điều hành Android với giao diện trực quan, đẹp mắt phục vụ nhu cầu giải trí đặc biệt là những người đam mê, thích thử thách Trí tuệ
Nâng cao kĩ năng lập trình, quản lý dự án, giải quyết vấn đề
Nghiên cứu và nắm bắt được nền tảng lập trình trên hệ điều hành android
Sử dụng thành thạo một số công cụ hỗ trợ trong môi trường làm việc
II.3 Phạm vi đề tài
Ứng dụng trên các thiết bị di động sử dụng trên hệ điều hành Android 2.2 có
hỗ trợ kết nối Internet và Bluetooth Slide Block là một trò chơi trí tuệ có khả năng:
Người chơi có thể chơi nhiều cấp độ Nâng cao kĩ năng logic cũng như đây là một hình thức giải trí
Chơi với bạn bè trên thiết bị di động có hỗ trợ kết nối Internet, nâng tính cạnh tranh giữa các người chơi, kích thước màn hình tương tự nhau
III Những việc sẽ giải quyết trong đề tài
III.1 Các bước thực hiện
Tìm hiểu thông tin liên quan
Xem xét bàn bạc tính khả thi của các yêu cầu trong ứng dụng
Xác định thời gian thực hiện và hoàn thành dự án
Lên kế hoạch để thực hiện dự án
Phân tích các yêu cầu của dự án
Phân tích thiết kế từng chi tiết của từng module
Dựa vào bảng phân tích thiết kế tiến hành code ứng dụng
Tiến hành kiểm thử ứng dụng
Báo cáo sẽ được viết song song trong suốt quá trình làm dự án
III.2 Dự kiến kết quả đạt được
Slide Block hi vọng sẽ đáp ứng được một số yêu cầu như sau:
Trang 12 Xây dựng hoàn chỉnh 2 chức năng
Đồ họa của ứng dụng đẹp mắt, các thao tác khi chơi đơn giản và tiện dụng
IV Nội dung luận văn tốt nghiệp
Toàn bộ luận văn gồm có 3 chương và phần mở đầu:
Mở đầu
Chương 1: Hệ điều hành Android
Chương 2: Tìm hiểu lập trình ứng dụng trên nền tảng Android
Chương 3: Xây dựng ứng dụng trò chơi Xếp hình
Kết luận và hướng phát triển đề tài
Trang 13CHƯƠNG I GIỚI THIỆU HỆ ĐIỀU HÀNH
ANDROID
I Sơ lược về các hệ điều hành
Hệ điều hành là chương trình chạy trên hệ thống máy tính, quản lý các tài
nguyên trên máy tính và là môi trường cho các chương trình ứng dụng chạy trên nó
[6]
Ngày nay, khái niệm hệ điều hành không chỉ là trên máy mà còn được mở
rộng cho nhiều thiết bị điện tử khác chẳng hạn như điện thoại thông minh (smart
phone), các thiết bị cầm tay PDA
Như vậy hệ điều hành di động là hệ điều hành chạy trên hệ thống máy có tính
di dộng cao Với đặc thù đó, hệ điều hành di động phải có những khả năng đặc biệt
mà những hệ điều hành thông thường không có được Chẳng hạn như nó phải chạy
trên hệ thống máy có cấu hình máy hạn chế về tốc độ xử lý, bộ nhớ sử dụng, phải
chạy được ổn định liên tục trong một thời gian dài mà chỉ sử dụng một lượng điện
năng nhỏ, trong suốt thời gian chạy đó có thể duy trì các kết nối mạng không dây để
đảm bảo việc liên lạc
Một số hệ điều hành tiêu biểu:
Trên máy tính cá nhân: MS DOS, MS WINDOW, MACOS, LINUX,
UNIX
Trên điện thoại thông minh: Android, Symbian, Window Mobile, iPhone
OS, BlackBerry, S60, Bada OS, Palm OS
Ngoài ra còn có các hệ điều hành chạy trên mainframe, server, thẻ chip
I.1 Các chức năng chính của hệ điều hành
Hệ điều hành có 2 chức năng chính sau:
Quản lý chia sẻ tài nguyên Tài nguyên ở đây là bao gồm:
+ Tài nguyên phần cứng (CPU, bộ nhớ, các thiết bị)
+ Tài nguyên phần mềm (các file, chương trình dùng chung)
Trang 14 Tạo lập môi trường ảo ít phụ thuộc vào phần cứng để các phần mềm ứng dụng hoạt động, phục vụ người dùng [6]
I.2 Các thành phần của hệ điều hành
Hệ điều hành nói chung gồm các thành phần sau:
I.3 Phân loại hệ điều hành
Theo loại thiết bị mà hệ điều hành hoạt động gồm có:
Hệ điều hành dành cho máy MainFrame
Hệ điều hành dành cho máy Server
Hệ điều hành dành cho máy nhiều CPU
Hệ điều hành dành cho máy tính cá nhân (PC)
Hệ điều hành dành cho máy PDA
Hệ điều hành dành cho máy chuyên biệt
Hệ điều hành dành cho thẻ chip (SmartCard)
Theo số user và số chương trình cùng hoạt động gồm có:
Hệ điều hành đơn nhiệm một người dùng
Hệ điều hành đa nhiệm một người dùng
Hệ điều hành đa nhiệm nhiều người dùng
Theo góc độ người dùng gồm có:
Một người dùng
Trang 15 Nhiều người dùng (mạng ngang hàng, mạng có máy chủ)
Theo hình thức xử lý:
Hệ thống xử lý theo lô
Hệ thống xử lý theo lô đa chương
Hệ thống chia sẻ thời gian
Tháng 7 năm 2005, Google mua lại Android Inc, đó là tên một dự án do một số công ty nhỏ thành lập có trụ sở tại Palo Alto, California, USA Những nhà đồng sáng lập nên Android được chuyển sang làm việc tại Google trong đó có Andy Rubin ( đồng sáng lập công ty Danger ), Rich Miner (đồng sáng lập công ty Wildlife Communication), Nick Sears (từng là phó chủ tịch T-Mobile) và Chris white (trưởng nhóm thiết kế và phát triển giao diện tại WebTV) Tại thời điểm đó có rất ít thông tin về dự án Android, ngoại trừ việc họ đang phát triển phần mềm cho điện thoại di động [7]
Ở trụ sở của Google, nhóm do Rubin đứng đầu đã phát triển một nền tảng thiết
bị di động dựa trên nhân Linux Đến tháng 9 năm 2007, InformationWeek đăng tải một nghiên cứu của Evalueserve cho biết Google đã nộp đơn xin cấp bằng sáng chế trong lĩnh vực điện thoại di động [7]
Ngày 5 tháng 11 năm 2007, Liên minh thiết bị cầm tay mở rộng OHA (Open Handset Alliance) bao gồm nhiều công ty trong đó có Google, HTC, Intel, LG, Motorola, Nvidia, Qualcomm, Samsung Elecstronic, T-Mobile, Sprint Nextel, Tập đoàn Marvell Technology, Texas Instruments, Tập đoàn Broadcom được thành lập
Trang 16lập OHA, họ đồng thời giới thiệu Android một nền tảng cho thiết bị di động được xây dựng trên nhân Linux version 2.6 [7]
II.2 Các phiên bản của hệ điều hành Android (Android Platform)
Hình 1 Biểu tượng cho một số phiên bản Android
II.3 Ứng dụng của Android và sự phát triển của Android trong tương lai
Android chỉ mới hiện diện trên thị trường điện thoại di động vào năm 2008 nhưng đã có những bước tiến vượt bậc trong lĩnh vực phát triển ứng dụng cho thiết
bị Mobile và Smartphone [7]
Tuy là một nền tảng đi sau nhưng số lượng ứng dụng Android tăng nhanh chóng, từ năm 2008 đến tháng 1 năm 2012 thì số ứng dụng của Android lên đến 130.000 ứng dụng tăng gấp 6 lần [7]
Các hãng sản xuất thiết bị di động như Samsung, HTC, Motorola, LG, Acer, Sony đã có hướng chọn việc phát triển các thiết bị di động của mình chạy hệ điều hành Android làm chiến lược Mặc dù hầu hết các ứng dụng hiện trên Android Market đa số là miễn phí ( 57 % ) nhưng bù lại Android lại đang có đông đảo người
sử dụng ưa thích cho đến hiện tại và số lượng sẽ còn tiếp tục tăng trong tương lai Bên cạnh đó sự ra mắt của các dòng sản phẩm Smartphone chạy nền Android gần đây như sự bùng nổ mạnh mẽ của công nghệ này, chứng tỏ vai trò của mình trong thế giới thiết bị thông minh
Trang 17Lấy dẫn chứng cụ thể hãng điện thoại Samsung ra mắt chiếc điện thoại đình đám Samsung Galaxy SII chạy hệ điều hành Android 2.3 vào ngày 22 tháng 3 năm
2011 và ngày 14 tháng 3 vừa qua cho ra mắt chiếc điện thoại Samsung Galaxy S4
Hình 2 Samsung Galaxy S 4
Đầu tháng 3 năm 2011 Google cho phát hành phiên bản SDK r10 hỗ trợ công
cụ phát triển ứng dụng cho nền tảng Android 3.0, một nền tảng mới đầy hứa hẹn mở
ra kỷ nguyên cho các thiết bị thông minh Đặc biệt hơn phiên bản này đã được cài đặt trên một dòng máy của Motorola-Xoom Tablet [7]
III Kiến trúc hệ điều hành Android
III.1 Các thành phần cấu tạo nên Android (Android Architecture)
Trang 18III.1.1 Tầng Application
Android cung cấp bộ ứng dụng cốt lõi bao gồm một ứng dụng email, chương trình tin nhắn SMS, lịch, bản đồ, trình duyệt, địa chỉ liên hệ Tất cả các ứng dụng được viết bằng ngôn ngữ lập trình Java
III.1.2 Tầng Application Framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà phát triển, lập trình viên khả năng xây dựng các ứng dụng vô cùng phong phú và sáng tạo Các nhà phát triển, lập trình viên có thể tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập, chạy các dịch vụ nền, thiết lập hệ thống cảnh báo,
và thêm các thông báo trạng thái và nhiều hơn nữa
Các lập trình viên có toàn quyền truy cập đến các API trong cùng một Framework, thường được sử dụng bởi các ứng dụng cơ bản Kiến trúc của tầng ứng dụng được thiết kế đơn giản cho việc tái sử dụng các thành phần; bất kỳ ứng dụng nào cũng có thể public và các ứng dụng khác có thể sử dụng chúng Cơ chế này cho phép các thành phần tương tự được thay thế bởi người dùng
Tất cả các ứng dụng cơ bản là một tập hợp các dịch vụ và các hệ thống, bao gồm:
Có nhiều thành phần phong phú và mở rộng cho việc thể hiện (Views)
UI và xây dựng ứng dụng như List, Grid, Text box, Button và thậm chí các mã nhúng cho một trình duyệt web
Content Providers cho phép các ứng dụng có thể truy cập dữ liệu từ những ứng dụng khác ( như là Contact) hoặc để chia sẻ dữ liệu với các ứng dụng khác
Một Resource Manager cung cấp truy cập đến các tài nguyên Phi Mã (Non-code) như Strings, Graphic, và các file Layout
Một Notification Manager cho phép tất cả các ứng dụng hiển thị những thông báo trên thanh trạng thái
Một Activity Manager thì quản lý vòng đời của một ứng dụng và cung cấp một Navigation Backstack phổ biến
Trang 19 Sureface Manager: quản lý truy cập để hiển thị các subsystem và seamlessly
Libwebcore một engine web mạnh mẽ chứa những tính năng của trình duyệt web Android và trình duyệt web nhúng
SGL có các thư viện hỗ trợ cho lập trình 2D
3D Libraries OPEN GL hỗ trợ cho lập trình 3D
Freetype
SQLite một cơ sở dữ liệu nhỏ gọn nhưng mạnh mẽ cho tất cả các ứng dụng
III.1.4 Tầng Android Runtime
Android bao gồm một tập hợp các thư viện cơ bản cung cấp hầu hết các chức năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java
Mỗi ứng dụng Android chạy trong quá trình riêng của nó với trường hợp riêng của mình, của máy ảo Dalvik Dalvik được viết sao cho thiết bị có thể chạy nhiều máy ảo (VMs) một cách hiệu quả Các máy ảo Dalvik thực thi các file trong một Dalvik Executable (.dex) được tối ưu hóa trong bộ nhớ một cách tối thiểu VM dựa trên đăng ký và chạy các lớp được biên dịch bởi trình biên dịch ngôn ngữ Java mà được chuyển đổi thành định dạng file dex bởi các công cụ “dx”
Các máy ảo Dalvik dựa trên nhân Linux cho các chức năng cơ bản như luồng
và quản lý bộ nhớ ở mức độ thấp
Trang 20III.1.5 Linux Kernel
Android được xây dựng dựa trên Linux phiên bản 2.6 cho hệ thống bao gồm các dịch vụ cốt lõi như bảo mật, quản lý bộ nhớ, quản lý tiến trình, mạng ngăn xếp (network stack) và mô hình điều khiển (driver model) Hạt nhân (Kernel) cũng hoạt động như một lớp trừu tượng hóa giữa phần cứng và phần còn lại của phần mềm ngăn xếp
III.2 Hệ thống tập tin trên hệ điều hành Android
Vì được phát triển từ nhân Linux nên hệ thống tập tin trên Android cực kỳ giống hệ thống tập tin trên Linux như là về cách tổ chức, những quyền hạn của người sử dụng lên tập tin
III.2.1 Tổng quan về hệ thống tập tin trên Android
Trong Android, các tập tin được tổ chức thành các thư mục, theo mô hình phân cấp Tham chiếu đến một file bằng tên và đường dẫn Các câu lệnh thao tác tập tin cho phép thực hiện các chức năng như dịch chuyển, sao chép toàn bộ thư mục cùng với các thư mục con chứa trong nó
Có thể sử dụng các ký tự, dấu gạch dưới, chữ số, dấu chấm và dấu phẩy để đặt tên tập tin Không được bắt đầu một tên tập tin bằng dấu chấm hay chữ số Những
ký tự khác như „/‟, „?‟, „*‟, là ký tự đặc biệt được dành riêng cho hệ thống Chiều dài của tên file có thể tới 256 ký tự Trong hệ điều hành Android có sự phân biệt tên file chữ hoa và chữ thường, điều đó có nghĩa là trong cùng 1 thư mục có thể tồn tại những file có tên là File, FILE, file và chúng là những file khác nhau
Tất cả các file trong Android có chung cấu trúc vật lý là chuỗi các byte (byte stream) Cấu trúc thống nhất này cho phép Android áp dụng khái niệm file cho mọi thành phần dữ liệu trong hệ thống Thư mục cũng như các thiết bị được xem như file Chính việc xem mọi thứ như các file cho phép Android quản lý và chuyển đổi
dữ liệu một cách dễ dàng Một thư mục chứa các thông tin về thư mục, được tổ chức theo một định dạng đặc biệt Các thành phần được xem như các file, chúng
được phân biệt dựa trên kiểu file: ordinary file, directory file, character device file,
và block device file
III.2.2 Các kiểu file trên Android
Trong nhiều hệ điều hành như Window, người ta phân biệt rõ file (tập tin)và folder (hay directory: thư mục) là 2 thành phần khác hẳn nhau Tuy nhiên trên hệ
Trang 21điều hành Android (cũng như Linux) thì coi directory cũng là file và nó là một loại file đặc biệt Thực tế còn một số loại file nữa có thể liệt kê theo bảng sau:
B File kiểu khối (block-type special file)
C File kiểu ký tự (character-type file)
L Liên kết tượng trưng (symbolic link)
- File bình thường (regular file)
Bảng 1 Kiểu file trong Linux III.2.3 Tổ chức quyền sở hữu và quyền hạn trên file
Tương tự trên hệ thống Linux, trên hệ điều hành Android, một file có thể liên kết với một người sử dụng và một nhóm người sử dụng Sự liên kết đó là một tập hợp các quyền hạn truy cập bao gồm quyền được phép đọc (read), được phép ghi (write) và được phép thực thi (excute)
Cụ thể như sau: Một file sẽ có những quyền hạn tương ứng với 9 ký tự theo mẫu sau: Với ký tự r w x nghĩa là có quyền tương ứng với ký tự viết tắt đó, - nghĩa
là không có quyền hạn đó
r/- w/- x/- r/- w/- x/- r/- w/- x/-
Bảng 2 Quyền sở hữu và quyền hạn trên file
3 ký tự đầu tiên là quyền hạn chủ nhân file
3 ký tự giữa là quyền hạn của nhóm tài khoản sở hữu file
3 ký tự cuối là quyền hạn của những người không thuộc nhóm sở hữu file
Trang 22III.2.4 Cây thư mục trên hệ điều hành Android
Thư mục (có thể gọi là file) root là thư mục gốc của tất cả các file thư mục còn lại Dưới nó có chứa một số file thư mục hệ thống Mỗi thư mục (trừ thư mục root) đều có một thư mục cha chứa nó, bản thân nó cũng có thể có nhiều file thư mục con
III.3 So sánh giữa các hệ điều hành
III.3.1 So sánh giữa hệ điều hành trên di dộng và hệ điều hành trên máy tính
Giống nhau về bản chất hệ điều hành, những thành phần lõi hệ điều
hành
Khác nhau:
Hệ điều hành di động: hoạt động trên các thiết bị nhỏ gọn, hạn chế nhất là
về vấn đề năng lượng Pin thì có hạn, vì thế tất cả các thành phần trên thiết bị đều phải tối ưu để tiết kiệm pin, điều đó nảy sinh nhiều mâu thuẫn với nhu cầu sử dụng của người dùng
Đa số các hệ điều hành trên desktop đều cho phép nhiều ứng dụng chạy đồng thời (đa nhiệm) và khá tự do Trong khi đó, các hệ điều hành chạy
Trang 23trên di động thường không cho phép chạy đa nhiệm, hoặc có đa nhiệm thì các ứng dụng bị giới hạn khá nhiều
Việc hiển thị giao diện trên một khung hình nhỏ cũng là điều khó khăn hơn so với hệ điều hành chạy trên desktop, thường thì trên hệ điều hành
di động gần như không có giao diện cửa sổ cho phép nhiều ứng dụng cũng hiển thị một lúc mà chỉ là một giao diện mà trên đó mỗi thời điểm chỉ hiển thị một giao diện của một ứng dụng mà thôi
Hệ điều hành di động phải có khả năng hoạt động liên tục không ngừng nghĩ để đảm bảo liên lạc, đảm bảo kết nối của thiết bị tới mạng không dây cần kết nối trong khi vẫn di chuyển Vì thế cần được thiết kế đặc biệt hơn so với hệ điều hành trên desktop
III.3.2 So sánh hệ điều hành Android với các hệ điều hành di động khác
Giống nhau: Đều là hệ điều hành di động nên mang đầy đủ bản chất của hệ
điều hành di động nói chung
Các ứng dụng chạy trên Android được viết bằng Java trong khi đó, ứng dụng trên các hệ điều hành khác chủ yếu viết bằng C/C++/Object C Ngay cả Symbian có hỗ trợ Java thì cũng khác so với Android, trong khi
hệ điều hành Android sử dụng máy ảo Java là Dalvik VM do chính Google phát triển thì Symbian lại sử dụng máy ảo Java là J2ME của Sun
III.4 Các thành phần tạo nên ứng dụng Android (Android Application
Components)
III.4.1 Activity
Khái niệm Activity
Trang 24Activity là một thành phần cơ bản của ứng dụng Android Mỗi activity thực hiện một chức năng của ứng dụng, trong một ứng dụng Android luôn có một MainActivity, khi ta chạy ứng dụng thì Activity này được gọi thực thi trước và thể hiện những giao diện hay các control lên màn hình để người dùng có thể tương tác Một ứng dụng thường bao gồm nhiều activity có mối liên quan với nhau, và các activity này hoạt động theo cơ chế hàng đợi (queue mechanism ) có nghĩa khi một activity đang hoạt động nhưng một activity khác được kích hoạt hoặc activity
đó có độ ưu tiên lớn hơn (priority) thì activity trước đó sẽ chuyển sang trạng thái Stop hoặc Pause để activity này thực hiện
Tạo một Activity
Để tạo một activity bạn cần tạo một lớp con kế thừa từ lớp Activity Trong lớp con bạn cần thực hiện các phương thức callback (callback method) mà hệ thống sẽ thực hiện khi chuyển đổi giữa các activity trong vòng đời của nó, bao gồm các trạng thái như Khởi tạo, Dừng, Chạy lại hay Ngừng hẳn Trong đó có 2 phương thức hay dùng nhất là:
Bảng 3 Bảng phương thức trong một activity
Thực hiện một giao diện người dùng Giao diện người dùng cho một hoạt động được cung cấp bởi một hệ thống các quan điểm, đối tượng dẫn xuất từ lớp View Mỗi đối tượng View được trình bày trên không gian hình chữ nhật (Màn hình Mobile) và ta có thể xử lý những sự kiện thông qua các câu lệnh trên các đối tượng View đó
onCreate() Phương thức này dùng để khởi tạo một Activity, ở trong
phương thức này bạn nên khởi tạo các thành phần thiết yếu cho activity đó Quan trọng nhất là bạn phải gọi câu lệnh
setContentView() để định nghĩa layout cho activity đó
một activity khác Bạn có thể thêm những câu lệnh hay gọi activity khác khi điều này xảy ra
Trang 25 Khai báo activity trong manifest Bạn cần khai báo activity trong tập tin AndroidManifest để nó có thể truy cập vào hệ thống Để khai báo cần cần mở tập tin AndroidManifest trong Project của bạn rồi thêm một thẻ <activity> ở bên trong cặp thẻ <application> như sau:
<activity android:name= ".ExampleActivity" android:icon= "@drawable/app_icon" >
<intent-filter>
<action android:name= "android.intent.action.MAIN" />
<category android:name= "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Các phần tử trong thẻ tab <action> xác định thực hiện hành động của ứng dụng đối với activity đó Còn các phần tử trong thẻ <category> xác định activity này nên được liệt kê khi khởi tạo ứng dụng hệ thống (cho phép người dùng gọi activity đó)
Bắt đầu một Activity
Trang 26Bạn có thể gọi một activity bằng phương thức startActivity(), thông qua Intent
mà bạn đã miêu tả về activity đó khi bạn muốn bắt đầu
có thể xử lý các intent, thì người dùng có thể chọn bất kỳ một trong các intent để sử dụng Ví dụ nếu bạn muốn cho người dùng gửi email, bạn có thể tạo ra các intent sau đây:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
startActivity(intent);
Các EXTRA_MAIL được thêm vào intent là một mảng các chuỗi địa chỉ email
mà sẽ được gửi.Khi một ứng dụng email hồi đáp intent này, nó sẽ đọc mảng chuỗi được cung cấp bên trong extra và thay thế chúng trong trường “To” của Form gửi mail Trong trường hợp này activity của ứng dụng sẽ được gọi khi người dùng đã thực hiện và activity đó sẽ được resume lại
Trang 27Hình 4 Activity Lifecycle
Trong đó:
onCreate : Khởi tạo activity
onStart : Thực hiện activity
onResume : Thực hiện tiếp tục một activity đã bị dừng trước đó
onPause : Tạm dừng một activity
onStop : Dừng hẳn một activity
onRestart : Thực hiện lại activity
Android có cơ chế quản lý các tiến trình theo độ ưu tiên Các tiến trình có độ
ưu tiên thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm bảo tài
Trang 28 Một Activity bao gồm 4 trạng thái
active (running): Activity đang hiển thị lên màn hình (foreground)
paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus)
stop: Một activity được thay thế hoàn toàn bởi một activity khác sẽ chuyển sang trạng thái stop
killed: khi hệ thống thiếu bộ nhớ nó sẽ giải phóng các tiến trình theo nguyên tắc độ ưu tiên Các activity ở trạng thái stop hoặc pause cũng
có thể bị giải phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn toàn và phục hồi lại trạng thái trước đó
Vậy ta có thể hiểu vòng đời của Activity như sau
Entire lifetime : Bắt đầu từ phương thức onCreate() cho tới phương thức onDestroy()
Visible lifetime : Từ phương thức onStart() cho tới phương thức onStop()
Foreground lifetime : Từ phương thức onResume() đến phương thức onPause()
III.4.2 Services
Services là những thành phần chạy ẩn trong ứng dụng Android.Service sử dụng
để cập nhật thông tin, dữ liệu hay đưa ra các cảnh cáo, nhắc nhở Một service có thể chạy nền và có thể tiếp tục chạy khi người dùng chuyển sang một Activity khác
Để bắt đầu một service bạn cần gọi phương thức startService() khi một thành phần của ứng dụng được bắt đầu, ví dụ như một Activity Service cần được khai báo trong file AndroidManifest.xml của ứng dụng:
Trang 29Hình 5 Service Lifecycle III.4.3 Content Providers
Content Providers giúp lưu trữ và lấy dữ liệu và làm cho nó có thể truy cập đến tất cả các ứng dụng khác.Đây là cách duy nhất để chia sẻ dữ liệu qua các ứng dụng
Dữ liệu thường được lưu trữ ở file hệ thống hoặc trong một Sqlite Database Content Provider thực hiện một tập phương thức chuẩn mà các ứng dụng khác có thể truy xuất và lưu dữ liệu của loại nó điều khiển.Tuy nhiên những ứng dụng không thể gọi các phương thức trực tiếp Hơn thế chúng dùng content resolver và gọi những phương thức đó Một content resolver có thể giao tiếp đến nhiều content provider; nó cộng tác với các provider để quản lý bất kỳ giao tiếp nào liên quan Mỗi ứng dụng Android chạy trên Process của nó Bất cứ lúc nào Content Provider cũng có thể quản lý được các thành phần bên trong nó
Trang 30 Khởi tạo nếu cần thiết
Một trường hợp tương thích của các thành phần là có giá trị hoặc đang khởi tạo trong trường hợp cần thiết
III.4.4 Intent
Khái niệm Itent 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 Intent còn là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau Intent chính là người đưa thư, giúp chúng ta triệu gọi cũng như truyền các dữ liệu cần thiết để thực hiện một Activity từ một Activity khác
Hình 6 Truyền Intent và số liệu sang Activity khác
Intent là một khái niệm then chốt và đặc trưng của Android Platform Có thể nói lập trình Android chính là lập trình Intent base
Các thuộc tính của một đối tượng Intent
Intent là một cấu trúc dữ liệu được mô tả trong lớp android.content.Intent
Action: Tên (string) của action mà Intent sẽ yêu cầu thực hiện, có thể
là action được android định nghĩa sẵn (built-in standard action) hoặc
do người lập trình tự định nghĩa
Data: Dữ liệu mà activity được gọi sẽ xử lý, định dạng URI thông qua
hàm Uri.parse(data)
Category: thông tin về nhóm của action
Type: định dạng kiểu dữ liệu (chuẩn MIME), thường được tự động
xác định
Component: chỉ định cụ thể lớp sẽ thực thi Activity, khi được xác
định các thuộc tính khác trở thành không bắt buộc (optional)
Trang 31 Extras: chứa tất cả các cặp (key, value) do ứng dụng thêm vào để
truyền qua Intent(cấu trúc Bundle)
III.4.5 Broadcast receivers
Là một thành phần của ứng dụng có chức năng thu nhận và phản ứng lại những thông báo được broadcast Nhiều broadcast gốc trong mã hệ thống và các ứng dụng cũng có thể khởi tạo broadcast
Broadcast receivers không hiển thị giao diện người dùng Tuy nhiên chúng có thể khởi tạo một Activity phản hồi lại những thông tin được nhận Chúng cũng có thể dùng Notification Manager để thông báo đến người dùng
III.4.6 DVM
DVM là máy ảo giúp các ứng dụng Java chạy được trên các thiết bị di động Android Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex).Định dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc
độ xử lý.DVM đã được thiết kế và viết bởi Dan Bornstein, ông đã đặt tên cho máy
ảo này sau khi đến thăm một ngôi làng có tên Dalvík ở đảo Eyjafjörður, nơi mà một
số tổ tiên của ông sinh sống
Từ góc nhìn của một nhà phát triển,DVM giống như một máy ảo Java (Java vitrual machine) nhưng thực tế thì hoàn toàn khác.Khi nhà phát triển viết một ứng dụng dành cho Android, anh ta thực hiện các đoạn mã trong môi trường Java Sau
đó nó sẽ được biên dịch sang bytecode của Java, tuy nhiên để thực thi được ứng dụng này trên Android thì nhà phát triển phải thực thi một công cụ có tên là dx Đây
là công cụ dùng để chuyển đổi bytecode sang một dạng khác gọi là dex bytecode
“Dex” là từ viết tắt của Dalvik Executable đóng vai trò như cơ chế ảo thực thi các ứng dụng Android
Trang 32CHƯƠNG II LẬP TRÌNH ỨNG DỤNG TRÊN HĐH ANDROID
I Lập trình ứng dụng Android
I.1 Thiết lập môi trường phát triển ứng dụng
Môi trường được thiết lập trên các hệ điều hành Windows và cụ thể là Windows 7 Để thực hiện việc này bạn cần có các gói cài đặt sau:
JDK Java for windows
I.2 Các thành phần trong Android Project
Tạo mới Android Project:
Click menu File-> New -> Project chọn Android-> Android Application Project
Hoặc có thể tạo nhanh bằng cách click vào biểu tưởng trên thanh công cụ
Hình 7 Tạo mới 1 ứng dụng Android
Project name: Tên cho Project
Trang 33Application name: Tên ứng dụng
Package name: Tên package, bạn đặt sao cũng được nhưng sao cho dễ nhớ và
không có các ký tự đặc biệt (chỉ gồm chữ thường và các số từ 0 ~ 9)
Min SDK Version: Tương ứng với API Level của Target Sau đó click Next rồi click chọn Create Activity để đặt tên cho Activity chính sẽ khởi tạo đầu tiên khi
chạy ứng dụng, hoặc không muốn tạo bằng cách bỏ dấu Tick.Cuối cùng click Finish
ta sẽ có 1 project như hình dưới
/src folder: chứa các mã nguồn (source code) là
các file Java
/gen: Chứa file R.java dùng để quản lý các tài
nguyên được tạo ra từ các tập tin nguồn, file này tự tạo nên không được chỉnh sửa hoặc thay đổi
/Android 1.6: bao gồm các API 1.6 tương ứng
với HĐH Android 1.6, các thư viện này được Import khi ta khởi tạo Project bằng cách chọn Target ở trên
/assets: chứa các file tài nguyên như database sẽ đi kèm với Project khi ta đóng gói
ứng dụng
/res/drawable-hdpi: nơi lưu hình ảnh sử dụng cho ứng dụng hdpi (High dpi: độ
phân giải cao) tương thích với điện thoại có màn hình WVGA800 (480x800), WVGA854 (480x854)
/res/drawable-ldpi: cũng là thư mục để chứa các file ảnh có độ phân giải thấp hơn
Low dpi: QVGA (240x320), WQVGA400 (240x400), WQVGA432 (240x432)
/res/drawable-mdpi: chứa các file ảnh có độ phân giải trung bình Medium dpi:
HVGA (320x480), WVGA800 (480x800), WVGA854 (480x854)
/res/layout/main.xml: file thiết kế giao diện cho ứng dụng, có thể tạo thêm nhiều
file khác cho nhưng màn hình khác nhau
/res/values/strings.xml: định nghĩa giá trị cho các tài nguyên trong project, giúp tối
ưu hóa trong việc quản lý giá trị mặc định các đối tượng String trên mỗi layout
Trang 34Ngoài ra còn có một số folder và file do người lập trình tự định nghĩa
II Mô hình Web service
Dịch vụ Web (Web Service) được coi là một công nghệ mang đến cuộc cách mạng trong cách thức hoạt động của các dịch vụ B2B (Business to Business) và B2C (Business to Customer) Giá trị cơ bản của dịch vụ Web dựa trên việc cung cấp các phương thức theo chuẩn trong việc truy nhập đối với hệ thống đóng gói và hệ thống kế thừa Các phần mềm được viết bởi những ngôn ngữ lập trình khác nhau và chạy trên những nền tảng khác nhau có thể sử dụng dịch vụ Web để chuyển đổi dữ liệu thông qua mạng Internet theo cách giao tiếp tương tự bên trong một máy tính Tuy nhiên, công nghệ xây dựng dịch vụ Web không nhất thiết phải là các công nghệ mới, nó có thể kết hợp với các công nghệ đã có như XML, SOAP, WSDL, UDDI Với sự phát triển và lớn mạnh của Internet, dịch vụ Web thật sự là một công nghệ đáng được quan tâm để giảm chi phí và độ phức tạp trong tích hợp và phát triển hệ thống Chúng ta sẽ xem xét các dịch vụ Web từ mức khái niệm đến cách thức xây dựng
Hình 8 Mô hình web service
Trang 35II.1 Giới thiệu công nghệ
Theo định nghĩa của W3C (World Wide Web Consortium), dịch vụ Web là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và sự gắn kết của nó được mô tả bằng XML Dịch vụ Web là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu Một dịch vụ Web được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu thông tin từ dịch vụ Web khác Nó bao gồm các mô đun độc lập cho hoạt động của khách hàng và doanh nghiệp và bản thân nó được thực thi trên server
Trước hết, có thể nói rằng ứng dụng cơ bản của dịch vụ Web là tích hợp các hệ thống và là một trong những hoạt động chính khi phát triển hệ thống Trong hệ thống này, các ứng dụng cần được tích hợp với cơ sở dữ liệu (CSDL) và các ứng dụng khác, người sử dụng sẽ giao tiếp với CSDL để tiến hành phân tích và lấy dữ liệu Trong thời gian gần đây, việc phát triển mạnh mẽ của thương mại điện tử và B2B cũng đòi hỏi các hệ thống phải có khả năng tích hợp với CSDL của các đối tác kinh doanh (nghĩa là tương tác với hệ thống bên ngoài – bên cạnh tương tác với các thành phần bên trong của hệ thống trong doanh nghiệp)
Dưới đây, chúng ta sẽ xem qua những khái niệm và cách thức cơ bản nhất để xây dựng một dịch vụ Web trong tích hợp và phát triển hệ thống
II.2 Đặc điểm của dịch vụ web
II.2.1 Đặc điểm
Dịch vụ Web cho phép client và server tương tác được với nhau ngay cả trong những môi trường khác nhau Ví dụ, đặt Web server cho ứng dụng trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này
Phần lớn kĩ thuật của dịch vụ Web được xây dựng dựa trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận, ví dụ như XML
Một dịch vụ Web bao gồm có nhiều mô-đun và có thể công bố lên mạng
Trang 36lĩnh vực cụ thể và cơ sở hạ tầng Web, đưa ra những lợi ích cho cả doanh nghiệp, khách hàng, những nhà cung cấp khác và cả những cá nhân thông qua mạng Internet
Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server Nó
có thể được triển khai bởi một phần mềm ứng dụng phía server ví dụ như PHP, Oracle Application server hay Microsoft.Net
Ngày nay dịch vụ Web đang rất phát triển, những lĩnh vực trong cuộc sống có thể áp dụng và tích hợp dịch vụ Web là khá rộng lớn như dịch vụ chọn lọc và phân loại tin tức (hệ thống thư viện có kết nối đến web portal để tìm kiếm các thông tin cần thiết); ứng dụng cho các dịch vụ du lịch (cung cấp giá vé, thông tin về địa điểm…), các đại lý bán hàng qua mạng, thông tin thương mại như giá cả, tỷ giá hối đoái, đấu giá qua mạng…hay dịch vụ giao dịch trực tuyến (cho cả B2B và B2C) như đặt vé máy bay, thông tin thuê xe
Các ứng dụng có tích hợp dịch vụ Web đã không còn là xa lạ, đặc biệt trong điều kiện thương mại điện tử đang bùng nổ và phát triển không ngừng cùng với sự lớn mạnh của Internet Bất kì một lĩnh vực nào trong cuộc sống cũng có thể tích hợp với dịch vụ Web, đây là cách thức kinh doanh và làm việc có hiệu quả bởi thời đại ngày nay là thời đại của truyền thông và trao đổi thông tin qua mạng Do vậy, việc phát triển và tích hợp các ứng dụng với dịch vụ Web đang được quan tâm phát triển
là điều hoàn toàn dễ hiểu
II.2.2 Ưu điểm
Dịch vụ Web cung cấp khả năng hoạt động rộng lớn với các ứng dụng phần mềm khác nhau chạy trên những nền tảng khác nhau
Sử dụng các giao thức và chuẩn mở Giao thức và định dạng dữ liệu dựa trên văn bản (text), giúp các lập trình viên dễ dàng hiểu được
Nâng cao khả năng tái sử dụng
Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình hay chức năng nghiệp vụ đóng gói trong giao diện dịch vụ Web
Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán
Trang 37 Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành hoạt động, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác
II.2.3 Nhược điểm
Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của dịch vụ Web, giao diện không thay đổi, có thể lỗi nếu một máy khách không được nâng cấp, thiếu các giao thức cho việc vận hành
Có quá nhiều chuẩn cho dịch vụ Web khiến người dùng khó nắm bắt
Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật
II.3 Kiến trúc của dịch vụ Web
Dịch vụ Web gồm có 3 chuẩn chính: SOAP (Simple Object Access Protocol), WSDL (Web Service Description Language) và UDDI (Universal Description, Discovery, and Integration) Hình 1 mô tả chồng giao thức của dịch vụ Web, trong
đó UDDI được sử dụng để đăng ký và khám phá dịch vụ Web đã được miêu tả cụ thể trong WSDL Giao tác UDDI sử dụng SOAP để nói chuyện với UDDI server, sau đó các ứng dụng SOAP yêu cầu một dịch vụ Web Các thông điệp SOAP được gửi đi chính xác bởi HTTP và TCP/IP
Trang 38Chồng giao thức dịch vụ Web là tập hợp các giao thức mạng máy tính được sử dụng để định nghĩa, xác định vị trí, thi hành và tạo nên dịch vụ Web tương tác với những ứng dụng hay dịch vụ khác Chồng giao thức này có 4 thành phần chính: Dịch vụ vận chuyển (Service Transport): có nhiệm vụ truyền thông điệp giữa các ứng dụng mạng, bao gồm những giao thức như HTTP, SMTP, FTP, JSM và gần đây nhất là giao thức thay đổi khổi mở rộng (Blocks Extensible Exchange Protocol- BEEP)
Thông điệp XML: có nhiệm vụ giải mã các thông điệp theo định dạng XML để
có thể hiểu được ở mức ứng dụng tương tác với người dùng Hiện tại, những giao thức thực hiện nhiệm vụ này là XML-RPC, SOAP và REST
Mô tả dịch vụ: được sử dụng để miêu tả các giao diện chung cho một dịch vụ Web cụ thể WSDL thường được sử dụng cho mục đích này, nó là một ngôn ngữ mô
tả giao tiếp và thực thi dựa trên XML Dịch vụ Web sẽ sử dụng ngôn ngữ này để truyền tham số và các loại dữ liệu cho các thao tác và chức năng mà dịch vụ Web cung cấp
Khám phá dịch vụ: tập trung dịch vụ vào trong một nơi được đăng ký, từ đó giúp một dịch vụ Web có thể dễ dàng khám phá ra những dịch vụ nào đã có trên mạng, tốt hơn trong việc tìm kiếm những dịch vụ khác để tương tác Một dịch vụ Web cũng phải tiến hành đăng ký để các dịch vụ khác có thể truy cập và giao tiếp Hiện tại, UDDI API thường được sử dụng để thực hiện công việc này
Trong đó, tầng giao thức tương tác dịch vụ (Service Communication Protocol) với công nghệ chuẩn là SOAP SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ, cho phép người dùng triệu gọi một dịch vụ từ xa thông qua một thông điệp XML Ngoài ra, để các dịch vụ có tính an toàn, toàn vẹn
và bảo mật thông tin, trong kiến trúc dịch vụ Web, chúng ta có thêm các tầng Policy, Security, Transaction, Management
II.4 Xây dựng dịch vụ Web
Có 4 giai đoạn chính để xây dựng một dịch vụ Web là xây dựng, triển khai, tiến hành và quản lý, trong đó:
Giai đoạn xây dựng bao gồm phát triển và chạy thử ứng dụng dịch vụ Web, xây dựng các chức năng và định nghĩa dịch vụ Có hai cách khác nhau để tiến hành trong giai đoạn này, đó là Red-path- solod và Blue-path-dashed Với Red- path-
Trang 39solod, chúng ta sẽ xây dựng một dịch vụ Web mới từ trạng thái ban đầu hoặc với một dịch vụ đã có sẵn Từ đó, xây dựng định nghĩa service (WSDL) với các đối tượng, hàm chức năng mà chúng ta mong muốn Nếu theo cách Blue-path-dashed, dịch vụ Web sẽ được xây dựng từ đầu hoặc từ một định nghĩa dịch vụ WSDL Sử dụng WSDL này, xây dựng hoặc sửa đổi lại mã để thực hiện các yêu cầu mong muốn trong dịch vụ Web
Giai đoạn triển khai: công bố định nghĩa dịch vụ, xây dựng WSDL và triển khai mã thực thi của dịch vụ Web Triển khai dịch vụ Web tới một ứng dụng phía server, sau đó sẽ công bố dịch vụ Web trên mạng Internet để các client có thể nhìn thấy Sử dụng UDDI registry để công bố lên mạng
Giai đoạn tiến hành: tìm kiếm và gọi thực thi dịch vụ Web bởi những người dùng muốn sử dụng dịch vụ
Quản lý: Quản lý và quản trị dịch vụ, duy trì sự ổn định của dịch vụ, cập nhật thông tin mới, sửa lỗi khi nó xảy ra
Để xây dựng một dịch vụ Web, chúng ta cần hiểu được những việc phải làm và nên bắt đầu từ đâu Có 3 cách tiếp cận chủ yếu để xây dựng nên một dịch vụ Web,
có thể từ một ứng dụng đã có (bottom-up); từ một định nghĩa dịch vụ, WSDL để phát sinh một ứng dụng mới (top-down) hoặc có thể từ một nhóm các dịch vụ Web hiện có, kết hợp lại với nhau để tạo nên các chức năng mới hoặc mở rộng thêm chức năng Những hướng tiếp cận này dựa trên những gì mà chúng ta đã có, tùy thuộc vào yêu cầu của hệ thống, trong đó tối đa việc sử dụng lại các chức năng, các thành phần, môđun đã được xây dựng
Qui trình xây dựng một dịch vụ Web bao gồm các bước sau:
1 Định nghĩa và xây dựng các chức năng, các dịch vụ mà dịch vụ sẽ cung cấp (sử dụng ngôn ngữ Java chẳng hạn)
2 Tạo WSDL cho dịch vụ
3 Xây dựng SOAP server
4 Đăng ký WSDL với UDDI registry để cho phép các client có thể tìm thấy
Trang 40Lựa chọn một ngôn ngữ, xây dựng các tiến trình nghiệp vụ và chúng ta bắt đầu tạo nên một dịch vụ Web như ý muốn Sau đó là cung cấp dịch vụ Web này trên Internet
III Công nghệ Bluetooth và lập trình với Bluetooth trên Android
III.1 Khái niệm công nghệ Bluetooth
Bluetooth là công nghệ không dây cho phép các thiết bị điện, điện tử giao tiếp với nhau trong khoảng cách ngắn, bằng sóng vô tuyến qua băng tầng chung ISM (Industrial, Scientific, Medical) trong dãy tầng 2.40 – 2.48 GHz Đây là băng tầng không cần đăng ký được dành riêng để dùng cho các thiết bị không dây trong công nghiệp, khoa học, y tế
Bluetooth được thiết kế nhằm mục đích thay thế dây cable giữa máy tính và các thiết bị truyền thông cá nhân, kết nối vô tuyến giữa các thiết bị điện tử lại với nhau một cách thuận lợi với giá thành rẻ
III.2 Lập trình với Bluetooth trên Android
III.2.1 Giới thiệu các API lập trình Bluetooth trên Android
Android hỗ trợ đầy đủ các thư viện API về Bluetooth để lập trình Tất cả các
thư viện này chứa trong gói thư viện android.bluetooth Bao gồm :
BluetoothAdapter : BluetoothAdapter là điểm vào cho tất cả các tương tác
trên Bluetooth Sử dụng BluetoothAdapter, bạn có thể tìm thấy những thiết bị Bluetooth khác,những thiết bị tìm thấy sẽ được tạo thành một danh sách (paired),sử
dụng địa chỉ MAC để khởi tạo BluetoothDevice và tạo mộtBluetoothServerSocket
để lắng nghe các thiết bị khác kết nối tới
BluetoothDevice: Đại diện cho một thiết bị Bluetooth Sử dụng để yêu cầu một kết nối với một thiết bị từ xa thông qua một BluetoothSocket hoặc truy vấn các
thông tin của thiết bị kết nối, như là: tên thiết bị, địa chỉ
BluetoothSocket: Đại diện cho cổng giao tiếp Bluetooth (tương tự như một
TCP Socket) Đây là điểm kết nối cho phép ứng dụng có thể trao đổi dữ liệu với một thiết bị Bluetooth khác thông qua InputStream và OutputStream
BluetoothServerSocket: Đại diện cho một cổng mở để lắng nghe các yêu cầu
được gửi đến (tương tự như một TCP ServerSocker) Để kết nối hai thiết bị Android với nhau, một thiết bị phải mở một cổng server để lắng nghe các kết nối bằng cách