TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ VIỄN THÔNG
----------------------------
BÁO CÁ0 BÀI TẬP LỚN
Lập trình Android
Đề tài: Quản lý Pin trên điện thoại Android
Giảng viên hướng dẫn: TS. Trần Hải Anh
Nhóm 5
Hà Nội – 5/2015
Mục Lục
Lời nói đầu
Hệ điều hành Android ra đời đã đánh dấu một bước ngoặt trong ngành công
nghệ toàn cầu và tác động trực tiếp tới đời sống của chúng ta, làm thay đổi hoàn toàn
những khái niệm trước đó về di động, mở ra một ngành công nghiệp sản xuất điện
thoại, các thiết bị di động. Đi kèm với đó là ngành phần mềm, mà cụ thể ở đây là các
phần mềm, ứng dụng với số lượng khổng lồ được viết ra hàng năm để phục vụ cho nhu
cầu người sử dụng trên các thiết bị android.
Chúng em chọn để tài thiết kế “Phần mềm quản lý pin trên điện thoại Android”,
một phần để tìm hiểu về quá trình thiết kế một ứng dụng trên thiết bị android và cũng
là ứng dụng các kiến thức đã được học trong môn lập trình Android để có thể tạo ra
một ứng dụng hoàn chỉnh. Tuy nhiên, do kiến thức còn hạn chế nên ứng dụng của
chúng em chưa thực sự được hoàn hảo. Chúng em sẽ cố gằng hoàn thiện hơn nữa các
ứng dụng sau này của mình.
Chúng em xin chân thành cảm ơn Tiến sĩ Trần Hải Anh đã tận tình giúp đỡ
nhóm chúng em trong thời gian hoàn thiện bài tập lớn, cũng như những bài giảng bổ
ích về lập trình Android và lập trình trên Smart Phone.
3
I. Giới thiệu về Android
1. Lịch sử phát triển
Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một số
thiết bị kĩ thuật số khác như máy ảnh và đầu kĩ thuật số) được phát triển chính bởi
Google và dựa trên nền tảng hệ điều hành Linux. Trước đây, Android được phát triển
bởi công ty liên hợp Android (sau đó được Google mua lại vào năm 2005). Theo công
ty nghiên cứu thị trường NPD, thiết bị di động sử dụng hệ điều hành Android bán được
tại Mỹ trong quý II năm 2010 xếp vị trí đầu tiên với 33%, thứ 2 là BlackBerry OS với
28% và iOS ở vị trí thứ 3 với 22%. Android có một cộng đồng những nhà phát triển rất
lớn viết các ứng dụng cho hệ điều hành của mình. Hiện tại có khoảng 80,000 ứng dụng
cho Android OS và vào khoảng 100,000 ứng dụng đã được đệ trình, điều này khiến
Android trở thành hệ điều hành di động có môi trường phát triển lớn thứ 2. Các nhà
phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java. Sự ra mắt của Android
vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay mã
nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đính
tạo nên một chuẩn mở cho điện thoại di động trong tương lai. Google công bố hầu hết
các mã nguồn của Android theo bản cấp phép Apache. Hệ điều hành Android bao gồm
12 triệu dòng code; 3 triệu dòng XML (eXtensible Markup Language, "Ngôn ngữ
Đánh Dấu Mở rộng"), 2.8 triệu dòng mã C, 2.1 triệu mã Java và 1.75 triệu dòng mã C+
+. I. HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ ANDROID. 1. Sự Ra Đời. Tháng 7 năm
2005 Google mua lại Android Inc, một công ty nhỏ được thành lập từ năm 2003 có trụ
sở ở Palo Alto, California, Mỹ. Những nhà đồng sáng lập của Android chuyển sang
làm việc tại Google gồm có Andy Rubin (đồng sáng lập công ty Danger), Rich Minner
(đồng sáng lập công ty Wildfire Communications), Nick Sears (từng là phó chủ tịch
của T-Mobile), và Chris White (trưởng nhóm thiết kế và phát triển giao diện tại
4
WebTV). Khi đó, có rất ít thông tin về các công việc của Android, ngoại trừ việc họ
đang phát triển phần mềm cho điện thoại di động.
2. Tính năng mở của hệ điều hành Android
Android được xây dựng để cho phép các nhà phát triển để tạo ra các ứng dụng
di động hấp dẫn, tận dụng tất cả một chiếc điện thoại đã cung cấp. Nó được xây dựng
để được thực sự mở. Android được xây dựng trên mở Linux Kenel. Hơn nữa nó sử
dụng một máy ảo tùy chỉnh được thiết kế để tối ưu bộ nhớ và tài nguyên phần cứng
trong một môi trường di động.
3. Nền tảng Android
Với khả năng rộng rãi của Android, sẽ rất dễ dàng nhầm lẫn nó với một hệ điều
hành máy tính để bàn. Android là một môi trường phân tầng, xây dựng trên nền của hệ
điều hành nhân Linux, và nó bao hàm nhiều chức năng phong phú. Hệ thống con giao
diện người sử dụng gồm có:
•
•
•
Cửa sổ
Khung nhìn
Các tiểu trình để hiển thị các phẩn tử phổ biến như các hộp biên soạn, danh
sách, danh sách thả xuống
Android gồm một trình duyệt có thể nhúng vào được, được xây dựng dựa trên
WebKit, chính là máy (engine) trình duyệt mã nguồn mở cũng đang là động cơ của
trình duyệt Safari di động của iPhone.
Android khoe ra một mảng dồi dào nhiều tùy chọn kết nối, gồm WiFi,
Bluetooth, và dữ liệu không dây qua một kết nối di động (như GPRS, EDGE, và 3G).
Một kỹ thuật phổ biến trong các ứng dụng Android là liên kết tới Google Maps để hiển
thị một địa chỉ trực tiếp trong một ứng dụng. Việc hỗ trợ cho các dịch vụ dựa trên địa
điểm (chẳng hạn như GPS) và các dụng cụ đo gia tốc cũng có sẵn trong chồng phần
5
mềm Android, mặc dù không phải tất cả các thiết bị Android được trang bị với các
phần cứng cần thiết. Cũng có cả hỗ trợ máy ảnh (camera) nữa.
Về mặt lịch sử, có hai lĩnh vực mà các ứng dụng di động đã gắng sức theo kịp
các đối tác máy tính để bàn là đồ họa/đa phương tiện, và phương thức lưu trữ dữ liệu.
Android giải quyết thách thức về đồ họa bằng sự hỗ trợ dựng sẵn cho đồ họa 2-D và 3D, gồm cả thư viện OpenGL. Gánh nặng lưu trữ dữ liệu được giảm nhẹ vì nền Android
có gồm cả cơ sở dữ liệu SQLite mã nguồn mở phổ biến. Hình 1 cho thấy một khung
nhìn đơn giản hoá về các tầng phần mềm Android.
4. Thách thức và phát triển
Thiết bị android được phân phối đang có tốc độ tăng trưởng nhanh hơn bất kỳ
một nền tảng di động nào khác, điều đó giúp Android trở thành sự lựa chọn tuyệt vời
trong hành trình phát triển ứng dụng trên điện thoại di động. Một nhược điểm lớn của
ứng dụng Android là sự phân mảnh. Thực tết cho thấy, hầu hết các nhà phát triển ứng
dụng gần như không thể kiểm tra một ứng dụng cho mọi thiết bị Android cho đến các
phiên bản hệ điều hành.
II. Môi trường lập trình
1. Android Development Tool (ADT)
ADT là công cụ phát triển Android bao gồm mọi thứ mà chúng ta cần để bắt đầu
phát triển một ứng dụng Android:
•
•
•
•
•
Eclipse + ADT plugin
Android SDK Tools
Android Platform-tools
A version of the Android platform
A version of the Android System image for the emulator
Chúng ta có thể download trên trang chủ của android:
6
/>
Hình 1: ADT
2. AVD và SDK Manager
AVD (Android virtual device) thiết bị máy ảo Android, dùng để test ứng dụng
lập trình trên ADT, tuy nhiên AVD chạy rất tốn thời gian, để khắc phục điều này ta có
thể dùng máy ảo Genymotion.
7
Hình 2: Máy ảo Genymotion
8
SDK Manager (Software Development Kit) Công cụ quản lý phần mềm phát
triển bao gồm:
•
•
•
•
•
Tools
Code samples
Documentations
Compliers
Libraries
Hình 3: SDK Manager
III. Phần mềm quản lý pin trên điện thoại Android
1. Chức năng của ứng dụng
Phát triển ứng dụng quản lý pin trên điện thoại Android (Battery Saver) thực
hiện các chức năng sau:
•
•
Hiển thị % pin còn lại, tính toán thời lượng sử dụng pin còn lại.
Hiển thị các thông số của pin (điện áp, nhiệt độ, dung lượng, …).
Hiển thị các ứng dụng đã sử dụng pin, thời gian sử dụng pin của các ứng
dụng.
Vẽ biểu đồ thể hiện % pin bị tiêu hao theo từng giờ
9
•
Có các chế độ tiết kiệm: điều chỉnh độ sáng màn hình, wifi, bluetooth, GPS,
rung, chuông, tùy theo mức độ pin (người sử dụng có thể tùy chỉnh mức độ pin
•
•
phù hợp).
Dọn dẹp các ứng dụng chạy ngầm gây tốn pin (Task manager).
Tạo logfile/cơ sở dữ liệu ghi thông tin lịch sử sử dụng pin (thời điểm nạp pin, số
giờ sử dụng mỗi lần nạp…).
2. Kiến thức sử dụng trong ứng dụng
Dùng SQLite để lưu trữ và hiển thị các thông số của pin.
• Chức năng của SQLite cũng giống như SQL Server trong C# hoặc
MySQL trong pHp, bao gồm nhiều bảng, có chức năng lưu trữ dữ
liệu đồng thời hỗ trợ truy vấn khi cần thiết.
• Trong Android hỗ trợ class SQLiteOpenHelper để tạo cơ sở dữ liệu tổng
quát, còn đơn thuần chỉ việc dùng các câu lệnh SQL như các tham số
truyền vào hàm
Hàm tạo tổng quát: context,name_db,cursorfactory,version:
trong đó context chính là đối tượng sử dụng (thường gắn với
activity),name_db và version do chúng ta tự đặt (lưu ý name_db
kiểu String, còn version kiểu int), cursorfactory mặc định null.
Mở/đóng cơ sở dữ liệu: hàm openDatabase() nếu mở, còn đòng
thì sử dụng hàm close().
onCreate(SQLiteDatabase db): được gọi lần đầu tiên, có chức
năng tạo mới cơ sở dữ liệu, đồng thời tạo luôn các bảng để lưu các
bản ghi dữ liệu
Dùng Broadcast Receiver để thu nhận các thông số của pin.
• Vòng đời của BroadCast Receiver:
10
•
Hình 4: Vòng đời BroadCast Receiver
BroadCast Receiver chỉ có 1 phương thức duy nhất
là onReceive(). Sau khi phương thức này được gọi thì vòng đời của
Broadcast Receiver kết thúc tại đây.
Ngay sau khi kết thúc phương thức onReceive() hệ thống coi như là
Broadcast Receiver đã kết thúc và có thể killprocess bất cứ lúc nào.
• BroadcastReceiver phân biệt các intent với nhau chủ yếu nhờ action
của intent, do đó cần phải định nghĩa thật chính xác.
Custom Listview để hiển thị các ứng dụng chạy ngầm.
• Đặt Arraylist<String> lên trang chúng ta sử
dụng
một
ArrayAdapter<String>. Lớp này là lớp chưa có sẵn, chúng ta phải tạo
ra nó, nó có nhiệm vụ đặt các phần tử trong mảng lên trên Listview.
Ngoài ra chúng em sử dụng các kiến thức cơ bản của Android như Intent,
Notification, XML, …
3. Thực hiện ứng dụng trên thiết bị thực.
Ứng dụng được test trên điện thoại di động Asus Zenphone 5, với màn hình hiển
thị chính:
11
Hình 5: Màn hình hiển thị chính của ứng dụng
Menu Mode: Có các chế độ tiết kiệm pin, người dùng có thể tùy chỉnh chế độ
sao cho phù hợp với nhu cầu sử dụng.
12
Hình 6: Menu mode
Menu Task: Dọn dẹp các ứng dụng chạy ngầm gây tốn pin
13
Hình 7: Menu Task
14
Menu Status: Biểu đồ thể hiện % pin tiêu hao theo giờ
15
Hình 8: Menu Status
16