-1-
ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KHOA HỌC
KHOA ĐIỆN TỬ - VIỄN THÔNG
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
TÌM HIỂU HỆ ĐIỀU HÀNH ANDROID VÀ XÂY DỰNG HỆ
THỐNG ĐIỀU KHIỂN THIẾT BỊ QUA BLUETOOTH
Sinh viên thực hiện
Nguyễn Văn Ngọc
Huế, tháng 5 năm 2014
-2-
ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KHOA HỌC
KHOA ĐIỆN TỬ - VIỄN THÔNG
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
TÌM HIỂU HỆ ĐIỀU HÀNH ANDROID VÀ XÂY DỰNG HỆ
THỐNG ĐIỀU KHIỂN THIẾT BỊ QUA BLUETOOTH
Ngành: Điện Tử Viễn Thông.
Chuyên ngành: Thông Tin Quang.
Giảng viên hướng dẫn: Sinh viên thực hiện :
Thạc sĩ: Lê Văn Thanh Vũ Nguyễn Văn Ngọc
Huế, tháng 5 năm 2014
-3-
-4-
LỜI CÁM ƠN
Em xin chân thành bày tỏ lòng biết ơn đến với các thầy cô trong trường Đại
Học Khoa Học, đặc biệt là các thầy cô trong Khoa Điện Tử - Viễn Thông đã tận tâm
dạy dỗ, truyền đạt những kiến thức quý báu trong những năm học qua tại trường.
Em xin gửi lời cám ơn chân thành nhất đến với Thầy Lê Văn Thanh Vũ,
IDE Integrated Development Environment Môi trường phát triển tích hợp
JDK
Java Developer Kit Bộ công cụ phát triển Java
JRE
Java Runtime Environment
Ứng dụng nền trên Java
JVM
Java Virtual Machine
Máy ảo thực thi
LMP Link Manament Protocol Liên kết quản lí giao thức
MAC Media Access Control Điều khiển truyền thông truy
cập
PMA Packed Member Address Đóng gói phần địa chỉ
SCO Synchronous connection-oriented Đồng bộ hướng kết nối
SDK Software Develoment Kit Phần mềm hỗ trợ phát triển
UART Universal Asynchronous
Receiver/Transmitter
Bộ truyền nhận nối tiếp đồng bộ
và không đồng bộ.
XML eXtensible Markup Language Ngôn ngữ đánh dấu mở rộng
-8-
LỜI NÓI ĐẦU
Trong cuộc sống ngày càng hiện đại như ngày nay, các thiết bị di động cầm
tay đang dần trở thành những thứ không thể thiếu cho mỗi người. Trong đó
có các Smartphone, với những nền tảng hiện đại và tích hợp nhiều công
nghệ, nó không chỉ giúp giữ thông tin liên lạc với nhau mà những chiếc
Smartphone này trở nên thông minh và làm được rất nhiều việc đem lại sự
tiện lợi cho người dùng từ những công việc nhỏ nhất trong đời sống. Với
các nhu cầu đa dạng và phức tạp của mỗi ứng dụng, kỹ thuật không dây
đã đưa ra nhiều chuẩn với các đặc điểm kỹ thuật khác nhau để có thể phù
hoạt hướng đến sự tiện lợi đa dạng trong nhiều lĩnh vực khác nhau. Google còn
cung cấp các nền tảng phát triển cho phép bên thứ 3 tham gia phát triển các ứng
dụng mới và tùy biến hệ điều hành một cách linh hoạt. Chính điều này đã cho phép
các bên thứ 3 phát triển rất nhiều ứng dụng theo nhiều định hướng để góp phần làm
phong phú hơn các kho ứng dụng của Android.
Ngoài ra, hiện nay giao tiếp không dây của các thiết bị thông minh ngày
càng đa dạng và tiện dụng hơn, nếu trước đây các điện thoại chỉ có thể kế nối thông
qua cáp với giao diện riêng của nhà sản xuất thì ngày này có rất nhiều chuẩn giao
tiếp rất tiện lợi như: giao tiếp USB, giao tiếp NFC, Wifi …Và đặc biệt giao tiếp
không dây phổ biến và linh hoạt như Bluetooth cho phép các thiết bị dễ dàng kết
nối trao đổi dữ liệu trong khoảng cách ngắn một cách đơn giản nhất. Nó cho phép
việc kết nối không dây với các thiết bị điện, điện tử trở nên tiện dụng và hiệu quả
hơn.
Kết hợp hai yếu tố trên, việc xây dựng một hệ thống điều khiển các thiết bị
gia dụng bằng Smartphone Android thông qua giao tiếp Bluetooth là trọng tâm của
đề tài nghiên cứu này để hướng đến một cuộc sống tiện nghi, hiện đại trong các
ngôi nhà thông minh.
1.2 Ý tưởng và yêu cầu đặt ra:
1.2.1 Ý tưởng thiết kế:
* Về phía phần mềm điều khiển trên Android: Việc xây dựng ứng
dụng trên hệ điều hành Android tương đối thuận lợi, dễ dàng bởi Android là
một hệ điều hành mở, có một cộng đồng phát triển đông đảo, nơi để mọi
người học hỏi, tham khảo và chia sẻ kinh nghiệm với nhau. Và một ưu
điểm nữa là hầu như các thiết bị Android là đều được tích hợp công
-10-
nghệ Bluetooth, vì thế người dùng có thể dễ dàng kết nối được với
mạch để điều khiển. Việc điều khiển trở lên thuận tiện và tiết kiệm chi
phí so với làm bộ điều khiển. Nhờ vào tính mở của hệ điều hành
Android chúng ta có thể phát triển ứng dụng một cách tối ưu, phù hợp
cho bộ điều khiển.
CHƯƠNG 2: TÌM HIỂU HỆ ĐIỀU HÀNH ANDROID VÀ CÁC
GIAO TIẾP NGOẠI VI
2.1 Hệ điều hành Android:
2.1.1 Khái niệm:
Android là một hệ điều hành mã nguồn mở dành cho thiết bị di động như
Smartphone, Tablet hay Netbook (thường gọi chung là thiết bị cầm tay thông minh).
Android do Google phát triển dựa trên nền tảng Linux kernel phiên bản 2.6 và các
phần mềm mã nguồn mở. Bất kỳ một hãng sản xuất phần cứng nào cũng đều
có thể tự do sử dụng hệ điều hành Android cho thiết bị của mình, miễn là
các thiết bị ấy đáp ứng được các tiêu chuẩn cơ bản do Google đặt ra ( như
có cảm ứng chạm đa điểm, GPS, 3G,…). Nhờ tính mở miễn phí và những
ưu điểm của hệ điều hành này, ngày nay các thiết bị cầm tay sử dụng hệ
điều hành này càng nhiều và phổ biến.
2.1.2 Lịch sử phát triển:
Ban đầu, Android là hệ điều hành cho các thiết bị cầm tay dựa trên
lõi Linux
do
công ty Android Inc (California, Mỹ) thiết kế. Công ty này sau
đó được Google
mua
lại vào năm 2005 và bắt đầu xây dựng Android
Platform. Các thành viên chủ chốt
tại
ở Android Inc. gồm có: Andy
Rubin
,
Rich
Miner
, Nick Sears, and Chris
White
nhà sản xuất thiết, các nhà khai thác và
các
lập trình viên thiết bị cầm
tay.
Phiên bản SDK lần đầu tiên phát hành vào tháng 11 năm 2007,
hãng
T-Mobile
cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc
T-Mobile G1,
chiếc
smartphone đầu tiên dựa trên nền tảng Android. Một
vài ngày sau đó, Google lại
tiếp
tục công bố sự ra mắt phiên bản Android
SDK release Candidate 1.0. Trong tháng
10
năm 2008, Google được cấp
giấy phép mã nguồn mở cho Android
Platform.
Vào cuối năm 2008, Google cho phát hành một thiết bị cầm
tay được gọi
là
Android Dev Phone 1 có thể chạy được các ứng dụng
Android mà không bị ràng
buộc
vào các nhà cung cấp mạng điện thoại di
động. Mục tiêu của thiết bị này là cho
phép
các nhà phát triển thực hiện
các cuộc thí nghiệm trên một thiết bị thực có thể chạy
trợ Wi-Fi và Bluetooth, thanh trạng thái hiển thị các thông báo ứng dụng và
một ứng dụng chụp ảnh (camera) tuy chưa cho phép thay đổi độ phân giải
và chất lượng ảnh.
- Android 1.1: Ra mắt ngày 9-2-2009, bên cạnh con số, Google rục
rịch đưa hệ thống tên gọi (tên mã) vào các phiên bản Android. Tuy chưa
chính thức áp dụng nhưng Android 1.1 đã có tên Petit Four. Không bao gồm
nhiều tính năng, phiên bản này bổ sung một số chức năng mới cho Google
Maps hiển thị chi tiết hơn, bàn phím ảo gọi điện thoại đã có thể hiển thị
hoặc ẩn khi gọi, chương trình SMS cho phép người dùng lưu tập tin đính
kèm. Android 1.1 sửa một số lỗi trong Android 1.0.
- Android 1.5 Cupcake: Ra mắt ngày 30-4-2009, Cupcake, tên
mã đầu tiên áp dụng cho phiên bản Android. Cupcake mang nhiều tính năng
mới như bàn phím ảo có khả năng dự đoán từ đang gõ, từ điển từ ngữ do
người dùng đặt ra, hỗ trợ widget trên giao diện chủ, quay phim và phát lại
video clip, lược sử thời gian cuộc gọi, chế độ tự động xoay màn hình theo
hướng sử dụng (screen rotation). Trình duyệt web trong Cupcake có thêm
khả năng sao chép/ dán (copy/paste).
- Android 1.6 Donut: Ra mắt ngày 30-9-2009, Donut khắc phục các
chức năng "lỏng lẻo" trong Cupcake, mở rộng chức năng tìm kiếm bằng
giọng nói và ký tự đến bookmark và danh bạ. Android Market trở thành "chợ
đầu mối" để người dùng tìm kiếm và xem các ứng dụng Android. Ứng dụng
chụp ảnh và quay phim trong Donut nhanh hơn. Hệ điều hành hỗ trợ màn
hình có độ phân giải lớn hơn, hướng đến các thế hệ smartphone màn hình
lớn.
- Android 2.0/2.1 Eclair: phiên bản chính 2.0 ra mắt vào tháng 11
năm 2009, triển khai để hỗ trợ tốt hơn cho điện thoại di động. Sau đó, phiên
bản 2.1 với một vài tính năng nhỏ được nâng cấp xuất hiện vào tháng 1
năm 2010. Phiên bản này nổi bật với các tính năng mới cho người dùng và
các nhà phát triển, cũng như nâng cấp giao diện người dùng đồng thời hỗ
trợ HTML5 và Exchange ActiveSync 2.5.
nhất, khắc phục sự phân mảng của Android (có các phiên bản riêng dành
cho smartphone và tablet)
- Android 4.0: Ice Cream Sandwich :Ra mắt ngày 19-10-2011."Bánh
kem sandwich" (ICS) là thế hệ Android được mong đợi nhất đến nay, ra đời
cùng dòng smartphone "bom tấn" Samsung Galaxy Nexus, thế hệ
smartphone đầu tiên trang bị ICS. Android 4.0 đưa chức năng truy xuất
nhanh các ứng dụng thường dùng vào phần bên dưới giao diện chủ, tùy
biến widget, dễ sắp xếp và duyệt danh sách ứng dụng hơn. Các ứng dụng
đã có thể truy xuất nhanh từ màn hình khóa thiết bị (Lock screen), hiện các
hãng sản xuất thiết bị chỉ mới cho phép Camera có thể chọn nhanh từ Lock
screen.Ice Cream Sandwich hoạt động mượt mà, nhanh và đẹp hơn.
-18-
- Android 4.1: Jelly Bean: Ra mắt 9-7-2012. Khả năng sắp xếp giao
diện chủ và widget trong Jelly Bean rất tùy biến và linh hoạt. Hệ thống hỗ
trợ dịch vụ ví điện tử Google Wallet, đặc biệt trình duyệt web mặc định trong
Android được thay thế bởi đại diện tên tuổi: Chrome, với khả năng đồng bộ
dữ liệu theo tài khoản với bản Chrome trên máy tính.
Jelly Bean giới thiệu Google Now, dịch vụ trực tuyến mới hiện chỉ
dành cho Android, một phụ tá ảo đắc lực cho công việc sắp xếp lịch trình,
tìm kiếm thông tin, xác định vị trí Rất đa năng và được xem như lời đáp
trả của Google với "phụ tá ảo" Apple Siri trong iOS.
- Android 4.2: vẫn là Jelly Bean: Ra mắt tháng 11-2012, chỉ sau gần
năm tháng ra mắt Android 4.1, Google tiếp tục bồi thêm sức nặng cho
Android với phiên bản 4.2 và vẫn mang tên mã Jelly Bean.
Android 4.2 tiếp tục mang đến những cải tiến hấp dẫn cho ứng dụng
chụp ảnh (Camera) như HDR, Photo Sphere, hiệu ứng ảnh, Google Now,
đưa tính năng lướt chọn từ rất hay trong bàn phím ảo. Chức năng "bom
tấn" hỗ trợ nhiều tài khoản người dùng (multi-user profile) lần đầu tiên
được áp dụng trong Android 4.2 nhưng chỉ có người dùng máy tính bảng
thừa hưởng chức năng này.
- Display Driver : Điều khiển việc hiển thị lên màn hình cũng như
thu nhận những điều khiển của người dùng lên màn hình (di chuyển,
cảm ứng ).
- Camera Driver : Điều kiển hoạt động của camera, nhận luồng
dữ liệu từ camera trả về.
-20-
- Bluetooth Driver : Điều khiển thiết bị phát và thu sóng
Bluetooth.
- USB driver : Quản lý hoạt động của các cổng giao tiếp USB
- Keypad driver : Điều khiển bàn phím.
- Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi.
- Audio Driver : điều khiển các bộ thu phát âm thanh, giải mã các
tính hiệu dạng audio thành tín hiệu số và ngược lại.
- Binder IPC Driver : Chịu trách nhiệm về việc kết nối và liên lạc
với mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những
chức năng truyền thông được thực hiện.
- M-System Driver : Quản lý việc đọc ghi lên các thiết bị nhớ
như thẻ SD, flash.
- Power Madagement : Giám sát việc tiêu thụ điện năng.
2.1.4.2 Tầng Library và Android runtime:
Tầng này có 2 thành phần là Library và Android runtime.
Phần Library:
Phần này có nhiều thư viện được viết bằng C/C++ để các phần
mềm có thể sử dụng, các thư viện đó được tập hợp thành một số
nhóm như :
- Thư viện hệ thống (System C library) : thư viện dựa trên chuẩn
C, được sử dụng chỉ bởi hệ điều hành.
- Thư viện Media (Media libraries): có nhiều codec để hổ trợ việc
phát và ghi lại các loại định dạng âm thanh, hình ảnh video
thông dụng.
chỉ cần quan tâm đến nội dung mà ứng dụng họ làm việc. Một tập hợp API
rất hữu ích được xây dựng sẵn như hệ thống định vị, các dịch vụ chạy nền,
liên lạc giữa các ứng dụng, các thành phần giao diện cấp cao
Các thành phần của tầng này:
- Activity Manager: Quản lý các chu kỳ sống của một ứng dụng cũng
như cung cấp công cụ điều khiển các Activity.
- Telephony Manager : Cung cấp công cụ để thực hiện việc liên lạc
như gọi điện thoại.
- XMPP Service : Cung cấp công cụ để liên lạc trong thời gian thực.
- Location Manager : Cho phép xác định vị trí của điện thoại thoại
dựa vào hệ thống định vị toàn cầu GPS và Google Maps.
- Window Manager : Quản lý việc xây dựng và hiển thị các giao diện
người dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng.
- Notication Manager : Quản lý việc hiển thị các thông báo (như báo
có tin nhắn, có e-mail mới ).
-22-
- Resource Manager : Quản lý tài nguyên tĩnh của các ứng dụng bao
gồm các file hình ảnh, âm thanh, layout, string. (Những thành phần không
được viết bởi ngôn ngữ lập trình).
2.1.4.4 Tầng Application:
Đây là tầng gồm các ứng dụng giao tiếp với người dùng như:
Các ứng dụng cơ bản được cài đặt đi liền với hệ điều hành như gọi
điện (phone), quản lý danh bạ (Contacts), trình duyệt web (web browser),
nhắn tin (SMS), lịch (Calendar), đọc E-mail (Email – client), bản đồ (Map),
…. Các ứng dụng được người dùng cài thêm: Stock, games, dictionary…
Các chương trình có đặc điểm là:
- Viết bằng java, có phần mở rộng là apk.
- Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine
được dựng lên để phục vụ cho nó. Nó có thể là một Active Program:
Chương trình có giao diện với người sử dụng hoặc là một background:
Thay vào đó, nó được
xác
định bởi hệ thống qua một kết hợp
của:
- Những phần của ứng dụng mà hệ thống biết đang
chạy
- Những phần quan trọng như thế nào đối với người
dùng
- Bao nhiêu vùng nhớ chiếm lĩnh trong hệ
thống.
2.1.5.1
Chu kỳ sống thành phần:
Các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành
phần từ lúc bắt
đầu
khởi tạo và đến thời điểm kết thúc. Giữa đó, đôi
lúc chúng có thể là active
hoặc
inactive, hoặc là trong trường hợp
activies nó có thể visible hoặc
invisible.
2.1.5.2
Activity Stack:
Bên trong hệ thống các activity được quản lý như một activity
stack. Khi
một
Activity mới được start, nó được đặt ở đỉnh của stack
và trở thành activity đang
chạy
activity trước sẽ ở bên dưới activity
bởi
hệ thống trong trường hợp thiếu vùng
nhớ.
-25-
- Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác. Nó vẫn còn
trạng thái
và
thông tin thành viên trong nó. Người dùng không thấy nó và
thường bị loại bỏ
trong
trường hợp hệ thống cần vùng nhớ cho tác vụ
khác.
2.1.5.4
Chu kỳ sống của ứng dụng:
Trong một ứng dụng Android có chứa nhiều thành phần và mỗi
thành phần đều
có
một chu trình sống riêng. Và ứng dụng chỉ được
gọi là kết thúc khi tất cả các
thành
phần trong ứng dụng kết thúc.
Activity là một thành phần cho phép người dùng
giao
tiếp với ứng
dụng. Tuy nhiên, khi tất cả các Activity kết thúc và người dùng
không
còn giao tiếp được với ứng dụng nữa nhưng không có nghĩa là ứng
dụng đã kết
thúc.
Bởi vì ngoài Activity là thành phần có khả năng
Các sự kiện trong 1 chu kỳ ứng dụng.
Tất cả các phương thức là những móc nối mà bạn có thể
override để làm
tương
thích công việc trong ứng dụng khi thay đổi
trạng thái. Tất cả các Activity bắt
buộc
phải có onCreate() để khởi tạo