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

NGHIÊN cứu PHÁT TRIỂN PHẦM mềm NHÚNG CHO các THIẾT bị cầm TAY TRÊN nền TẢNG ANDROID LUẬN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (921.23 KB, 26 trang )

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

NGUYỄN THỊ THU HIỀN

NGHIÊN CỨU PHÁT TRIỂN PHẦM MỀM NHÚNG
CHO CÁC THIẾT BỊ CẦM TAY TRÊN
NỀN TẢNG ANDROID

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

HÀ NỘI, 2013

1


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

NGUYỄN THỊ THU HIỀN

NGHIÊN CỨU PHÁT TRIỂN PHẦM MỀM NHÚNG
CHO CÁC THIẾT BỊ CẦM TAY TRÊN
NỀN TẢNG ANDROID
Ngành:
Chuyên ngành:
Mã số:

Công nghệ thông tin
Công nghệ phần mềm
60.48.10



LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. LÊ QUANG MINH

HÀ NỘI, 2013

2


MỤC LỤC

LỜI CAM ĐOAN.................... Error! Bookmark not defined.
MỤC LỤC ............................................................................ 3
DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT .................. 5
DANH MỤC HÌNH VẼ, ĐỒ THỊ ....................................... 6
DANH MỤC BẢNG ............................................................ 7
MỞ ĐẦU............................................................................... 8
1.1.Nghiên cứu khảo sát bài toán ...................................................... 10
1.2. Phân tích bài toán ....................................................................... 11
1.3. Hệ điều hành di động .................................................................. 11
1.3.1. Đặc điểm của hệ điều hành di động .............................................. 11
1.3.2. So sánh hệ điều hành Android với các hệ điều hành iOS ............ 12
1.3.3. Mã nguồn mở ................................................................................ 13

2.1.Tổng quan về Android ................................................................. 14
2.1.1. Android là gì? ................................................................................ 14
2.1.2. Lịch sử phát triển Android ............................................................ 14
2.1.3. Các phiên bản Android .................................................................. 15


2.2. Kiến trúc của hệ điều hành Android ......................................... 20
2.2.1. Tầng Linux Kernel ........................................................................ 21
2.2.2. Tầng Libraries + Android Runtime ............................................... 21
2.2.3. Tầng Application Framework ....................................................... 23
2.2.4. Tầng Application ........................................................................... 24

2.3. Hệ thống tập tin trên Android ................................................... 25
2.4. Quá trình khởi tạo Android ....................................................... 26
2.5. Khả năng hỗ trợ phát triển ứng dụng........................................ 28
2.5.1. Yêu cầu về phần cứng ................................................................... 28
2.5.2. Android SDK ................................................................................. 28
3


2.5.3. Java Development Kit (JDK) ......................................................... 30
2.5.4. Eclipse IDE.................................................................................... 30
2.5.5. Android Emulator ......................................................................... 30

CHƯƠNG 3: TÍCH HỢP ANDROID VỚI THIẾT BỊ
PHẦN CỨNG ..................................................................... 32
3.1. Lựa chọn phần cứng ................................................................... 32
3.1.1. Chuẩn bị lựa chọn phần cứng ...................................................... 32
3.1.2. Lựa chọn thiết bị ........................................................................... 36

3.2. Thiết lập môi trường phát triển ................................................. 39
3.3. Quá trình tích hợp Android ....................................................... 40

CHƯƠNG 4: PHÁT TRIỂN PHẦN MỀM TRÊN
ANDROID .......................................................................... 47
4.1. Cấu trúc của một ứng dụng........................................................ 47

4.1.1. Activity ........................................................................................... 47
4.1.2. Service ........................................................................................... 49
4.1.3. Content Provider............................................................................ 50
4.1.4. Intent ............................................................................................. 51
4.1.5. Broadcast Receiver ........................................................................ 51
4.1.6. Notification .................................................................................... 51

4.2. Xây dựng ứng dụng .................................................................... 51
4.2.1. Mục tiêu của ứng dụng ................................................................. 51
4.2.2. Yêu cầu về chức năng ................................................................... 52
4.2.3. Mô hình Usecase ........................................................................... 52
4.2.4. Biểu đồ tuần tự của hệ thống ........................................................ 53
4.2.5. Thiết kế các thành phần ................................................................ 54
4.2.4. Tính năng hỗ trợ tương tác ........................................................... 55

4.3. Kết quả phát triển và thử nghiệm .............................................. 57

KẾT LUẬN ........................................................................ 59
TÀI LIỆU THAM KHẢO ................................................. 61
4


MỞ ĐẦU
Trong những năm gần đây, với sự phát triển của nền kinh tế và tri thức, kèm
theo đó là sự phát triển về công nghệ đặc biệt là công nghệ số. Cùng với nó là sự ra
đời của hệ điều hành mã nguồn mở, công nghệ, chuẩn kết nối, cho phép các nhà khoa
học có thể tùy ý lựa chọn và xây dựng các thiết bị cầm tay theo những chức năng
khác nhau.
Trong các hệ nhúng thì hệ điều hành hay được sử dụng nhất hiện nay là
Embeded Linux, Win CE, DOS, Lynyos, .. Và mới đây, thì hệ thống nhúng và phần

mềm nhúng đang được kêu gọi phát triển trên hệ điều hành Android. Đứng ở góc độ
nghiên cứu và phát triển phần mềm nhúng cho các thiết bị cầm tay. Android được lựa
chọn bởi tính tương thích cao, hệ điều hành mở, miễn phí và có khả năng cạnh tranh
tốt với các hệ điều hành khác và không phụ thuộc vào duy nhất một nhà sản xuất
phần cứng nào. Với tiềm năng về thị trường tablet cùng với sự hỗ trợ của hệ điều
hành Android đã tạo ra cơ hội lớn cho các nhà sản xuất công nghệ. Và với lợi ích và
xu hướng công nghệ mới, thông qua đề tài “ Nghiên cứu phát triển phần mềm nhúng
cho các thiết bị cầm tay trên nền tảng Android”, tôi hướng tới việc đưa ra cách tích
hợp hệ điều hành Android cho phần cứng của nhiều nhà cung cấp thiết bị, cũng như
việc phát triển ứng dụng trên hệ điều hành này.
Dựa trên quy trình phát triển phần mềm nhúng, trong phạm vi của đề tài tôi xin
trình bày những nội dung chính như sau:
- Chương 1: Tổng quan về đề tài.
- Chương 2: Tìm hiểu hệ điều hành Android.
- Chương 3: Tích hợp Android với thiết bị phần cứng.
- Chương 4: Phát triển phần mềm trên Android.
Sau đây là nội dung trình bày chi tiết của Luận văn.

2


CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI

1.1.Nghiên cứu khảo sát bài toán
Máy tính bảng với những ưu điểm về tính di động, có kết nối đa dạng, màn
hình cảm ứng, giải trí tiện lợi, phong phú về ứng dụng. Đặc biệt là các nhà sản xuất
đã đưa ra sự lựa chọn mà được coi là chiếm ưu thế nhất cho thị trường hiện nay là sử
dụng hệ điều hành Android cho nó. Tuy nhiên những máy tính bảng này vẫn đang có
nhược điểm cơ bản là quá đa dụng và chưa hướng tới đối tượng chuyên gia, học sinh,
không phù hợp với đại đa số người học ở Việt Nam là giá thành của chúng còn tương

đối cao (khoảng 500USD), chính vì vậy việc thiết kế, chọn lựa các chức năng cần
thiết và cấu hình phù hợp, giá thành thấp để phục vụ cho đối tượng người học là một
đề tài cấp thiết và có ý nghĩa khoa học, thực tiễn.
Dựa vào lợi thế đó của hệ điều hành Android, mà thông qua đề tài “ Nghiên
cứu phát triển phần mềm nhúng cho các thiết bị cầm tay trên nền tảng Android”. Tôi
hướng tới việc người dùng cuối có thể làm chủ cả về công nghệ tích hợp hệ điều hành
Android cho phần cứng của nhiều nhà cung cấp thiết bị, cũng như việc phát triển các
phần mềm ứng dụng đáp ứng nhu cầu người sử dụng. Sở dĩ, phần mềm nhúng là phần
mềm do nhà sản xuất thiết bị cài sẵn vào sản phẩm và chúng được sử dụng ngay cùng
với đồ điện tử đó mà không cần có sự cài đặt của người thứ ba [19].
1.2. Phân tích bài toán
Phần mềm ứng dụng nhúng hiện nay chủ yếu được thực hiện trên các dòng
điện thoại thông minh, các máy tính bảng, không chỉ là các hệ thống điều khiển thay
thế máy tính, mà nó còn là các ứng dụng mang tính chất hỗ trợ và giải trí cho người
sử dụng. Với tính năng nổi bật của mình cộng với các phiên bản mới, từ phiên bản
3.0 trở đi đã được phát triển cho các thiết bị cầm tay máy tính bảng sẽ phù hợp với xu
hướng phát triển các phầm mềm qua Internet và dịch vụ cung cấp dữ liệu.
Hiện nay sản phẩm nhúng rất đa dạng bởi nhiều công ty tham gia sản xuất và
chế tạo, nhưng hiện nay chip được cung cấp phần lớn dựa trên bộ vi xử lý ARM. Đối
với ARM, do có đặc điểm tiết kiệm được năng lượng, tiêu tán công suất thấp nên nó
được coi là sản phẩm chiếm ưu thế trong các sản phẩm điện thoại di động. Vì vậy,
trong toàn bộ luận văn này, tôi sẽ trình bày nội dung nghiên cứu dựa trên vi xử lý
ARM.
Do phần mềm nhúng chạy trên nền tảng Android, sẽ chạy trên phần cứng thông
qua hệ điều hành. Do vậy đề tài chủ yếu tập trung vào cơ chế tích hợp hệ điều hành
Android với phần cứng đề xuất và cách phát triển phần mềm nhúng trên hệ điều hành
Android.
3



1.3. Hệ điều hành di động
1.3.1. Đặc điểm của hệ điều hành di động
Hệ điều hành là “một chương trình chạy trên máy tính, nó điều phối mọi hoạt
động về phần cứng và phần mềm trong máy tính”.Với một số các đặc điểm đặc thù
mà các hệ điều hành chạy trên máy tính thường không có như:
- Tối ưu về bộ nhớ.
- Tối ưu về điện năng.
- Tính tương thích cao.
1.3.2. So sánh hệ điều hành Android với các hệ điều hành iOS
Bảng 1.1. So sánh Android với iOS
Tính năng
Nhân của HĐH

Kiến trúc phân
tầng

Máy ảo

Đa nhiệm

Android

iOS

Linux 2.6

iOS

Bao gồm 4 tầng
Bao gồm 4 tầng

- Linux kernel
- Core Services
- Android Runtime and
- Graphics & Media
Libraries
- Application Framework
- Application Framework
- User Experience
- Applications

Không
Có khả năng chạy đa nhiệm
nhiều ứng dụng một thời
điểm không phân biệt loại
ứng dụng

Phiên bản mới nhất hỗ trợ chạy
đa nhiệm nhưng hạn chế. Chỉ
cho phép chạy một số loại ứng
dụng

Xử lý đồ họa và âm Sử dụng Media Framework Sử dụng tầng Graphics & Media
và OpenGL/ES nằm trong để tập trung các tác vụ xử lý
thanh
tầng Libraries để xử lý
1.3.3. Mã nguồn mở
Mã nguồn mở được biết tới dưới tên FOSS (Free and Open Source Software)
là “những phần mềm mà người dùng có thể sửa đổi, cải tiến, phát triển và nâng cấp
theo một số nguyên tắc chung đã được quy định từ trước”. Ngoài ưu điểm về giá
thành sản phẩm thì mã nguồn mở còn có rất nhiều điểm hấp dẫn khác nữa như:

-Chất lượng.
- Bảo mật.

4


- Tính tùy biến.
- Chi phí.
Trên đây là một số các điểm hấp dẫn của mã nguồn mở đem tới khiến người sử
dụng và các nhà sản xuất khó có thể từ chối các sản phẩm mã nguồn mở . Và tiếp
theo chương 2 của luận văn là phần trình bày tổng quan về hệ điều hành sử dụng mã
nguồn mở Android.

5


CHƯƠNG 2: TÌM HIỀU HỆ ĐIỀU HÀNH ANDROID
Trước khi đi tìm hiểu về nội dung chính của luận văn về cách tích hợp hệ điều
hành Android và triển khai một sản phẩm nhúng như thế nào, trong chương này đưa
ra một số mô tả tổng quan hệ điều hành Android, lịch sử phát triển, các phiên bản,
kiến trúc cũng như hệ thống file trên Android.
2.1.Tổng quan về Android
2.1.1. Android là gì?
Android là một hệ điều hành mã nguồn mở di động kết hợp và xây dựng dựa
trên các phần của nhiều dự án mã nguồn mở khác nhau được phát triển bởi Google và
Open Hadset Alliance [10] .
Nền tảng chính của Android là Java, nó sử dụng thư viện Java và các ứng dụng
được viết mã theo ngôn ngữ lập trình C, C++, Java …
2.1.2. Lịch sử phát triển Android
Ban đầu, Android được phát triển bởi công ty liên hợp Android sau đó được

Google mua lại vào tháng 7 năm 2005. Những thành viên của Android chuyển sang
làm việc tại Google gồm có Andy Rubin, Rich Miner, Nick Sears và Chris White. Tại
Google họ đã bắt đầu phát triển nền tảng thiết bị di động dựa trên hạt nhân Linux với
hệ thống mềm dẻo, linh động và có khả năng nâng cấp mở rộng cao. Các nhà phát
triển viết ứng dụng Android dựa trên ngôn ngữ Java. Vào ngày 5 tháng 11 năm 2007
sự ra mắt của Android gắn với thành lập của Open Hadset Alliance bao gồm 78 công
ty phần cứng, phần mềm và viễn thông với mục đích phát triển các tiêu chuẩn mở cho
thiết bị di động [10, 27] .
Ngày 9 tháng 12 năm 2008, thêm 14 thành viên mới tham gia vào dự án
Android được công bố. Đến tháng 10 năm 2008, Android đã bắt đầu lưu hành mã
nguồn mở. Điểm đặc biệt của ứng dụng Android chính là các phiên bản của nó, các
phiên bản này được tạo ra theo thứ tự chữ cái và đều được đặt theo một món tráng
miệng nào đó. Mỗi phiên bản có phiên bản phụ và được phát hành định kỳ, các phiên
bản phụ được phát hành theo các tháng khác nhau trong cùng một năm. Phiên bản
đầu tiên được phát hành vào tháng 11 năm 2007 và sau đó có nhiều bản cập nhật đã
được thực hiện từ hệ điều hành gốc của nó, từng lỗi sửa cập nhật và bổ sung các tính
năng mới tới các phiên bản trước.
Và trong thống kê của Google về số người sử dụng Android trong tháng
4/2013 vừa rồi thì thiết bị chạy Android Jelly Bean chiếm tới 26.1%, thiết bị chạy

6


Android 4.0 Ice Cream Sandwich chiếm 27.5% và Android 2.3. Gingerbread là
38.4%.
2.2. Kiến trúc của hệ điều hành Android

Hình 2.1. Kiến trúc hệ điều hành Android
2.2.1. Tầng Linux Kernel
Android sử dụng nhân Linux 2.6 đã được sửa đổi để xử lý tất cả các chức năng

như các nền tảng kết nối mạng, quản lý bộ nhớ và tiến trình, bảo mật,… cũng như các
thiết bị phần cứng [3].
Tầng Linux Kernel là nhân của hệ điều hành Android, các xử lý của hệ thống
đều phải thông qua nó. Tầng này cung cấp các thiết bị phần cứng như: Display,
Bluetooth, Cemera, USB, WiFi, Power Management, Audio, Keypad, …
2.2.2. Tầng Libraries + Android Runtime
2.2.2.1. Libraries
Hệ điều hành Android bao gồm một tập các thư viện C/C++ được sử dụng bởi
nhiều thành phần khác nhau của hệ thống Android, những tính năng này cung cấp cho
các nhà lập trình thông qua bộ framework của Android. Sau đây là một số thư viện
cốt lõi trong Android [3].
+ LibC: một thể hiện được xây dựng từ BSD (Berkeley Software Distribution)
của hệ thống thư viện C chuẩn, được điều chỉnh để tối ưu hóa cho các thiết bị chạy
trên nền Linux.

7


+ Media library: thư viện dựa trên mã nguồn mở PacketVideo, phổ biến hỗ trợ
phát lại và ghi âm trên audio và định dạng video, cũng như các file ảnh tĩnh như
MPEG4, H.264, MP3, AAC, AMR, JPG, PNG.
+ Surface Manager: quản lý hiển thị truy cập tới các hệ thống con và kết hợp
đồ họa 2D và 3D từ nhiều ứng dụng.
+ Webkit engine: Cung cấp thư viện của trình duyệt web.
+ SGL: thư viện đồ họa 2D cơ bản.
+ 3D Libraries: được thực hiện dựa trên OpenGL ES 1.0 APIs; thư viện sử
dụng các tăng tốc 3D bằng phần cứng và phần mềm để tối ưu hóa hiển thị 3D.
+ FreeType: cung cấp các font chữ vector, phông chữ bitmap cho các ký tự và
hỗ trợ các hoạt động liên quan đến dựng hình font chữ khác.
+ SQLite: Cơ sở dữ liệu nhỏ và mạnh có sẵn cho tất cả các ứng dụng.

2.2.2.2. Android Runtime
Android Runtime bao gồm Dalvik Virtual Machine (Dalvik VM) và thư viện
cốt lõi Java phát triển bởi Google, đây là những thành phần chính trong ngăn xếp
phần mềm của Android.
a. Dalvik VM
Dalvik là máy ảo giúp các ứng dụng java có thể chạy được trên các thiết bị di
động thuộc hệ điều hành Andoid, nó chạy các ứng dụng đã được chuyển đổi thành
một file thực thi Dalvik (dex).
Dalvik VM chạy các file .dex được tạo ra từ các file .class hoặc .jar bằng cách
sử dụng một công cụ có tên dx . Khi chuyển đổi từ file .class (hoặc .jar) sang file
.dex, công cụ dx nhúng các file .class vào một file .dex duy nhất, bản sao các chuỗi
và các hằng số khác được gộp vào và được tham chiếu toàn cục để tiết kiệm không
gian và bytecode của Java được chuyển đổi thành một tập lệnh thay thế.
Hơn thế nữa, khi một ứng dụng được cài đặt trên thiết bị, việc tối ưu hóa được
thực hiện như thứ tự byte trao đổi liên kết tĩnh, inline các phương thức có nguồn gốc
đặc biệt, xóa bỏ các phương thức rỗng và rút ngắn gọn các đối tượng class. Ngoài ra,
Dalvik VM được thiết kế cho nhiều trường hợp đang chạy trên cùng một thiết bị tại
cùng một thời điểm một cách hiệu quả.

8


b. Core Libraries
Các thư viện Java cốt lõi cung cấp các cấu trúc dữ liệu phổ biến và các thuật
toán tìm thấy trong tiện ích thư viện. Chúng bao gồm các chức năng I/O, các tiện ích,
các container, …
2.2.3. Tầng Application Framework
Tầng Application Framework cung cấp một loạt các dịch vụ như:
a. Activity Manager: Quản lý vòng đời của ứng dụng cũng như cung cấp công cụ
điều khiển Activity. Bên trong hệ thống các Activity được quản lý như một

Activity stack. Khi một Activity được bắt đầu, nó được đặt ở đỉnh của stack và
trở thành Activity đang chạy, Activity trước sẽ ở bên dưới activity mới và sẽ
không thấy trong suốt quá trình activity mới tồn tại.
b. Package Manager: dùng để nạp các file ứng dụng đuôi .apk.
c. Window Manager: quản lý việc xây dựng và hiển thị các giao diện người dùng,
tổ chức quản lý giao diện giữa các ứng dụng.
d. Content Manager: Cho phép các ứng dụng có thể truy cập dữ liệu từ các ứng
dụng khác hoặc để chia sẻ dữ liệu của riêng ứng dụng.
e. Resource: dùng để xử lý tài nguyên media như các asset, graphic, image,
music, video…
f. View System: Cung cấp các đối tượng layout, view, widget cho ứng dụng.
g. Telephony Manager: Cung cấp công cụ để thực hiện liên lạc như gọi điện
thoại.
h. Location Manager: Cho phép xác định vị trí dựa vào hệ thống định vị toàn cầu
GPS và Google Maps.
i. Sensor Manager: Quản lý đến cảm biến của thiết bị.
j. Notification Manager: Quản lý hiển thị các thông báo như tin nhắn, có email
mới, …
2.2.4. Tầng Application
Tầng Appplication trên cùng sẽ là môi trường tương tác giữa người dùng và
thiết bị. Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản, tất cả các ứng
dụng này chạy trên hệ điều hành Android đều được viết bằng Java sau đó biên dịch
và chuyển thành .dex. Các ứng dụng mặc định thường gồm:
-

Home: màn hình chính.
Contacts: ứng dụng danh bạ điện thoại.
Browser: trình duyệt web.
Camera: ứng dụng chụp ảnh.


9


-

Alarm: ứng dụng báo thức.
Email: ứng dụng thư điện tử.
Album photo: Ứng dụng bộ sưu tập hình ảnh.
Ứng dụng SMS/MMS.
Map: ứng dụng bản đồ.

2.3. Hệ thống tập tin trên Android
Hệ điều hành Android được phát triển từ nhân Linux nên hệ thống các file
trong Android giống hệ thống file trên Linux cả về cách tổ chức và quyền hạn của
người sử dụng lên file… Trong hệ điều hành Android, các file được tổ chức theo mô
hình phân cấp thành các thư mục. Câu lệnh thao tác file cho phép dịch chuyển và sao
chép toàn bộ thư mục cùng với các thư mục con chứa trong nó. Nên một file thường
được viết bằng tên và đường dẫn chứa nó [10].
Một file sẽ có những quyền hạn tương ứng với 9 ký tự theo bảng 2.3 sau:
Bảng 2.3: Quyền hạn trên file
Quyền của chủ sở hữu file
(Owner)
r/-

w/-

x/-

Quyền của nhóm tài khoản
sở hữu file (Owner group)

r/-

w/-

x/-

Quyền của những người
không thuộc nhóm sở hữu
file (Other)
r/w/x/-

2.4. Quá trình khởi tạo Android
Quá trình khởi tạo của hệ điều hành Android gồm thành 6 bước khác nhau, đây
chính là việc tối ưu hóa quá trình khởi tạo một hệ thống nhúng. Thiết bị Android sẽ
được thực hiện theo các bước hình 2.6 dưới đây sau khi nhấn khởi động [8].
 Bước 1: Boot Rom
Khi bắt đầu bấm vào nút khởi động thực thi một thiết bị Android là thực hiện
một đoạn mã chương trình chứa trong Rom. Chương trình có nhiệm vụ tìm phân
vùng đầu tiên của Boot Loader và tải vào trong Ram và thực hiện mã lệnh.
 Bước 2: Boot Loader
BootLoader là chương trình nhỏ chạy trước khi chạy chương trình Android.
BootLoader là chương trình đầu tiên chạy trên bo mạch và bộ vi xử lý. Nhà sản xuất
thiết bị sử dụng các bộ nạp khởi động phổ biến như bộ nạp khởi động redboot, uboot,
qi hoặc họ phát triển các bộ nạp khởi động riêng.
 Bước 3: Kernel
Tương tự như máy tính để bàn sau khi kernel được tải lên RAM, các điều
khiển trong kernel được thực thi để khởi tạo các điều khiển ngắt, các điều khiển khởi
10



tạo bộ nhớ, khởi tạo bộ nhớ đệm và scheduling (lập kế hoạch). Sau cùng trình điều
khiển kernel sẽ tìm tiến trình init trong file hệ thống và thực thi nó.
 Bước 4: Init process
Tiến trình Init là tiến trình đầu tiên được thực thi, chúng ta có thể nói rằng nó
là tiến trình gốc của tất cả các tiến trình. Tiến trình Init có hai trách nhiệm, một là gắn
kết các thư mục như /sys, /dev, / proc và hai là chạy kịch bản init.rc thực chất là đoạn
script mô tả các dịch vụ hệ thống, file hệ thống … được viết theo ngôn ngữ riêng.
 Bước 5: Zygote and Dalvik
Trong Java, chúng ta được biết trong mỗi trường hợp máy ảo riêng sẽ được sử
dụng trong bộ nhớ cho mỗi ứng dụng riêng biệt. Còn trong ứng dụng của Android thì
các ứng dụng cần được khởi động càng nhanh càng tốt, nhưng nếu HĐH Android
khởi động theo các trường hợp khác nhau của máy ảo Dalvik cho các ứng dụng như
Java thì nó sẽ tiêu thụ rất nhiều bộ nhớ và thời gian. Vì thế, để khắc phục được vấn đề
này hệ điều hành Android đưa ra một hệ thống có tên là Zygote (hợp tử). Zygote có
thể được chia sẻ mã trên máy ảo Dalvik, bộ nhớ thấp hơn và thời gian khởi động tối
thiểu. Zygote là một tiến trình máy ảo bắt đầu lúc khởi động hệ thống như ở bước 5,
sau đó tải trước và khởi tạo các lớp thư viện lõi. Thông thường các lớp thư viện lõi là
read-only và một phần của nền các tảng cốt lõi hoặc Android SDK.
 Bước 6: System Server and Services
Sau khi hoàn thành các bước trên, thời gian chạy yêu cầu Zyote khởi động hệ
thống các máy chủ. Các System Server có thể xem như một tiến trình. Hệ thống máy
chủ giống nhau có sẵn được coi như là các System Service trong Android SDK. Hệ
thống máy chủ chứa tất cả các dịch vụ hệ thống.
2.5. Khả năng hỗ trợ phát triển ứng dụng
2.5.1. Yêu cầu về phần cứng
Với bất kỳ một hệ điều hành nào khi chạy trên máy tính, điện thoại hoặc thiết
bị cầm tay nào khác đều cần phải có những yêu cầu về phần cứng, nhằm thúc đẩy sản
phẩm chạy một cách có hiệu quả [28][26]. Để tương thích với các cấu hình phần
cứng của laptop cũng như máy tính để bàn hay thiết bị cầm tay, thì Android cũng cần
có các hệ điều hành hỗ trợ:

- Windows XP (32-bit), Vista(32 hoặc 64 bit), hoặc Windows 7( 32 hoặc 64
bit)
- Mac OS X 10.5.8 hoặc các phiên bản mới hơn (chỉ x86).

11


- Linux (đã được kiểm tra trên Ubuntu Linux, Lucid Lynx).
2.5.2. Android SDK
Android SDK cung cấp các thư viện API và các công cụ phát triển cần thiết để
xây dựng, kiểm tra và gỡ lỗi ứng dụng cho Android [26]. Có thể chọn và tải về file
nén hợp với hệ điều hành tại địa chỉ />2.5.3. Java Development Kit (JDK)
Android SDK cung cấp các công cụ và các API cần thiết để bắt đầu phát triển
ứng dụng trên Android Platform dùng ngôn ngữ lập trình Java. Ta cần chuẩn bị thiết
lập môi trường cho Java bằng cách tải gói tin tại địa chỉ
để cài đặt. Sau đó tạo
biến môi trường.
2.5.4. Eclipse IDE
Sau khi cài đặt xong Java Development Kit, môi trường để hỗ trợ phát triển
Java. Tiếp theo ta cài đặt Eclipse IDE cho các nhà phát triển Java. Để cài đặt hoặc
cập nhật Eclipse , tải về các gói thích hợp từ trang web
Một số loại gói của Eclipse có sẵn cho mỗi lền
tảng. Hiện tại với các phiên bản mới nhất của Android thì Eclipse 3.6.2 hoặc phiên
bản mới hơn mới có thể hỗ trợ.
2.5.5. Android Emulator
Android Emulator là một thiết bị giả lập điện thoại di động – một thiết bị di
động ảo chạy trên máy tính. Giả lập này cho phép các nhà phát triển thử nghiệm và
phát triển các ứng dụng Android mà không cần sử dụng một thiết bị vật lý.
Để sử dụng Android Emulator trước tiên hệ thống yêu cầu cài đặt môi trường
hỗ trợ Java, cài đặt Android SDK, thiết lập môi trường giả lập để kiểm tra ổ đĩa

Android trên máy.

12


CHƯƠNG 3: TÍCH HỢP ANDROID VỚI THIẾT BỊ PHẦN CỨNG
Khi phát triển một sản phẩm nhúng trên hệ điều hành Android, trước tiên ta
phải tích hợp Android với thiết bị phần cứng cụ thể. Để tích hợp Android với thiết bị
phần cứng nào đó, công việc tích hợp hệ điều hành Android trở lên dễ dàng và được
tiến hành theo các bước chuẩn bị phần cứng và môi trường làm viêc, thiếp lập cấu
hình phần cứng, biên dịch và thử nghiệm phần cứng ta có thể thực hiện theo các phần
cụ thể sau [31]:
- Yêu cầu phần cứng
- Thiết lập môi trường phát triển
- Bắt đầu thực hiện tích hợp
3.1. Lựa chọn phần cứng
3.1.1. Chuẩn bị lựa chọn phần cứng
Trong khuân khổ của luận văn này tôi lấy một trường hợp cụ thể cho việc lựa
chọn phần cứng cho thiết bị cầm tay để có thể tích hợp trên hệ điều hành Android
trên đó. Cụ thể lựa chọn phần cứng cho thiết bị cầm tay VNUpad một định hướng
phát triển thiết bị của Viện Công nghệ thông tin- trường Đại học Quốc Gia Hà Nội.
Nhờ vào sự thuận lợi đó của hệ điều hành Android, cùng với nhu cầu sử dụng
và sở hữu một thiết bị cầm tay với chức năng truy cập kho tri thức nội dung số, và hỗ
trợ người học của ĐHQGHN được thuận lợi. Mục đích của Thiết bị cầm tay truy cập
nội dung số VNUpad đưa ra có thể sử dụng internet mọi nơi và người sử dụng có thể
dùng với các mục đích chung và mục đích cá nhân như nghe nhạc, xem vi deo, đọc
sách, ghi chép, trình chiếu,.. Dựa trên những tiêu trí đó, người phát triển phải có
những lựa chọn về thiết bị sao cho phù hợp với các chức năng. Với từng đối tượng
người sử dụng có thể là giáo viên hoặc sinh viên sẽ có một vài mục tiêu sử dụng như
bảng 3.1 sau:


13


Bảng 3.1. Mục tiêu sử dụng của từng đối tượng
Đối tượng

Mục tiêu sử dụng

Sinh viên

Nghe nhạc

Giáo viên

Xem video
Ghi chép
Trình duyệt
Đọc sách …
Thuyết trình

Công nghệ
Đuôi nhạc Mp3, Wma,
aac, ..
Đuôi avi, mp4, flv,
Đuôi apk
Đuôi apk
Đuôi apk
Đuôi apk


Phần cứng hỗ trợ
RAM, memory,
CPU, card Sound,
cổng USB, thẻ nhớ,
cổng HDMI, Wifi,
BlueTooth, Pin

3.1.2. Lựa chọn thiết bị
Bản thân trong đặc điểm của Android là nó được thiết kế để hỗ trợ một loạt các
nền tảng và cấu hình phần cứng cho thiết bị cầm tay. Vậy trong phần này tôi xin đề
xuất các yêu cầu thiết bị tối thiểu như sau [31].
3.1.2.1. Bộ vi xử lý
Bộ vi xử lý trên thiết bị di động cầm tay đóng vai trò như bộ não, đảm nhiệm
công việc xử lý mọi tác vụ của thiết bị. Trên thị trường hiện nay có một số loại vi xử
lý thông dụng trong Tablet là ARM, Intel PDA, VIA, NVIDIA, … Vi xử lý ARM
(Acorn RISC Machine) là một loại cấu trúc vi xử lý 32 bit kiểu RISC (Reduced
Instruction Set Computer – máy tính với tập lệnh đơn giản hóa) được sử dụng rộng
rãi trong các hệ thống nhúng. Với ưu điểm tiết kiệm năng lượng, bộ vi xử lý ARM
được tìm thấy ở trong các sản phẩm thiết bị di động cầm tay và thiết bị ngoại vi, do
các sản phẩm này cần phải tiêu tốn điện năng thấp. Nên với thiết bị VNUpad tôi đưa
ra đề xuất sử dụng bộ vi xử lý ARM.
3.1.2.2. Bộ nhớ
Trong thiết bị cầm tay thì hệ điều hành được cài đặt sẽ ảnh hưởng nhiều đến
dung lượng bộ nhớ. Tuy nhiên đối với thiết bị cầm tay sử dụng hệ điều hành Android
chỉ cần sử dụng bộ nhớ thấp hơn các hệ điều hành khác. Đây là một tiêu chí quan
trọng để lựa chọn dung lượng bộ nhớ cho VNUpad, có thể chọn bộ nhớ khoảng
521MB hoặc hơn.
Song song với bộ nhớ RAM, thiết bị cầm tay thường sử dụng bô nhớ SSD
(Solid-state drive) để lưu trữ dữ liệu, chúng có ưu điểm là nhỏ gọn và truy cập tốc độ
nhanh, khả năng lưu trữ đủ dùng cho các ứng dụng. Ta có thể chọn lựa từ 16GB,

32GB hoặc 64GB.

14


3.1.2.3. Màn hình
Đa số thiết bị cầm tay được trang bị màn hình LCD cảm ứng với công nghệ đa
điểm giúp người sử dụng thuận tiện khi điều khiển, đặc biệt là cảm ứng điện dung, có
độ nhạy cao, tuy nhiên có nhược điểm là chi phí cao hơn. Để có chế độ hiển thị tốt thì
độ phân giải màn hình thông thường là 1024x768, đặc biệt là thiết bị VNUpad hay sử
dụng trang web thì cần được trang bị. Giúp thiết bị hiển thị rõ, độ nhạy cao, thao tác
dễ dàng.
3.1.2.4. Kết nối mạng
Kết nối mạng là điều không thể thiếu với trên thiết bị cầm tay, nên hầu hết
chúng đều được hỗ trợ kết nối mạng không dây WiFi. Trên thị trường hiện nay một
số thiết bị cầm tay đời mới tốc độ có thể đạt tới 300Mbit/s theo chuẩn 802.11n, ngoài
ra còn hỗ trợ kết nối 2G và 3G của mạng di động. Với thị trường như thế, VUNpad
có thể kết nối mạng không dây WiFi 802.11 a/b/g với tốc độ 54Mbit/s. Hoặc kết nối
2G là 900/1800 MHz và 3G là 2100MHz.
3.1.2.5. Kết nối mạng thông dụng và chức năng khác
Ngoài các yêu cầu về xử lý, bộ nhớ, màn hình thì VNUpad cần có một số kết
nối thông dụng và chức năng cơ bản hỗ trợ sinh viên, giáo viên có thể sao chép, nghe,
và xem video, … hoặc có thể trình chiếu.
- USB: cổng kết nối chuẩn USB.
- HDMI: cổng kết nối chuẩn HDMI cho ra hình ảnh và âm thanh chất lượng
cao.
- Memory card: Khe cắm hỗ trợ thẻ nhớ.
- SIM card: khe cắm Sim để hỗ trợ mạng 2G, 3G.
- Headphone: Cổng kết nối tai nghe.
- Microphone: Cổng kết nối Micro.

Một số các chức năng
- Camera: hỗ trợ quay phim, chụp ảnh.
- Audio/Video: hỗ trợ các tập tin Audio như mp3, acc, wav,.. và tập tin video
như avi, mp4, wmv, flv, …
- Speaker: Loa phát âm thanh.
- GPS: hỗ trợ định vị toàn cầu.
Các tiện ích: một số các ứng dụng hỗ trợ
- Trình duyệt web, gửi Email, chat.
- Xử lý tập tin văn bản Word, Excel, Powerpoint, PDF.
- Xem video, nghe nhạc, trò chơi,..

15


3.1.2.6. Phụ kiện kèm theo
Phụ kiện kèm theo với thiết bị cầm tay thường có bộ sạc, tai nghe, dây kết nối
USB
3.2. Thiết lập môi trường phát triển
Ở phần này cung cấp cách cấu hình hệ thống máy chủ để xây dựng Android
cho các thiết bị di động cầm tay và có thể thử nghiệm trên hệ điều hành Linux,
Ubuntu. Sau đó tiến hành cài đặt những gì mà Android yêu cầu:
 Cài đặt các gói hệ thống:
- flex: Bộ phân tích từ vựng được sử dụng để đọc một tập tin đầu vào cho
một mô tả.
- bison: Bộ phân tích cú pháp chung.
- gperf: Đây là chương trình hàm băm.
- libesd0-dev: Chứa các tập tin dev được sử dụng để pha trộn âm thanh số
hóa để phát lại bởi một thiết bị .
- libwxgtk2.6-dev: Đây là gói cung cấp các thành phần giao diện và các cơ sở
khác trong nhiều nền tảng khác nhau.

- build-essential: Gói này chứa một danh sách các gói được xem là nền tảng
để xây dựng các gói Debian.
 Cài đặt Java:
Để phát triển mã nguồn Android với một phần cứng trên Java Developer Kit, ta
tải gói jdk giành cho linux-i586 trên .
3.3. Quá trình tích hợp Android
Công việc chính để Android có thể chạy được trên bo mạch được tiến hành theo
2 phần [26] là :
 Kernel:
- Hạt nhân Linux làm việc trên bo mạch.
- Kiểm tra phiên bản hạt nhân Android phù hợp với Android muốn sử
dụng.
- Trích xuất các bản vá lỗi cho nhân Android và hợp nhất các bản vá lỗi
Android với nhân Linux tham chiếu cho bo mạch.
- Cấu hình hạt nhân được hợp nhất để sử dụng trong Android.
- Xây dựng hạt nhân sát nhập.
 Không gian người sử dụng – Hệ thống tập tin Android

16


- Thêm các mục tiêu xây dựng Android của SoC trong thư mục thiết bị
nguồn Android.
- Xây dựng Android cho SoC.
- Cấu hình init.rc để phù hợp với khởi động truyền thông đa phương tiện.
- Khởi động.

17



CHƯƠNG 4: PHÁT TRIỂN PHẦN MỀM TRÊN ANDROID
Qua nghiên cứu các khả năng hỗ trợ phát triển phần mềm ứng dụng trên hệ
điều hành Android trong chương 2 và khả năng tùy chỉnh, tích hợp của Android
trong chương 3. Ở chương 4 của luận văn tôi đã tiến hành phát triển phần mềm ứng
dụng hỗ trợ người sử dụng tạo Ghi chú, nhằm đánh giá một số tính năng của hệ điều
hành Android như hỗ trợ giao diện tương tác với người dùng, hỗ trợ tương tác trao
đổi giữa các thành phần.
4.1. Cấu trúc của một ứng dụng
Các thành phần ứng dụng là các khối xây dựng cơ bản của một ứng dụng
Android. Mỗi thành phần là một điểm khác nhau mà thông qua đó hệ thống có thể
nhập vào ứng dụng của bạn. Cấu trúc của một ứng dụng Androi được chia thành 4
thành phần chính bắt buộc phải khai báo trong AndroidManifest.xml, mỗi loại phục
vụ một mục đích riêng và có một vòng đời khác nhau định nghĩa các thành phần được
tạo ra và bị phá hủy như thế nào[26]. Bao gồm Activity, Service, Content Provider,
Broadcast Receiver.
Và được chia thành 6 loại: Activity, Service, Content Provider, Intent,
Broadcast Provider, Notification
4.2. Xây dựng ứng dụng
4.2.1. Mục tiêu của ứng dụng
Theo thống kê các chức năng và các phần mềm ứng dụng chính hỗ trợ có sẵn
trong một thiết bị cầm tay gồm có:
-

Chức năng cài đặt hiển thị màn hình, âm thanh, ngày giờ, ngôn ngữ.
Chức năng nhắn tin, đàm thoại.
Ứng nghe nhạc.
Ứng dụng bản đồ.
Chức năng quản lý hình ảnh, camera hỗ trợ.

Ngoài ra, còn do tính tiện lợi của thiết bị là có thể sử dụng và mang theo mọi

lúc mọi nơi, nên có thể sử dụng thay một số những vật dụng hỗ trợ người sử dụng
trong công việc cũng như sách, vở viết, bút viết,… Cũng như, nhằm hỗ trợ người sử
dụng có thể hiểu được về khả năng hỗ trợ tương tác giữa các thành phần trên
Android, giúp họ phát triển được các phần mềm ứng dụng có thể chạy được trên nền
tảng Android. Chính vì vậy đưa ra ý tưởng xây dựng phần mềm ứng dụng tạo Ghi
chú nhanh cho các thiết bị cầm tay có sử dụng hệ điều hành Android.

18


4.2.2. Yêu cầu về chức năng
Trong phạm vi của đề tài, phần mềm ứng dụng tạo Ghi chú có một số chức
năng chính như sau:
-

Màn hình hiển thị chính.
Chức năng tạo ghi chú.
Chức năng xem ghi chú.
Chức năng xóa ghi chú.
Chức năng sửa ghi chú.
Chức năng hủy.

4.2.3. Mô hình Usecase

Hình 4.3: Mô hình usecase
4.2.4. Biểu đồ tuần tự của hệ thống

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

19



4.2.5. Thiết kế các thành phần
Trên cơ sở mô tả trên mô hình usecase, với các chức năng đã liệt kê, phần mềm
ứng dụng thiết kế có các thành phần chính sau:
Thành phần
Activity

Chức năng

Tên
Main
MainActivity
mainlist
mainview

Cung cấp giao diện chính chính của ứng
dụng
Hiển thị chức năng tạo ghi chú
Hiển thị chức năng xem, xóa danh sách ghi
chú
Hiển thị chức năng xem chi tiết ghi chú

4.2.4. Tính năng hỗ trợ tương tác
4.2.4.1. Tính năng hỗ trợ tương tác giữa phần mềm NotesEX với thành phần trên
Android
- Từ thành phần layout đã cài đặt, thực hiện gọi vào trong Activity, cho phép
hiển thị và xử lý giao diện
- Đoạn code mô tả:
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView t_title = (TextView)

4.2.4.2. Tính năng hỗ trợ tương tác giữa phần mềm NotesEX với cơ sở dữ liệu
- Khi đã cài đặt giao diện, thiết lập khởi tạo cơ sở dữ liệu qua SQLlite để tạo
mới, thêm, sửa, xóa dữ liệu
- Đoạn code mô tả
package sql;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class CSDL extends SQLiteOpenHelper{
static String tablename="ghichu";
static int version=11;
static String createquery="CREATE TABLE `ghichu` ("+"`id` int NULL,"
+ "`tieude` text NULL ," + "`noidung` text NULL ,"

20


+ "PRIMARY KEY (`id`)" + ")";
static String deletequery = "DROP TABLE IF EXISTS ghichu";
public CSDL(Context context, String name, CursorFactory factory,int
version) {
super(context, name, factory, version);

}
public CSDL(Context context) {

4.3. Kết quả phát triển và thử nghiệm
Sau thời gian phát triển và thử nghiệm ứng dụng tạo ghi chú trên thiết bị cầm
tay, với khuôn khổ của luận văn tôi mới đang làm phần mềm NoteEX ở công đoạn
chạy thử phần mềm phát triển, mà chưa làm với thiết bị.
Bảng 4.1: Kịch bản kiểm tra chức năng
Kiểm tra kết
quả

Chức năng

Tình huống

Yêu cầu kết quả

Xem ghi chú

Truy cập vào
ứng dụng

Hiển thị danh sách ghi chú, thêm Đúng với yêu
chức năng tạo và xóa ghi chú
cầu

Không có ghi
chú
Truy cập vào
ứng dụng

Không có ghi
chú cần xóa
Truy cập vào
ứng dụng

Đúng với yêu
cầu
Đúng với yêu
cầu
Đúng với yêu
cầu
Đúng với yêu
cầu
Đúng với yêu
cầu
Đúng với yêu
cầu
Chưa đúng
với yêu cầu

Xóa ghi chú

Tạo mới

Cập nhật ghi
chú

Hiện thị danh sách trống và thêm
chức năng tạo ghi chú
Hiển thị danh sách ghi chú, chọn

ghi chú cần xóa
Chọn chức năng xóa, hiển thị
thông báo danh sách trống
Hiển thị danh sách, hiển thị nút
tạo mới
Lưu vào trong cơ sở dữ liệu,
Tạo mới ghi chú
hiển thị thông báo
Truy cập vào
Hiển thị danh sách ghi chú, chọn
ghi chú
ghi chú cần sửa
Cập nhật ghi
Sửa lại ghi chú đã có sẵn và cập
chú
nhật vào cơ sở dữ liệu

21


KẾT LUẬN
Trong đề tài “Nghiên cứu phát triển phần mềm nhúng cho các thiết bị cầm tay
trên nền tảng Android”, với phạm vi nghiên cứu làm chủ về mặt công nghệ tích hợp,
tùy chỉnh hệ điều hành Android và phát triển phần mềm trên môi trường đã được tích
hợp. Chính vì vậy, nội dung của đề tài được trình bày trong 4 chương với nội dung
trong chương 1: Tổng quan về đề tài, chương 2: Tìm hiểu hệ điều hành Android,
chương 3: Tích hợp hệ điều hành Android với thiết bị phần cứng, chương 4: Phát
triển phần mềm trên Android.
Một số kết luận chính của đề tài:
- Với các đặc điểm hỗ trợ chính của HĐH Android người sử dụng có thể phát

triển đa dạng bất cứ phần mềm nào với ngôn ngữ Java.
- Có thể tùy chỉnh lại hệ điều hành để tích hợp được với nhiều loại phần cứng
khác nhau và thích ứng với từng ứng dụng.
- Có thể phát triển ứng dụng chạy trên hệ điều hành Android đáp ứng với nhu
cầu của người sử dụng cuối.
Trên cơ sở kết quả đạt được của đề tài, đã đưa ra được các lựa chọn phần cứng
cho thiết bị với từng bước tích hợp hệ điều hành Android. Thông qua các bước phát
triển phần mềm trên hệ điều hành Android, xây dựng được phần mềm demo Tạo ghi
chú NotesEX với các chức năng chính thêm, xóa, sửa và xem ghi chú.
Tuy nhiên vẫn còn có những mặt hạn chế chưa khảo sát được tích hợp hệ điều
hành Android trên thiết bị phần cứng thực.
Hướng phát triển của đề tài:
- Khảo sát được tích hợp hệ điều hành Android trên thiết bị phần cứng thực.
- Xây dựng các phần mềm ứng dụng có thể chạy trên thiết bị thật, nhất là những
phần mềm mang tính học vụ.
Trên đây là toàn bộ bản trình bày bài luận văn Thạc sĩ chuyên ngành Công
nghệ phần mềm của tôi, cũng có phần không tránh khỏi thiếu xót. Tôi mong nhận
được sự đóng góp nhiệt tình của thầy cô giáo và các bạn để bài luận văn của mình
được hoàn thiện hơn.
Lời cuối cùng tôi xin chân thành cảm ơn quý thầy cô đã giảng dạy tôi trong
suốt 2 năm học vừa qua, cùng các thầy cô giáo trong trường Đại học Quốc Gia, Đại
học Công nghệ Hà Nội, những người mà tôi đã rất coi trọng, đã giúp đỡ rất nhiệt tình
trong quá trình học tập để tôi có được những thành công như ngày hôm nay. Và đặc
22


×