1. Trang chủ
  2. » Luận Văn - Báo Cáo

ứng dụng lưu trữ thông tin bằng chuỗi mã vạch

73 1,2K 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 73
Dung lượng 2,26 MB

Nội dung

Tài liệu tham khảo công nghệ thông tin ứng dụng lưu trữ thông tin bằng chuỗi mã vạch

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Lại Quang Tùng

ỨNG DỤNG LƯU TRỮ THÔNG TIN

BẰNG CHUỖI MÃ VẠCH

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ thông tin Cán bộ hướng dẫn: TS Trương Anh Hoàng

HÀ NỘI - 2009

Trang 3

Em xin gửi lời cảm ơn tới tất cả các thầy, cô giáo trong khoa Công nghệ thông tin – trường Đại học Công Nghệ – Đại học Quốc Gia Hà Nội đã nhiệt tình giảng dạy cho chúng em những tri thức của kỷ nguyên mới – kỷ nguyên công nghệ và truyền thông Cảm ơn những người bạn của tôi, những người đã giúp đỡ tôi rất nhiều trong học tập, trong cuộc sống và hoàn thành khóa luận này

Cuối cùng, con xin gửi lời cảm ơn đến bố, mẹ và gia đình Bố mẹ luôn là chỗ dựa tinh thần vững chắc cho con

Hà Nội, ngày 22 tháng 5 năm 2009

Lại Quang Tùng

Trang 4

Tóm tắt

Mã vạch ngày nay đã trở nên phổ biến với mỗi người trong chúng ta, không chỉ đem lại sự thuận tiện cho người sử dụng, nó còn mang lại một phong cách mới trong mua sắm và tra thông tin về sách sản phẩm Không dừng lại ở đó, tiềm năng của mã vạch còn rất lớn khi xuất hiện các loại mã vạch hai chiều, ghi được nhiều thông tin hơn các mã vạch một chiều trước kia

Khóa luận sẽ trình bày về mã vạch nói chung và mã vạch QR nói riêng, giới thiệu

về thư viện mã nguồn mở Zxing để đọc mã vạch, cách sử dụng thư viện này để phát triển phần mềm Khóa luận cũng đi nghiên cứu về các nền tảng di động và đặc biệt là nền tảng Android Ở phần cuối, khóa luận sẽ trình bày ứng dụng thư viện Zxing vào việc xây dựng “Ứng dụng lưu trữ thông tin bằng chuỗi mã vạch” trên nền tảng Android Ứng dụng này xuất phát cho phép mã hóa các tệp nhỏ bất kỳ thành một chuỗi các mã vạch, và giải mã chúng để trở lại thành tệp ban đầu Cơ sở này cho phép ta truyền số liệu giữa hai thiết bị thông qua màn hình (hoặc các thiết bị hiển thị được hình ảnh như giấy) và camera Phần phụ lục cung cấp một số thuật ngữ thường dùng của Android

Trang 5

Mục lục

Mở đầu 1

Chương 1: Các nền tảng di động 3

Brew 5

1.1.1 Giới thiệu 5

1.1.2 Ưu nhược điểm 5

1.2 Java ME 6

1.2.1 Giới thiệu 6

1.2.2 Ưu nhược điểm 6

1.3 Symbian 7

1.3.1 Giới thiệu 7

1.3.2 Ưu nhược điểm 7

1.4 BlackBerry 7

1.4.1 Giới thiệu 7

1.4.2 Ưu nhược điểm 8

1.5 Windows Mobile 8

1.5.1 Giới thiệu 8

1.5.2 Ưu nhược điểm 8

1.6 iPhone 9

1.6.1 Giới thiệu 9

1.6.2 Ưu nhược điểm 9

1.7 Android 10

1.7.1 Giới thiệu 10

1.7.2 Ưu nhược điểm 10

Chương 2: Nền tảng Android 11

2.1 Khái niệm 11

2.2 Đặc điểm 12

2.2.1 Tính mở 12

2.2.2 Tính ngang bằng của các ứng dụng 12

2.2.3 Phá vỡ rào cản phát triển ứng dụng 12

2.2.4 Dễ dàng và nhanh chóng xây dựng ứng dụng 12

2.3 Kiến trúc của nền tảng Android 13

2.3.1 Kiến trúc tổng quát 13

2.3.2 Hệ điều hành 13

2.3.3 Thư viện và các giao diện lập trình ứng dụng 13

2.4 Các thành phần của ứng dụng 15

2.4.1 Hoạt động (Activity) 16

2.4.2 Dịch vụ 19

2.4.3 Bộ nhận quảng bá (Broadcast receivers) 20

2.4.4 Content provider 20

2.4.5 Các thành phần kích hoạt (các Intent) 21

2.4.6 Ngắt một thành phần 22

2.4.7 Tập tin khai báo (manifest) 22

2.4.8 Bộ lọc Intent 23

2.5 Công cụ hỗ trợ lập trình Android 24

Chương 3: Mã vạch, mã QR và thư viện Zxing 26

3.1 Mã vạch 26

Trang 6

3.1.1 Khái niệm 26

3.1.2 Ứng dụng 26

3.2 Mã QR 27

3.2.1 Khái niệm 27

3.2.2 Khả năng lưu trữ 28

3.3 Thư viện Zxing 28

3.3.1 Khái niệm 28

3.3.2 Cách sử dụng 29

Chương 4: Xây dựng ứng dụng lưu trữ thông tin bằng chuỗi mã vạch 33

4.1 Đặt vấn đề 33

4.2 Giải pháp 33

4.3 Phân tích 33

4.3.1 Các chức năng của hệ thống 33

4.3.2 Xác định tác nhân và ca sử dụng 34

4.3.3 Mối quan hệ giữa tác nhân và các ca sử dụng 34

4.3.4 Biểu đồ tuần tự 36

4.4 Thiết kế 42

4.4.1 Thiết kế lớp 42

4.5 Thiết kế giao diện 45

4.6 Kiểm thử chương trình 45

4.6.1 Kiểm thử ca sử dụng 45

4.6.2 Kết quả thực nghiệm 48

Kết luận 53

Trang 7

Danh mục ký hiệu viết tắt

Ký hiệu

Giải thích

API Application Programming Interface Giao diện lập trình ứng dụng

CDMA Code Division Multiple Access Một công nghệ trong hệ thống thông tin di động

GPRS General Packet Radio Service Gói dịch vụ vô tuyến tổng hợp

GSM Global System for Mobile Communications Hệ thống thông tin di động toàn cầuJ2SE Java 2 Standard Edition Là đặc tả và cũng là nền tảng thực thi cho các ứng dụng Java

MIDP Mobile Information Device Profile Thuộc tính thông tin thiết bị di động

SDK Software Development Kit Bộ công cụ phát triển phần mềm

USB Universal Serial Bus Một chuẩn kết nối tuần tự trong máy tính

Wi-Fi Wireless Fidelity Hệ thống mạng không dây

Trang 8

Danh mục bảng biểu

Bảng 1:Thị trường di động năm 2008 [1] 3

Bảng 2:Mối quan hệ giữa tác nhân và các ca sử dụng 34

Bảng 3:Bảng hành động của tác nhân và phản ứng của hệ thống với ca sử dụng Encode 35

Bảng 4:Bảng hành động của tác nhân và phản ứng của hệ thống với ca sử dụng Decode 35

Bảng 5:Bảng hành động của tác nhân và phản ứng của hệ thống với ca sử dụng Help 36

Bảng 6:Biểu đồ tuần tự ca sử dụng Decode files 39

Bảng 7:Bảng ca kiểm thử mã hóa tập tin 46

Bảng 8:Bảng ca kiểm thử giải mã tập tin 47

Bảng 9:Bảng ca kiểm thử giải mã ảnh 48

Trang 9

Danh mục hình vẽ

Hình 1:Bản đồ phát triển điện thoại di động [2] 4

Hình 2:Điện thoại Android, HTC Dream (trái) và HTC Magic (phải) 11

Hình 3:Nhân Linux trên Android 13

Hình 4:Thư viện lâp trình ứng dụng trên Android 13

Hình 5:Khung ứng dụng 14

Hình 6:Các ứng dụng trên Android 15

Hình 7:Vòng đời của một hoạt động 18

Hình 8:Một ảnh mã QR 27

Hình 9:Biểu đồ ca sử dụng hệ thống 34

Hình 10:Biểu đồ tuần tự của hệ thống 37

Hình 11:Biểu đồ tuần tự ca sử dụng Encode 38

Hình 12:Biểu đồ tuần tự ca sử dụng Decode Images 40

Hình 13:Biểu đồ hoạt động của hệ thống 41

Hình 14:Biểu đồ lớp của hệ thống 44

Hình 15:Thiết kế giao diện chương trình 45

Hình 16:Mã hóa tập tin ringtone.mid 48

Hình 17:Các ảnh mã QR được chương trình tạo ra từ tập tin MID ringtone.mid 51

Hình 18:Một số hình ảnh về giải mã các tập tin ảnh 52

Hình 19:Màn hình danh sách các ứng dụng 54

Hình 20:Màn hình chính của chương trình 54

Hình 21:Cửa sổ chức năng mã hóa 55

Hình 22:Cửa sổ giải mã 55

Hình 23:Nhập đường dẫn tập tin ảnh đầu tiên được mã hóa 55

Trang 11

Mở đầu

Ngày nay, việc ứng dụng mã vạch đã trở nên phổ biến đối với mọi người kể cả trên thế giới và Việt Nam Mỗi khi đi siêu thị chúng ta vẫn thấy người thu ngân dùng một thiết bị quét mã vạch in trên sản phẩm giúp cho việc thanh toán dễ dàng hơn Đấy mới chỉ là một ứng dụng nhỏ của việc sử dụng mã vạch vào đời sống thường ngày.Cùng với sự phát triển của công nghệ, mã vạch đã cải tiến không chỉ còn đơn giản

là lưu mã của sản phẩm mà còn có khả năng lưu được nhiều thông tin của sản phẩm hơn với việc sử dụng mã vạch 2 chiều

Một lợi thế của ứng dụng mã vạch là khả năng tiện dụng, chúng ta có thể sử dụng tại bất kỳ đâu, bất kỳ khi nào bằng việc sử dụng một thiết bị thông minh có hỗ trợ máy ảnh (ví dụ: điện thoại di động) có khả năng đọc mã vạch và giải mã mã vạch đó

Đặt trong hoàn cảnh giữa hai thiết bị Android không có sự bất kỳ kết nối nào (không Bluetooth, không Wi-Fi) mà chúng lại muốn chia sẽ dữ liệu cho nhau Khóa luận

sẽ đưa ra một giải pháp cho việc lưu trữ, chia sẻ thông tin này dựa trên mã vạch 2 chiều

QR kết hợp với nền tảng Google Android − một nền tảng di động mới đầy hứa hẹn và là đối thủ xứng tầm của iPhone

Khóa luận sẽ tập trung nghiên cứu về các nền tảng di động, các đặc điểm của chúng, đi sâu nghiên cứu nền tảng Google Android và công nghệ mã vạch hiện nay, cuối cùng là ứng dụng vào giải quyết bài toán ứng dụng lưu trữ thông tin bằng chuỗi mã vạch

Nội dung khóa luận bao gồm 6 phần với các nội dung chính sau:

Mở đầu: Đặt vấn đề

Chương 1: Giới thiệu khái quát các nền tảng di động hiện nay, đưa ra các điểm

mạnh, điểm yếu của từng nền tảng

Chương 2: Giới thiệu về nền tảng di động Google Android, các đặc điểm, cấu

trúc và các công cụ phát triển của Android

Chương 3: Trình bày về mã vạch và mã QR, các ứng dụng của chúng trong đời

sống hàng ngày Chương này cũng trình bày về thư viện mã nguồn mở Zxing, ứng dụng

và cách sử dụng của thư viện mở này

Trang 12

Chương 4: Ứng dụng vào giải quyết bài toán “Ứng dụng lưu trữ thông tin bằng

chuỗi và mã vạch” trên Android Ứng dụng giúp lưu trữ và chia sẽ thông tin giữa các

điện thoại Android với nhau

Kết luận: Tổng kết lại toàn khóa luận, những gì đã làm được, so sánh với các

khóa luận trước về Android và đưa ra hướng phát triển tiếp theo cho khóa luận

Trang 13

Chương 1: Các nền tảng di động

Hiện nay, chúng ta biết đến rất nhiều nền tảng di động khác nhau như: Brew, Java

ME, BlackBerry, iPhone…Nhưng không hẳn ai trong mỗi chúng ta đều biết về chúng, chúng có những ưu điểm gì những nhược điểm gì? Trong nội dung chương này, khóa luận sẽ giới thiệu về một số nền tảng di động phổ biển hiện nay và những đặc điểm của chúng để thấy được điểm mạnh, điểm yếu của mỗi nền tảng Trước hết là một số hình ảnh tổng quan về thị trường di động Bảng 1 là thống kê năm 2008 về thị phần của thị trường di động [1] Hình 1 là bức tranh toàn cục về các nền tảng di động và các công ty phát triển chúng [2]

Bảng 1:Thị trường di động năm 2008 [1]

Trang 15

Brew

1.1.1 Giới thiệu

Brew [3] (Binary Runtime Environment for Wireless − môi trường thực thi nhị phân cho thiết bị không dây) là nền tảng ứng dụng di động được hãng Qualcomm phát triển, ra đời chính thức từ năm 2001 Brew có nguồn gốc phát triển dành cho các điện thoại CDMA, nhưng đã chuyển sang hướng phát triển mới bao gồm cả GSM/GPRS Nó cho phép tải và chạy những chương trình nhỏ như trò chơi, hay gửi tin nhắn, chia sẻ hình ảnh, xác định vị trí, v.v…

Một ưu thế của nền tảng này đó là các nhà phát triển ứng dụng có thể dễ dàng chuyển các ứng dụng của họ sang các thiết bị của Qualcomm BREW làm việc ở giữa ứng dụng với hệ điều hành trên chíp của thiết bị không dây, cho phép những người phát triển phần mềm ứng dụng không cần phải viết mã cho giao tiếp hệ thống hay phải hiểu các ứng dụng không dây

1.1.2 Ưu nhược điểm

Ưu điểm

Kiểm thử: nhiều người phát triển có thể cho rằng việc kiểm thử phức tạp của ứng

dụng Brew làm chậm ngày phát hành hay chi phí cao của phần mềm Tuy nhiên việc kiểm thử kỹ lưỡng sẽ giúp các ứng dụng trên Brew cuối cùng ít lỗi nhất và có chất lượng cao hơn

Giao diện lập trình ứng dụng Brew (Brew API): thư viện lập trình ứng dụng của

Brew mạnh và dễ sử dụng hơn của nhiều nền tảng khác (như API của Java ME)

Đồ họa: phát triển đồ họa cho các trò chơi hay ứng dụng khác dễ dàng hơn các

nền tảng khác, bởi Brew cung cấp khả năng truy cập vào vùng đệm màn hình

Không giới hạn kích thước bộ nhớ: Brew không giới hạn kích thước bộ nhớ như

J2ME (có giới hạn là 128K)

Giảm sự cạnh tranh cho những người phát triển ứng dụng: do người phát triển

phải trả phí kiểm thử phần mềm của họ, điều này làm giảm tính cạnh tranh Trong phần lớn trường hợp, chúng ta không phải lo về các phần mềm miễn phí

Nhược điểm

Không phổ biến: dù có nhiều ưu điểm nó vẫn không phổ biến như các nền tảng

khác như Java ME

Trang 16

Tốn phí kiểm thử: để phần mềm của mình có thể được chấp nhận và sẵn sàng bán,

nó phải được kiểm thử bởi NTSL (National Software Testing Labs) và tốn ít nhất khoảng 400 đô la Mỹ

Không nén được: mã nguồn Brew không thể nén lại vì lý do an ninh và có thể làm

tăng kích thước phần mềm

Hồ sơ thiết bị: hồ sơ thiết bị của Brew thường rất đắt, không miễn phí như MIDP

(Mobile Information Device Profile) của J2ME

Không tương thích: mặc dù có nơi để kiểm thử, nhiều thiết bị di động vẫn không

tương thích với nền tảng Brew [4]

1.2 Java ME

1.2.1 Giới thiệu

Java ME (viết tắt của Java Micro Edition) là một nhánh phát triển của nền tảng Java, nhằm mục đích cung cấp một bộ API để phát triển ứng dụng trên các thiết bị nhúng như điện thoại di động, PDA, các thiết bị cầm tay…Trước kia Java ME có tên khác là J2ME (Java 2 Micro Edition)

1.2.2 Ưu nhược điểm

Ưu điểm

Khả chuyển: viết một lần chạy mọi nơi, đây là lợi thế lớn nhất của Java ME Các

ứng dụng, nhất là ứng dụng trò chơi trên máy bàn dễ dàng chuyển sang cho các thiết bị cầm tay

Bảo mật: mã nguồn được chạy trong giới hạn của máy ảo Java MIDlet có thể

được ký hiệu bằng mật mã và xác nhận trên thiết bị Java ME có kiến trúc phân quyền cao cấp

Bộ giao diện lập trình ứng dụng phong phú, ngày càng hoàn thiện hơn Ngoài ra,

Java ME được sự ủng hộ của các hãng truyền thông và nhà sản xuất thiết bị cầm tay lớn

Các công cụ phát triển sẵn có, miễn phí Ví dụ như Netbeans, Eclipse, Wireless

toolkit…

Nhược điểm

Nhược điểm lớn nhất của Java ME là không tận dụng hết được khả năng đặc trưng của các thiết bị Nhu cầu và sự phát triển của các thiết bị cầm tay đòi hỏi thư viện API

Trang 17

của Java ME phải ngày càng hoàn thiện hơn để theo kịp các nền tảng khác nếu không muốn bị tụt hậu.

1.3 Symbian

1.3.1 Giới thiệu

Symbian là một hệ điều hành mở được thiết kế cho các thiết bị di động của công

ty Symbian, hiện nay nó thuộc sở hữu của nhiều công ty khác (Nokia, Ericsson, Sony Ericsson, Panasonic, Samsung…) Symbian hỗ trợ Java, đồng bộ hóa máy tính, truy cập Bluetooth và chuyển gói dữ liệu GPRS Symbian là hệ điều hành phổ biến nhất của các điện thoại và các thiết bị thông minh

1.3.2 Ưu nhược điểm

Ưu điểm

Ưu điểm đầu tiên có thể kể đến là sự phổ biến Ngay từ đầu, hệ điều hành

Symbian phát triển với mục đích lấy được đơn đặt hàng cho các công ty phát triển thiết

bị viễn thông Điện thoại đầu tiên sử dụng hệ điều hành Symbian là Nokia 9210 năm

2001 Sau đó, đã có hơn 1 tỉ điện thoại được bán khắp thế giới năm 2007, hơn một trăm triệu là điện thoại thông minh, trong đó có đến ¾ chạy hệ điều hành Symbian [5]

Trên thị trường thiết bị di động không có chuẩn nào về cỡ màn hình, bàn phím, các nút… Symbian đã phân loại giao diện đồ họa từ các thành phần hệ thống khác nhau Nó cho phép hệ thống thích hợp với mọi loại cỡ và độ phân giải màn hình kể cả màn hình cảm ứng Nó còn cho phép tạo sự thêm độc đáo bằng phần cứng cảm nhận gia tốc

Điểm mạnh nhất của Symbian là hệ điều hành mở hỗ trợ đa ngôn ngữ (C++ và Java) Việc lập trình với ngôn ngữ C++ trên PC với sự hỗ trợ của bộ công cụ Microsoft

Visual Studio và bộ giả lập rất dễ dàng Bên cạnh đó, Symbian cũng hỗ trợ cả Java ME

Nhược điểm

Hiện nay do sự phát triển của nhiều nền tảng di động mới nổi lên như BlackBerry, iPhone hay Google Android thì hệ điều hành Symbian đang đứng trước khó khăn để theo kịp các đối thủ

1.4 BlackBerry

1.4.1 Giới thiệu

Hệ điều hành BlackBerry [6] là một phần mềm nền tảng độc quyền của RIM (Research in Motion, Canada) cho dòng thiết bị cầm tay BlackBerry và các thiết bị hỗ

Trang 18

trợ BlackBerry Nó là hệ điều hành cung cấp chức năng đa nhiệm, sử dụng bàn phím Qwerty, cùng với bi xoay hay màn hình cảm ứng Hiện tại hệ điều hành BlackBerry 4

hỗ trợ MIDP 2.0, cho phép kích hoạt và đồng bộ hoàn toàn với thư điện tử Microsoft Exchange, lịch, các tác vụ, ghi chú và danh bạ…

Người lập trình thứ ba có thể viết phần mềm sử dụng các API do BlackBerry cung cấp, nhưng bất kể chương trình nào sử dụng các chức năng giới hạn phải có chữ ký điện

tử, để có thể đồng bộ được với tài khoản của người phát triển ở RIM Điều này đảm bảo thủ tục bản quyền tác giả của một ứng dụng, nhưng không đảm bảo chất lượng hay bảo mật của mã nguồn

1.4.2 Ưu nhược điểm

Windows Mobile là một hệ điều hành nhỏ gọn kết hợp với một số các ứng dụng

cơ bản dành cho các thiết bị di động dựa trên các API của Microsoft Win32 Windows Mobile có thể chạy trên nhiều nền tảng phần cứng khác nhau như: Pocket PC, Smartphone, v.v… Nó được thiết kế có chút tương đồng với phiên bản Windows cho máy bàn

1.5.2 Ưu nhược điểm

Ưu điểm

Ưu điểm lớn nhất của Windows Mobile là nó có thư viện API khá giống với API trên Win32, các công cụ hỗ trợ lập trình đầy đủ với Visual Studio, điều này làm cho

Trang 19

những người phát triển trên Win32 không mất công tìm hiểu lại các API và các công cụ lập trình.

Vào 3/2008 bộ công cụ phát triển phần mềm chính thức ra mắt, cho phép người phát triển tạo ứng dụng cho iPhone và Ipod Touch và kiểm thử qua một bộ giả lập iPhone Tuy nhiên, việc tải một ứng dụng lên trên thiết bị chỉ có thể sau khi trả phí phát triển chương trình iPhone (iPhone Developer Program fee) Từ khi ra bản Xcode 3.1, Xcode trở thành môi trường phát triển cho iPhone SDK Hiện nay Xcode chỉ được cài trên Mac OS

Người phát triển có thể đặt bất kỳ giá nào trên mức thấp nhất cho các ứng dụng của họ để phân phối thông qua App Store, tại đó họ được trả 70% lợi nhuận Ngược lại,

họ cũng có thể phát hành ứng dụng miễn phí và không phải trả khoản phí nào để phát hành và phân phối các ứng dụng đó [7]

1.6.2 Ưu nhược điểm

Ưu điểm

Màn hình cảm ứng đa điểm: iPhone sử dụng hoàn toàn bằng cảm ứng và không sử

dụng các nút Với iPhone ta có thể điều khiển trên màn hình kể cả việc trượt của các ngón tay Ta có thể phóng to ảnh bằng cách trượt hai ngón tay ra xa và thu nhỏ bằng cách ngược lại

Bộ cảm nhận gia tốc: Những phản ứng nhanh chóng của bộ cảm nhận gia tốc thay

đổi độ phân giải màn hình từ dọc sang ngang tự động khi ta đặt điện thoại nằm ngang Điều này làm sinh động thêm cho các trò chơi

Trang 20

Chất lượng âm thanh, hình ảnh hoàn hảo, phù hợp cho các trò chơi và có chức năng đa nhiệm là những đặc điểm nổi trội của iPhone.

Nhược điểm

Không gửi được tin nhắn đa phương tiện (MMS) và IM (Instant Messaging), thiếu

bộ nhớ mở rộng Việc lập trình trên cho iPhone phải thực hiện trên hệ điều hành Mac,

do đó không phải ai cũng có thể lập trình cho iPhone Hơn thế, nếu muốn đưa chương trình ra máy thật người lập trình phải trả một khoản phí lập trình, điều này làm giảm tính cạnh tranh so với các đối thủ khác

1.7 Android

1.7.1 Giới thiệu

Android là một phầm mềm nền tảng cho các thiết bị di động, được xây dựng trên nhân Linux, được Google phát triển và sau này là Liên minh thiết bị cầm tay mở Nó cho phép người phát triển viết mã trên ngôn ngữ Java, điều khiển các thiết bị thông qua thư viện Java do Google phát triển

Tháng 11/2007 nền tảng Android chính thức được giới thiệu với sự công bố của Liên minh thiết bị cầm tay mở (Open Handset Alliance) Mục tiêu của Google đang muốn đưa cỗ máy tìm kiếm của họ thống lĩnh các thiết bị di động khi mà điện thoại thông minh đang phát triển mạnh mẽ như hiện nay

1.7.2 Ưu nhược điểm

Ưu điểm

Google Android là nền tảng mở, cho phép người dùng có thể tùy biến nền tảng theo ý thích, hơn nữa lại có một Liên minh thiết bị cầm tay mở hậu thuẫn, Google Android đang là đối thủ xứng tầm của iPhone của Apple Google đang tích cực mở rộng cộng đồng phát triển các ứng dụng cho Android Bộ công cụ phát triển phần mềm (SDK) đầy đủ, hỗ trợ đa nền (Linux, Windows hay Mac OS) do chạy trên máy ảo Java Thư viện ngày càng hoàn thiện, dễ dàng cho người lập trình

Trang 21

Chương 2: Nền tảng Android

Chương này giới thiệu về nền tảng Android, khái niệm, các đặc điểm của nền tảng Android Tiếp đến là đi sâu trình bày về kiến trúc và giới thiệu bộ công cụ lập trình cho Android

2.1 Khái niệm

Hình 2:Điện thoại Android, HTC Dream (trái) và HTC Magic (phải)

Android là một hệ thống, một hệ điều hành dựa trên Java và chạy trên nhân linux 2.6 Nó được phát triển bởi Liên minh thiết bị cầm tay mở (Open Handset Alliance), với phương châm mang lại phong cách sử dụng Internet mới và mở cho điện thoại di động.Android cung cấp một tập hợp đầy đủ các phần mềm cho thiết bị di động bao gồm: hệ điều hành, các khung ứng dụng và các ứng dụng cơ bản

Trang 22

2.2 Đặc điểm

2.2.1 Tính mở

Android được xây dựng từ dưới đi lên cho phép người phát triển tạo các ứng dụng

di động hấp dẫn với đầy đủ các điểm mạnh của các thiết bị cầm tay hiện có Android hoàn toàn mở, một ứng dụng có thể gọi tới bất kể một chức năng lõi của điện thoại như tạo cuộc gọi, gửi tin nhắn hay sử dụng máy ảnh, cho phép người phát triển tạo phong phú hơn, liên kết hơn các tính năng cho người dùng Android được xây dựng trên nhân Linux mở Thêm nữa, nó sử dụng một máy ảo mà đã được tối ưu hóa bộ nhớ và phần cứng với môi trường di động Android mà một mã nguồn mở, nó có thể được mở rộng

để kết hợp tự do giữa các công nghệ nổi trội Nền tảng này sẽ tiếp tục phát triển bởi cộng đồng phát triển để tạo ra các ứng dụng di động hoàn hảo

2.2.2 Tính ngang bằng của các ứng dụng

Với Android, không có sự khác nhau giữa các ứng dụng điện thoại cơ bản với ứng dụng của bên thứ ba Chúng được xây dựng để truy cập như nhau tới một loạt các ứng dụng và dịch vụ của điện thoại Với các thiết bị được xây dựng trên nền tảng Android, người dùng có thể đáp ứng đầy đủ các nhu cầu mà họ thích Chúng ta có thể đổi màn hình nền, kiểu gọi điện thoại, hay bất kể ứng dụng nào Chúng ta thậm chí có thể hướng dẫn điện thoại chỉ xem những ảnh mình thích

2.2.3 Phá vỡ rào cản phát triển ứng dụng

Android phá vỡ rào cản để tạo ứng dụng mới và cải tiến Một người phát triển có thể kết hợp thông tin từ trang web với dữ liệu trên điện thoại cá nhân – chẳng hạn như danh bạ, lịch hay vị trí trên bản đồ – để cung cấp chính xác hơn cho người khác Với Android, người phát triển có thể xây dựng một ứng dụng mà cho phép người dùng xem

vị trí của những người bạn và thông báo khi họ đang ở vị trí lân cận Tất cả được lập trình dễ dàng thông qua sự hỗ trợ của MapView và dịch vụ định vị toàn cầu GPS

2.2.4 Dễ dàng và nhanh chóng xây dựng ứng dụng

Android cung cấp bộ thư viện giao diện lập trình ứng dụng đồ sộ và các công cụ

để viết các ứng dụng phức tạp Ví dụ, Android có thể cho phép người phát triển biết được vị trí của thiết bị và cho phép các thiết bị giao tiếp với nhau để có thể tạo nên mạng xã hội chia sẻ ngang hàng rộng khắp Thêm nữa, Android còn bao gồm một bộ công cụ đầy đủ giúp cho việc phát triển trở nên dễ dàng

Trang 23

2.3 Kiến trúc của nền tảng Android

Hình 3:Nhân Linux trên Android

Android sử dụng nhân Linux 2.6 làm nhân cho các dịch vụ hệ thống như bảo mật, quản lý bộ nhớ, quản lý tiến trình (xử lý tiến trình, đa luồng), ngăn xếp mạng và trình điều khiển thiết bị (giao tiếp USB, giao tiếp hồng ngoại, không đây, v.v…) Nhân Linux này cũng có vai trò như một lớp trừu tượng giữa phần cứng và phần mềm

2.3.3 Thư viện và các giao diện lập trình ứng dụng

Android có một thư viện khá phong phú [9] cung cấp sẵn để người lập trình có thể

sử dụng Hình 4 là sơ đồ tóm tắt về hệ thống thư viện này

Hình 4:Thư viện lâp trình ứng dụng trên Android

2.3.3.1 Android runtime

Android có một tập các thư viện nòng cốt để cung cấp hầu hết các chức năng sẵn

có trong thư viện cốt lõi của ngôn ngữ lập trình Java

Mỗi ứng dụng Android đều chạy trong tiến trình của nó, với mỗi máy ảo Dalvik riêng Dalvik được viết để thiết bị có thể chạy nhiều máy ảo Dalvik một cách hiệu quả

Trang 24

Máy ảo Dalvik thực thi các tập tin thực thi Dalvik (.dex) đã được nén lại Máy ảo Dalvik dựa trên thanh ghi, chạy các lớp được biên dịch bằng bộ biên dịch ngôn ngữ Java và chuyển sang định dạng dex bằng công cụ “dx”.

Máy ảo Dalvik dựa trên nhân của Linux với các chức năng bên dưới như phân luồng và quản lý bộ nhớ mức thấp

2.3.3.2 Bộ thư viện

Android cung cấp một tập các thư viện C/C++ được các thành phần của Android

sử dụng khác nhau Khung ứng dụng Android mang lại nhiều khả năng cho những người phát triển Sau đây là một vài thư viện cơ bản:

Hệ thống thư viện C: một dẫn xuất của hệ thống thư viện C chuẩn cho

những thiết bị nhúng trên nền Linux

Thư viện đa phương tiện: sử dụng nhân mở PacketVideo, hỗ trợ nhiều

định dạng âm thanh, hình ảnh và cả video, bao gồm Mpeg4, H264, MP3, ACC, ẢM, JPG và PNG

Surface manager: quản lý việc truy cập tới các hệ thống hiển thị con và

việc kết hợp của các lớp đồ họa 2 chiều, 3 chiều từ nhiều ứng dụng

Thư viện cơ sở Web: một máy trình duyệt web hiện đại tận dụng sức mạnh

của trình duyệt Android, cho phép nhúng cửa sổ duyệt web cho ứng dụng

SGL (Scalable Graphics Library): cỗ máy đồ họa 2D của Android.

Thư viện 3D: được cài đặt trên dựa trên API của OpenGL ES 1.0; thư viện

bao gồm cả bộ cảm nhận gia tốc phần cứng 3D, tối ưu hóa các phần mềm 3D

FreeType: thư viện font chữ ảnh nhị phân và véc tơ.

SQLite: là thư viện truy xuất cơ sở dữ liệu nhỏ, mạnh, có sẵn trong mọi

ứng dụng Android

2.3.3.3 Khung ứng dụng

Hình 5:Khung ứng dụng

Trang 25

Android cho phép người phát triển có toàn quyền truy xuất vào các API khung được sử dụng bởi các ứng dụng nòng cốt Kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử dụng lại các thành phần, mỗi ứng dụng có thể cho phép các ứng dụng khác khả năng sử dụng các thành phần này Điều này giống với kỹ thuật cho phép người dùng đặt lại các thành phần

Dưới đây là tất cả các ứng dụng của hệ thống và các dịch vụ:

• Tập hợp phong phú của các Views sử dụng để xây dựng các ứng dụng, bao gồm các list, các grid, các text box, các button và thậm chí nhúng cả trình duyệt web

• Content Providers cho phép các ứng dụng truy xuất dữ liệu từ ứng dụng khác (ví dụ như danh bạ), hay chia sẻ dữ liệu

• Resource Manager cung cấp truy cập tới tài nguyên không phải mã nguồn như là các tập tin lưu các xâu, tập tin đồ họa, hay tập tin bố cục giao diện

• Notification Manager cho phép các ứng dụng hiển thị các thông báo trên thanh trạng thái

• Activity Manager quản lý vòng đời của các ứng dụng (từ khi chúng sinh

ra, được thực thi, chuyển sang trạng thái chờ, gọi thực thi lại và kết thúc)

2.3.3.4 Ứng dụng

Hình 6:Các ứng dụng trên Android

Đây là lớp trên cùng của kiến trúc nền tảng Android Android sẽ hoạt động với một bộ các ứng dụng bao gồm ứng dụng thư điện tử, gửi tin nhắn, lịch, bản đồ, trình duyệt web, danh bạ v.v… Tất cả các ứng dụng được viết bằng ngôn ngữ Java Các ứng dụng này có thể được cung cấp sẵn hoặc được phát triển bởi những lập trình viên

2.4 Các thành phần của ứng dụng

Một ứng dụng trên Android được cấu thành từ bốn thành phần cơ bản sau:

 Activities (Hoạt động)

 Services

Trang 26

 Broadcast Receivers

 Content Provider

Các thành phần này không nhất thiết phải có mặt đầy đủ trong ứng dụng Chúng ta

có thể xem các thành phần nào được sử dụng trong ứng dụng bằng việc xem khai báo trong file AndroidManifest.xml

2.4.1.2 Vòng đời của hoạt động

Các hoạt động trong hệ thống được quản lý bởi một cấu trúc dữ liệu ngăn xếp Khi

có một hoạt động được khởi tạo, nó được đẩy vào trong ngăn xếp, chuyển sang trạng thái thực thi và hoạt trộng trước đó sẽ chuyển sang trạng thái chờ Hoạt động này chỉ trở lại trang thái kích hoạt khi mà hoạt động vừa khởi tạo kết thúc việc thực thi

Một hoạt động có ba trạng thái chủ yếu đó là:

• Nếu hoạt động được hiển thị ngoài cùng của màn hình (hoạt động này nằm trên đỉnh ngăn xếp hoạt động), nó ở trong trạng thái thực thi

• Khi bị chiếm mất quyền điều khiển nhưng vẫn được hiển thị trên màn hình thì một hoạt động sẽ chuyển sang trạng thái tạm dừng Các thông tin

về trạng thái và các dữ liệu mà hoạt động đang sử dụng vẫn được lưu giữ (bởi chương trình quản lý của hệ thống) nhưng khi hệ thống rơi vào trạng thái thiếu bộ nhớ thì những thông tin trên có thể bị giải phóng

• Khi một hoạt động đang ở trạng thái dừng hoặc tạm dừng, hệ thống có thể xóa bỏ hoạt động khỏi bộ nhớ thông qua việc yêu cầu hoạt động này kết thúc

Trang 27

Biểu đồ sau mô tả trạng thái trong vòng đời của một hoạt động Hình chữ nhật viên còn thể hiện các phương thức Callback mà chúng ta có thể khai báo để gọi thực thi một số thao tác khi hoạt động chuyển sang trạng thái khác (phương thức Callback là phương thức được gọi lại bởi một phương thức khác khi có một sự kiện xảy ra) Các trạng thái chính của một hoạt động được thể hiện bởi các hình viên thuốc.

Trang 28

Hình 7:Vòng đời của một hoạt động

Trang 29

Vòng đời của một hoạt động có thể được thể hiện trong những quá trình sau:

Toàn bộ thời gian sống của một hoạt động bắt đầu từ lời gọi đầu tiên tới phương thức onCreate (Bundle) tới lời gọi phương thức onDestroy() Trong quá trình này, một hoạt động sẽ khởi tạo lại tất cả các tài nguyên cần sử dụng trong phương thức onCreate() và giải phóng chúng khi phương thức onDestroy() được thực thi

Thời gian sống có thể nhìn thấy của một hoạt động bắt đầu từ lời gọi tới phương thức onStart(), cho tới khi phương thức onStop() của nó được thực thi Toàn bộ các tài nguyên đang được sử dụng bởi hoạt động vẫn tiếp tục được lưu giữ, người dùng có thể thấy giao diện nhưng không tương tác được với hoạt động do trong qua trình này hoạt động không ở trạng thái chạy tiền cảnh

Thời gian sống tiền cảnh của một hoạt động là quá trình bắt dầu từ khi có lời gọi tới phương thức onResume() và kết thúc bằng lời gọi tới phương thức onPause() Trong thời gian này, hoạt động chạy ở tiền cảnh và có thể tương tác với người dùng

2.4.2 Dịch vụ

2.4.2.1 Khái niệm

Một dịch vụ (service) là các đoạn mã được thực thi ngầm bởi hệ thống mà người

sử dụng không thấy được Ví dụ như một chương trình chơi nhạc, sẽ có vài hoạt động cho phép người dùng duyệt danh sách các bài hát và lựa chọn bài nào để phát Tuy nhiên, chức năng chơi nhạc không được thiết kế như một hoạt động bởi chúng ta sẽ muốn chuyển qua cửa sổ khác, như khi soạn tin nhắn thì bài nhạc vẫn tiếp tục được chơi Trong trường hợp này, ứng dụng chơi nhạc sẽ khởi tạo một dịch vụ bằng cách sử dụng phương thức Context.startService()

Một ứng dụng có thể dễ dàng thực hiện liên kết tới một dịch vụ đang chạy (thậm chí khởi động nếu nó chưa thực thi) bằng phương thức Context.bindService() Khi đó dịch vụ này sẽ cung cấp cho ứng dụng cơ chế để giao tiếp với chúng thông qua giao diện gọi là IBinder (đối với dịch vụ chơi nhạc có thể cho phép dừng hoặc chuyển qua bài nhạc kế tiếp)

2.4.2.2 Vòng đời của một dịch vụ

Vòng đời của một dịch vụ được hiểu là quá trình hoạt động từ khi nó được tạo ra cho tới khi bị loại khỏi hệ thống Có hai cách thức để một dịch vụ có thể được chạy trong hệ thống:

Trang 30

Khi hệ thống có lời gọi tới phương thức Context.startService() Trong trường hợp này, dịch vụ sẽ được thực hiện liên tục cho tới khi hệ thống gọi phương thức Context.stopService().

Khi các ứng dụng gọi phương thức Context.bindService() để tạo kết nối với dịch

vụ (dịch vụ sẽ được khởi tạo nếu tại thời điểm đó nó đang không hoạt động) Ứng dụng

sẽ nhận được một đối tượng IBinder do dịch vụ trả lại để có thể gọi các phương thức Callback phù hợp để truy cập tới các trạng thái của dịch vụ Nếu do lời gọi Context.bindService() mà dịch vụ được khởi tạo thì nó sẽ được thực thi cho tới khi nào kết nối trên (tức là đối tượng IBinder) vẫn còn tồn tại

2.4.3 Bộ nhận quảng bá (Broadcast receivers)

2.4.3.1 Khái niệm

Bộ nhận quảng bá là một thành phần không làm gì cả nhưng nó nhận và phản hồi lại các thông báo quảng bá Nhiều quảng bá có nguồn gốc từ mã hệ thống, ví dụ thông báo thay đổi múi giờ, pin yếu, ảnh đã chụp hay thay đổi ngôn ngữ Các ứng dụng có thể khởi động quảng bá, ví dụ để các ứng dụng khác biết rằng dữ liệu đã được tải về xong trên thiết bị và sẵn sàng sử dụng

Một ứng dụng có thể có bất kỳ số lượng bộ nhận quảng bá nào để nhận những thông báo quan trọng với nó Tất cả các bộ nhận quảng bá được kế thừa từ lớp BroadcastReceiver

Bộ nhận quảng bá không có giao diện Tuy nhiên, chúng có thể khởi động một hoạt động để đáp lại thông tin mà nó nhận được, hay chúng có thể sử dụng NotificationManager để thông báo người dùng biết Các thông báo có thể được sự chú ý của người dùng theo các cách các nhau như là sáng màn hình, rung thiết bị, bật âm thanh nào đấy… Thông thường, chúng đặt thông báo trên thanh trạng thái, nơi người dùng có thể nhận được thông báo

2.4.4 Content provider

2.4.4.1 Khái niệm

Các ứng dụng có thể lưu trữ dữ liệu của mình trong các tập tin hoặc sử dụng cơ sở

dữ liệu SQLite sẵn có v.v… Content Provider có chức năng cung cấp một tập hợp các phương thức cho phép một ứng dụng có thể lưu trữ và lấy dữ liệu được quản lý bởi content provider đó

Content Provider là một đặc trưng riêng của Android, nhờ đó mà các ứng dụng có thể chia sẻ dữ liệu với nhau một cách dễ dàng

Trang 31

2.4.5 Các thành phần kích hoạt (các Intent)

Content provider được kích hoạt khi chúng được gọi từ một ContentResolver Ba thành phần khác (hoạt động, dịch vụ và bộ nhận quảng bá) được kích hoạt bởi thông điệp không đồng bộ từ các intent Một intent là một đối tượng có kiểu Intent chứa nội dung của thông điệp Với các hoạt động và dịch vụ, nó gọi tên hành động được yêu cầu

và xác định URI của dữ liệu tác động tới ở giữa Ví dụ, nó có thể truyền tải một yêu cầu cho một hoạt động hiển thị một ảnh cho người dùng hay cho phép người dùng sửa văn bản Với bộ nhận quảng bá, đối tượng Intent gọi tên của hành động được thông báo Ví

dụ, bộ nhận quản bá có thể thông báo các phần nó quan tâm là nút chụp ảnh đã được bấm

Có vài phương thức cho việc kích hoạt mỗi thành phần:

Một hoạt động được khởi chạy thông qua một đối tượng Intent Context.startActivity() hay Activity.startActivityForResult() Hoạt động đáp lại có thể theo dõi intent được tạo ra đó bằng phương thức getIntent() và cập nhật thông qua phương thức setIntent(Intent) Android gọi phương thức onNewIntent() để bỏ qua các intent đến trước nó

Một hoạt động thường bắt đầu hoạt động khác Nếu nó muốn trả lại kết quả hoạt động nó đã khởi chạy, nó sẽ gọi phương thức startActivityForResult() thay cho phương thức startActivity() Ví dụ, nếu nó khởi chạy một hoạt động mà cho phép người dùng lấy một ảnh, nó có thể muốn lấy kết quả của ảnh được chọn Kết quả được trả về trong một đối tượng Intent thông qua phương thức onActivityResult()

Một dịch vụ được bắt đầu thông qua một đối tượng Intent là Context.startService() Android gọi phương thức onStart() của dịch vụ và thông qua đối tượng Intent của nó

Tương tự, một intent có thể thông qua Context.bindService() để thiết lập một kết nối liên tục giữa các thành phần và dịch vụ đích Dịch vụ nhận đối tượng Intent qua lời gọi onBind() (nếu dịch vụ chưa được chạy, bindService() có thể chọn bắt đầu nó) Cho

ví dụ, một hoạt động có thể thiết lập kết nối với dịch vụ chơi nhạc đề cập ở phần trước

để nó có thể cung cấp cho người dùng giao diện sử dụng để điều khiển chơi lại Hoạt động sẽ gọi bindService để thiết lập kết nối và sau đó gọi phương thức đã định nghĩa bởi dịch vụ để áp dụng chơi lại ca khúc

Một ứng dụng có thể khởi tạo một quảng bá thông qua đối tượng Intent bằng phương thức như Context.setBroadcast(), Context.setOrderedBroadcast() và

Trang 32

Context.sendStickyBroadcast() Android chuyển những intent tới tất cả các bộ nhận quảng bá nào quan tâm bằng việc gọi phương thức onReceive() của nó.

2.4.6 Ngắt một thành phần

Một hoạt động có thể bị ngắt thông qua việc gọi phương thức finish() Một hoạt động có thể tắt một hoạt động khác (hoạt động đó được khởi động với lời gọi startActivityForResult()) bằng việc gọi finishActivity()

Để ngắt một dịch vụ chúng ta có thể sử dụng phương thức stopSelf(), hoặc bằng cách gọi Context.stopService()

Content provider được kích hoạt chỉ khi nó đáp lại yêu cầu từ một ContentResolver Bộ nhận quảng bá được kích hoạt chỉ khi nó đáp lại một thông điệp quảng bá Chúng ta không cần thiết phải tắt các thành phần này

2.4.7 Tập tin khai báo (manifest)

Trước khi có thể khởi chạy một ứng dụng thành phần, nó phải xem ứng dụng bao gồm những thành phần nào Thêm nữa, các ứng dụng khai báo các thành phần của nó trong một tập tin khai báo để đóng gói lại vào trong gói Android (tập tin apk chứa các

mã nguồn, tập tin và tài nguyên)

Tập tin này có cấu trúc của tập tin XML và luôn có tên là AndroidManifest.xml trong mọi ứng dụng Nó làm một số thứ như thêm và khai báo các thành phần của ứng dụng, tên các thư viện ứng dụng cần liên kết tới (ngoài thư viện chuẩn của Android) và xác định các quyền cho ứng dụng

Tuy nhiên, nhiệm vụ chính của tập tin khai báo là khai báo các thành phần của ứng dụng Một hoạt động có thể được khai báo như sau:

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

<manifest >

<application >

<activity android:name="com.example.project.FreneticActivity" android:icon="@drawable/small_pic.png"

Trang 33

Các thành phần khác được khai báo theo cách tương tự: <service> dịch vụ,

<receiver> bộ nhận quảng bá và <provider> content provider Các hoạt động, dịch vụ và content provider có thể cùng được khai báo trong tập tin khai báo hoặc có thể được tạo

tự động trong mã (như đối tượng BroadcastReceiver) và được đăng ký với hệ thống bằng cách gọi Context.registerReceiver()

2.4.8 Bộ lọc Intent

Một đối tượng Intent có thể có tên rõ ràng trong thành phần đích Nếu có, Android

sẽ tìm thành phần đó (dựa trên khai báo trong tập tin khai báo) và kích hoạt nó Nhưng nếu đích có tên không rõ ràng, Android phải xác định thành phần nào thích hợp nhất để đáp lại intent Nó thực hiện so sánh đối tượng Intent với bộ lọc intent trong các đích có khả năng Một thành phần của bộ lọc intent cho Android biết loại intent thành phần nào cần xử lý Giống các thông tin cơ bản, chúng được khai trong tập tin khai báo Đây là một ví dụ để thêm hai bộ lọc intent cho một hoạt động

Trang 34

dụng trên điện thoại Nói theo cách khác, hoạt động làm lối vào cho ứng dụng sẽ được khởi chạy, người dùng sẽ thấy khi chọn khởi chạy ứng dụng.

Bộ lọc thứ hai được khai báo để hoạt động có thể thực thi trên một kiểu dữ liệu đặc biệt

Một thành phần có thể có bao nhiêu số bộ lọc intent tùy thích, mỗi một cái lại được khai báo khác nhau cho các khả năng Nếu nó không có một bộ lọc nào, nó có thể được được kích hoạt bởi các intent khác gọi đến

Để tạo và đăng ký một bộ nhận quảng bá trong mã nguồn, bộ lọc intent tạo thẳng một đối tượng giống đối tượng IntentFilter Tất cả các bộ lọc khác đều được cài đặt trong tập tin khai báo

2.5 Công cụ hỗ trợ lập trình Android

Bộ công cụ phát triển phần mềm Android SDK gồm nhiều công cụ trợ giúp cho việc phát triển ứng dụng di động trên nền tảng Android Thành phần quan trọng nhất của bộ công cụ này là trình giả lập Android và bộ plug-in phát triển ứng dụng Android trên Eclipse ADT, bên cạnh đó bộ SDK cũng bao gồm các công cụ khác cho việc gỡ rối, đóng gói và cài đặt ứng dụng trên trình giả lập và trên thiết bị

Trình giả lập Android: Thực chất đây là một chương trình mô phỏng một thiết bị

di động ảo trên máy tính Chúng ta có thể sử dụng bộ giả lập này để thiết kế gỡ rối và kiểm tra ứng dụng của mình như trên thiết bị trước khi đưa chương trình vào thiết bị thật

Android Development Tools Plugin (cho Eclipse) viết tắt là ADT, Plugin này

hỗ trợ cho việc tạo và gỡ rối các ứng dụng và sử dụng môi trường phát triển tích hợp Eclipse trở nên dễ dàng hơn

Trình gỡ rối Dalvik Debug Monitor Service (DDMS): giúp quản lý các tiến

trình trong bộ giả lập hoặc thiết bị và trợ giúp việc gỡ rối ứng dụng Có thể sử dụng công cụ này để hủy các tiến trình, chọn một tiến trình cụ thể để gỡ rối, sinh các dữ liệu truy vết, xem bộ nhớ heap và thông tin về các luồng, chụp ảnh màn hình của trình giả lập

Android Debug Bridge (adb): Công cụ này cho phép cài đặt các tập tin apk trên

bộ giả lập hoặc thiết bị, đồng thời hỗ trợ truy cập hai đối tượng này từ cửa sổ dòng lệnh

Android Asset Packaging Tool (aapt): Công cụ để tạo tập tin apk chứa các mã

nhị phân và tài nguyên của một ứng dụng Android

Trang 35

sqlite3: Đây là công cụ để truy cập các tập tin dữ liệu SQLite được tạo ra và sử

dụng bởi một ứng dụng Android

dx: Đây là công cụ biên dịch các tập tin class thành mã bytecode chạy trên máy

ảo Dalvik (lưu trữ dưới dạng tập tin dex)

mksdcard: Giúp tạo một tập tin ảnh lưu trữ dữ liệu mà ta có thể sử dụng trên bộ

giả lập, để mô phỏng sự có mặt của một thẻ nhớ ngoài (như thẻ SD)

Android Virtual Devices (AVD): Cho phép chúng ta có thể tạo cấu hình thiết bị

ảo, mô phỏng các đặc điểm của bộ giả lập Android Với mỗi cấu hình, ta có thể xác định nền tảng cho nó chạy, tùy chỉnh phần cứng hay giao diện sử dụng Mỗi tùy chỉnh của AVD sẽ như một thiết bị độc lập với dữ liệu lưu trữ của nó, thẻ nhớ SD, v.v…

Trang 36

Chương 3: Mã vạch, mã QR và thư viện Zxing

Trong nội dụng của chương này, khóa luận sẽ đi trình bày khái niệm về mã vạch, các ứng dụng của mã vạch ngày nay, tiếp đến là giới thiệu một mã vạch hai chiều rất mạnh, đấy chính là mã vạch QR, gọi tắt là mã QR Chương này cũng giới thiệu về thư viện mã nguồn mở Zxing có thể đọc nhiều định dạng mã vạch

3.1 Mã vạch

3.1.1 Khái niệm

Mã vạch [10] là sự thể hiện thông tin trong các dạng nhìn thấy trên các bề mặt mà máy móc có thể đọc được Nguyên thủy thì mã vạch lưu trữ dữ liệu theo bề rộng của các vạch được in song song cũng như của khoảng trống giữa chúng, nhưng ngày nay chúng còn được in theo các mẫu của các điểm, theo các vòng tròn đồng tâm hay chúng ẩn trong các hình ảnh Mã vạch có thể được đọc bởi các thiết bị quét quang học gọi là máy đọc mã vạch hay được quét từ hình ảnh bằng các phần mềm chuyên biệt

Nội dung của mã vạch là thông tin về sản phẩm như: Nước sản xuất, tên doanh nghiệp, lô, tiêu chuẩn chất lượng đăng ký, thông tin về kích thước sản phẩm, nơi kiểm tra

Các dữ liệu chứa trong mã vạch thay đổi tùy theo ứng dụng Trong trường hợp đơn giản nhất là một chuỗi số định danh được sử dụng như là chỉ mục trong cơ sở dữ liệu trong đó toàn bộ các thông tin khác được lưu trữ Các mã EAN-13 và UPC tìm thấy phổ biến trên hàng bán lẻ làm việc theo phương thức này

Trong các trường hợp khác, mã vạch chứa toàn bộ thông tin về sản phẩm, mà không cần cơ sở dữ liệu ngoài Điều này dẫn tới việc phát triển mã vạch tượng trưng mà

có khả năng biểu diễn nhiều hơn là chỉ các số thập phân, có thể là bổ sung thêm các ký

tự hoa và thường của bảng chữ cái cho đến toàn bộ bảng mã ký tự ASCII và nhiều hơn

Ngày đăng: 23/11/2012, 13:44

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Smartphone. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia: http://en.wikipedia.org/wiki/Smartphone Sách, tạp chí
Tiêu đề: Smartphone
[2] Mobile Development mindmap. (n.d.). Được lấy từ trang Mobile Development: http://mobilephonedevelopment.com/archives/600 Sách, tạp chí
Tiêu đề: Mobile Development mindmap
[3] Binary Runtime Environment for Wireless. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia:http://en.wikipedia.org/wiki/Binary_Runtime_Environment_for_Wireless Sách, tạp chí
Tiêu đề: Binary Runtime Environment for Wireless
[4] What is BREW? (n.d.). Được lấy từ trang Tech-FAQ.com: http://www.tech-faq.com/brew.shtml Sách, tạp chí
Tiêu đề: What is BREW
[5] Symbian OS. (n.d.). Được lấy từ trang Answers.com: http://www.answers.com/topic/symbian-os Sách, tạp chí
Tiêu đề: Symbian OS
[6] Blackberry. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia: http://en.wikipedia.org/wiki/Blackberry Sách, tạp chí
Tiêu đề: Blackberry
[7] iPhone. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia: http://en.wikipedia.org/wiki/IPhone Sách, tạp chí
Tiêu đề: iPhone
[8] What is Android? (n.d.). Được lấy từ trang Android Offical Website: http://www.android.com/about/ Sách, tạp chí
Tiêu đề: What is Android
[9] Application Fundamentals (n.d.). Được lấy từ trang Android Offical Website: http://developer.android.com/guide/topics/fundamentals.html Sách, tạp chí
Tiêu đề: Application Fundamentals
[10] Mã vạch. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia: http://vi.wikipedia.org/wiki/Mã_vạch Sách, tạp chí
Tiêu đề: Mã vạch
[11] Mã QR. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia: http://vi.wikipedia.org/wiki/Mã_QR Sách, tạp chí
Tiêu đề: Mã QR
[12] zxing - Google Code. (n.d.). Được lấy từ trang Google Code: http://code.google.com/p/zxing/ Sách, tạp chí
Tiêu đề: zxing - Google Code
[17] DiMarzio Jerome. Android a Programmer’s Guide. Nhà xuất bản McGraw-Hill Osborne Media, 2008 Sách, tạp chí
Tiêu đề: Android a Programmer’s Guide
Nhà XB: Nhà xuất bản McGraw-Hill Osborne Media
[18] Haseman Chris. Android Essentials. Nhà xuất bản Apress, 2009 Sách, tạp chí
Tiêu đề: Android Essentials
Nhà XB: Nhà xuất bản Apress

HÌNH ẢNH LIÊN QUAN

Bảng 1:Thị trường di động năm 2008 [1] - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Bảng 1 Thị trường di động năm 2008 [1] (Trang 13)
Bảng 1:Thị trường di động năm 2008 [1] - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Bảng 1 Thị trường di động năm 2008 [1] (Trang 13)
Hình 2:Điện thoại Android, HTC Dream (trái) và HTC Magic (phải) - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 2 Điện thoại Android, HTC Dream (trái) và HTC Magic (phải) (Trang 21)
Hình 2:Điện thoại Android, HTC Dream (trái) và HTC Magic (phải) - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 2 Điện thoại Android, HTC Dream (trái) và HTC Magic (phải) (Trang 21)
Hình 4:Thư viện lâp trình ứng dụng trên Android - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 4 Thư viện lâp trình ứng dụng trên Android (Trang 23)
Hình 4:Thư viện lâp trình ứng dụng trên Android - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 4 Thư viện lâp trình ứng dụng trên Android (Trang 23)
Hình 3:Nhân Linux trên Android - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 3 Nhân Linux trên Android (Trang 23)
định dạng âm thanh, hình ảnh và cả video, bao gồm Mpeg4, H264, MP3, ACC, ẢM, JPG và PNG. - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
nh dạng âm thanh, hình ảnh và cả video, bao gồm Mpeg4, H264, MP3, ACC, ẢM, JPG và PNG (Trang 24)
Hình 5:Khung ứng dụng - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 5 Khung ứng dụng (Trang 24)
Hình 6:Các ứng dụng trên Android - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 6 Các ứng dụng trên Android (Trang 25)
Hình 6:Các ứng dụng trên Android - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 6 Các ứng dụng trên Android (Trang 25)
Hình 7:Vòng đời của một hoạt động - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 7 Vòng đời của một hoạt động (Trang 28)
Hình 7:Vòng đời của một hoạt động - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 7 Vòng đời của một hoạt động (Trang 28)
Hình 8:Một ảnh mã QR - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 8 Một ảnh mã QR (Trang 37)
Hình 8:Một ảnh mã QR - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 8 Một ảnh mã QR (Trang 37)
Bảng 2:Mối quan hệ giữa tác nhân và các ca sử dụng - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Bảng 2 Mối quan hệ giữa tác nhân và các ca sử dụng (Trang 44)
Bảng 2:Mối quan hệ giữa tác nhân và các ca sử dụng - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Bảng 2 Mối quan hệ giữa tác nhân và các ca sử dụng (Trang 44)
Hình 10:Biểu đồ tuần tự của hệ thống - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 10 Biểu đồ tuần tự của hệ thống (Trang 47)
Hình 10:Biểu đồ tuần tự của hệ thống - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 10 Biểu đồ tuần tự của hệ thống (Trang 47)
Hình 11:Biểu đồ tuần tự ca sử dụng Encode - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 11 Biểu đồ tuần tự ca sử dụng Encode (Trang 48)
Hình 11:Biểu đồ tuần tự ca sử dụng Encode - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 11 Biểu đồ tuần tự ca sử dụng Encode (Trang 48)
Bảng 6:Biểu đồ tuần tự ca sử dụng Decode files - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Bảng 6 Biểu đồ tuần tự ca sử dụng Decode files (Trang 49)
Bảng 6:Biểu đồ tuần tự ca sử dụng Decode files - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Bảng 6 Biểu đồ tuần tự ca sử dụng Decode files (Trang 49)
Hình 12:Biểu đồ tuần tự ca sử dụng Decode Images - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 12 Biểu đồ tuần tự ca sử dụng Decode Images (Trang 50)
Hình 12:Biểu đồ tuần tự ca sử dụng Decode Images - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 12 Biểu đồ tuần tự ca sử dụng Decode Images (Trang 50)
Hình 13:Biểu đồ hoạt động của hệ thống - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 13 Biểu đồ hoạt động của hệ thống (Trang 51)
Hình 13:Biểu đồ hoạt động của hệ thống - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 13 Biểu đồ hoạt động của hệ thống (Trang 51)
Hình 14:Biểu đồ lớp của hệ thống - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 14 Biểu đồ lớp của hệ thống (Trang 54)
Hình 14:Biểu đồ lớp của hệ thống - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 14 Biểu đồ lớp của hệ thống (Trang 54)
4.5 Thiết kế giao diện - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
4.5 Thiết kế giao diện (Trang 55)
4.6.1.1 Ca kiểm thử sử dụng mã hóa tập tin - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
4.6.1.1 Ca kiểm thử sử dụng mã hóa tập tin (Trang 55)
Hình 15:Thiết kế giao diện chương trình - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 15 Thiết kế giao diện chương trình (Trang 55)
Bảng 7:Bảng ca kiểm thử mã hóa tập tin - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Bảng 7 Bảng ca kiểm thử mã hóa tập tin (Trang 56)
Bảng 8:Bảng ca kiểm thử giải mã tập tin - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Bảng 8 Bảng ca kiểm thử giải mã tập tin (Trang 57)
4.6.2 Kết quả thực nghiệm - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
4.6.2 Kết quả thực nghiệm (Trang 58)
Hình 16:Mã hóa tập tin ringtone.mid - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 16 Mã hóa tập tin ringtone.mid (Trang 58)
Bảng 9:Bảng ca kiểm thử giải mã ảnh - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Bảng 9 Bảng ca kiểm thử giải mã ảnh (Trang 58)
Bảng 9:Bảng ca kiểm thử giải mã ảnh - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Bảng 9 Bảng ca kiểm thử giải mã ảnh (Trang 58)
Hình 16:Mã hóa tập tin ringtone.mid - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 16 Mã hóa tập tin ringtone.mid (Trang 58)
Hình 17:Các ảnh mã QR được chương trình tạo ra từ tập tin MID ringtone.mid - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 17 Các ảnh mã QR được chương trình tạo ra từ tập tin MID ringtone.mid (Trang 61)
Hình 17:Các ảnh mã QR được chương trình tạo ra từ tập tin MID - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 17 Các ảnh mã QR được chương trình tạo ra từ tập tin MID (Trang 61)
Nhập đường dẫn Màn hình chờ giải mã - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
h ập đường dẫn Màn hình chờ giải mã (Trang 62)
Hình 18:Một số hình ảnh về giải mã các tập tin ảnh - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 18 Một số hình ảnh về giải mã các tập tin ảnh (Trang 62)
Hình 18:Một số hình ảnh về giải mã các tập tin ảnh - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 18 Một số hình ảnh về giải mã các tập tin ảnh (Trang 62)
Hình 20:Màn hình chính của chương trình - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 20 Màn hình chính của chương trình (Trang 64)
Hình 19:Màn hình danh sách các ứng dụng - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 19 Màn hình danh sách các ứng dụng (Trang 64)
Hình 20:Màn hình chính của chương trình - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 20 Màn hình chính của chương trình (Trang 64)
Hình 19:Màn hình danh sách các ứng dụng - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 19 Màn hình danh sách các ứng dụng (Trang 64)
Hình 21:Cửa sổ chức năng mã hóa - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 21 Cửa sổ chức năng mã hóa (Trang 65)
Hình 23:Nhập đường dẫn tập tin ảnh đầu tiên được mã hóa - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 23 Nhập đường dẫn tập tin ảnh đầu tiên được mã hóa (Trang 65)
Hình 21:Cửa sổ chức năng mã hóa - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 21 Cửa sổ chức năng mã hóa (Trang 65)
Hình 22:Cửa sổ giải mã - ứng dụng lưu trữ thông tin bằng chuỗi mã vạch
Hình 22 Cửa sổ giải mã (Trang 65)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w