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.. 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
Trang 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
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
HÀ NỘI, 2013
Trang 2ĐẠ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: Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
Mã số: 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
Trang 3MỤ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
Trang 42.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
Trang 5MỞ ĐẦ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
Trang 6CHƯƠ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
Trang 71.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
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
thanh
Sử dụng Media Framework
và OpenGL/ES nằm trong tầng Libraries để xử lý
Sử dụng tầng Graphics & Media
để tập trung các tác vụ 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
Trang 8- 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
Trang 9CHƯƠ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
Trang 10Android 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
Trang 11+ 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ả
Trang 12b 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
Trang 13- 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)
Quyền của nhóm tài khoản
sở hữu file (Owner group)
Quyền của những người không thuộc nhóm sở hữu
file (Other)
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