Với giao điện đẹp, thân thiện, hướng tới người dùng, phần mềm đã đáp ứng các yêu cầu của người dùng một cách nhanh chóng, chính xác, hiệu quả, đồng thời rất đễ sử dụng.. Hệ điều hành an
Trang 1_ LY THUYET LAI XE O TO,
PHIEN BAN DANH CHQ.DIEN THOAI ANDROID
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM
BAO CAO TONG KET
ĐÈ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
PHAN MEM MIEN PHI GIUP ON THI SAT HACH LUAT,
LÝ THUYÉT LÁI XE Ô TÔ, PHIÊN BẢN DÀNH CHO ĐIỆN THOẠI
Trang 3
Muc luc
Danh mục bảng .- G1 HH TH HH HC HH crkt 3 Danh mục những từ Viết tắt tt HH HT HT HT crerrrererreea 3
lô Sa 1 4311324 6 Phân I: Đặt vân đỀ - LH nung TH HC ng 7
1 Tình hình nghiên cứu trong và ngoài nước: . -s=c< c5 7
2 _ Oi turgng mghidn CUUe oo ee sec eseeeccessesecscsesecsesecsescsecscsscscscescscsceseaeerens 7
3 Những vấn đề còn tồn tại: 2 5s tk EEEEEEESEEEEEESErrerrcree 7
Phần II: Gidi quyét van dé o c.ccceccsccessccesessesessecsecseseesecstsscsucsessesssscsneaseseareaves 8
1 Mục đích mghi€m aru cccccccsssccssscecseeeeceesececsssnsecesecsesesssssessanerens 8
2 Phương pháp nghiên CỨU 5G 2 Ăn HH kg key 8 3 Nội dung nghiên cứu - -SS TH TH TH nung cư ưy 8
1 Hệ điều hành android: - - s+s+k+sEEk£EEESEE+EEEkrkrrrrererrees 8
2 Ung dung thi sat hach giấy phép Iai xe: oo cece esessesteeeeeeeeeees 35
4 Ket qua dat dure: ccccccccccscsssssscssssssessvsvsscessecacseescersesesarsucecatacsecseseeas 48
1 Nắm các kiến thức hệ điều hành android: -ssss+zzevzec- 48
2 Viết ứng dụng hoàn chỉnh: phần mềm sát hạch giấy phép lái xe ô tô 1020072200) 0/1 nố ốốốeẮ.- 48
3 Hiệu quả kinh tế: 2-5222 + cxetEvkrkrkekerkrkerkreee 49 Phần mềm nhỏ gọn trên chiếc điện thoại giúp người dùng tiết kiệm thời gian và tiền bạc, tận dụng thời gian tối đa để học luật mọi lúc, mọi nơi ngay cả trong thời
2 c0 -.d (V€(Œ(LŒŒ-)) 49 Phan III: Kết luận và đề nghị 2-52 S23 EEEEEEEEEEEEEEEEEErerrererrrrees 50
A"“.‹.) 6 50
cãi co ớẽớốớớớớ ớớớ ẽAa An ah 50
Trang 4Danh muc hinh
Hình 1 Chu kỳ sống cita tmg dung Android .ccescssescsssessssesessssessessecssseeesseesesees 11
Hình 2 Activity stack ccecccccssscscsessssescsessssssecscssscsesessescssscscssscavevsvavscacavseesesess 12
Hinh 3 Chu ki s6ng cita Activity c c.cccccccscscessssessssesssessescssecsssecsevessveesneseseceseseess 12
FU 4 TET cccccscsessswsssassavnzeencravsecortorensuqnenenssatentensnsenegensnsensassstatecsenssnansrtanneaneseass 15
Hình 5 Các Action được dựng sẵn 2 - + HE E111 crke 16
Hình 6 Chu trình sống của một Service -2 s2 xxvEktvEEkrtrkerrrkrrrrrcer 19
Hình 7 Kiến trúc Android -cc-:: tt crtEEkktrttrrrrrirrrirtrrea 20
Hình 9 Các thành phần giao diện - 2s 212 22x EEEEEE1122112E1E7Eerrrvee 29
Hình 10 Bố trí các widget sử dụng LinearLayOut s se vx++exxevrxerrrxee 30 Tinh, 1 1 Erame layout sạsaresserverpuuonnsotttutbrgE0iiiSdENDS00000130190S28G024VS83013g37g0300g881g00030g16048 30 Hình 12 RelativeLayout sewed SEESESE5515185S75E151ESV55381 181588 18x vE nến ga nen 31 Hinh 13 1 )0)/)0)/0 T8 nn - 4 32
si 0 5P ¿2 Tố 33 Hình 15 Cơ sở dữ liệu - - +7 St + n2 HH 112111111111, 38 Hình 16 Màn hình chính - - - 5 + tt HH 1111111111111 110110111 11x 38
Hình 17 Giao diện ôn thi lý thuyết lái xe ô tô .22-©2cccceecrkerrrerrrcee 39
Hình 18 giao diện câu hỏi ôn thi . 555 + + 2 1811111111111 erree 39 Hình 19 giao diện search theo câu hỏi thi c cv tt n nh neo 40 Hình 20 Màn hình search theo nội dung câu hỏi .- 5-5555 ccscsccS2 40 Hình 21 Giao diện két qua search theo nội dung câu hỏi - 2 41 Hinh 22 Dialog khi click chọn ôn thi c2 4 nhàn nh nen grei 41 Hinh 23: Gia: Gin Ui, ccsssssceasssavesovsvensenvewseessszesveasiecteysesseasscesseesseneererunervennesovevesnes 42 Hinh 24 Giao dién kết quả thí (khi click vào két thc) cccccssssssccsssssssssssesssseeeece 42
Hình 25 Màn hình đáp án (khi click vao dap An) scsssssssssssessscssscsecseseees 4
2
Trang 5Hình 26 Dialog chọn lịch sử đã thi ccenerrerrrrrrrrrrrrrrrr 44
Hình 27 Màn hình lịch sử thì 5c 5cc2Extrtrtrrrrrrrrrrrrrrrrrrrrrrrrirrrrriie 44 Hình 28 Màn hình các loại biển báo cccccenrreeeerrrrrrrrrrrtre 45
Hình 29 Màn hình biển báo cấm . - c2 45 Hình 30 Màn hình biển báo nguy hiểm 5 cscnieerrrrieriirrrrirrirre 46
Hình 31 Màn hình biển báo hiệu lệnh -555-55ccttrrerrrrrtrtrtirrrrrrrie 46
Hình 32 Màn hình biển báo chỉ dẫn 5-55 55+2cserterrrerrrtrirrrriirrrrrrrr 47
Hinh 33 Man hinh cdc me0 thi eeceeeseeecsseceeneseeeeeeeeeeeseessenseesssesneesasensensenseenegs 47
Danh muc bang
Bảng 1 Các thuộc tính của đối tượng Ẩriltefilsonsesssonoernannnsironnrntermaseeeesreeslki 15
2 ADT Android Development Tools — Céng
cu phat trién Android
3 API Application Programming Interface
— Giao điện lập trình ứng dụng
4 CSDL Cơ sở dữ liệu
6 SDK Software Development Kit - Phat
trién phan mém
7 XML eXtensible Markup Language - Ng6n
ngữ Đánh dâu Mở rộng
Trang 6BO GIAO DUC VA DAO TAO
TRUONG DH SU PHAM KY THUAT TPHCM
THONG TIN KET QUA NGHIEN CUU CUA DE TAI
1 Thong tin chung:
- Tén dé tai: Phan mém giúp ôn thi sát hạch luật, lý thuyết lái xe ôt ô, phiên bản dành
cho điện thoại Android
- Sinh viên thực hiện: Cao Nguyên Ngọc MSSV: 10110228
- Dân tộc: Kinh
- Lớp: 10110CC Khoa: Đào Tạo Chất Lượng Cao
- Năm thứ: 4/4 Số năm đào tạo: 4
- Sinh viên thực hiện: Bùi Hạ My MSSV: 10110214
-Dântộc: Kinh
- Lớp: 10110CC Khoa: Đào Tạo Chất Lượng Cao
- Năm thứ: 4/4 Số năm đào tạo: 4
- Người hướng dẫn: Thạc Sĩ Nguyễn Minh Đạo
2 Mục tiêu đề tài:
Tìm hiểu hệ điều hành android, phần mềm giúp ôn thi sát hạch luật, lý thuyết lái xe ô
tô phiên bản đành cho điện thoại di động Android
3 Tính mới và sáng tạo:
Phần mềm nhỏ gọn, dễ sử dụng Ngoài những chức năng ôn thi, thi, xem các loại biển báo giúp người dùng học luật, còn có những mẹo giúp người dùng dễ nhớ đáp án hơn,
xem lại lịch sử mình da thi để điều chỉnh việc học phù hợp
4 Kết quả nghiên cứu:
Nắm các kiến thức hệ điều hành android, Viết ứng dụng hoàn chỉnh: phần mềm sát hạch giấy phép lái xe ô tô hạng B1, B2, C, D, E, F
5 Đóng góp về mặt giáo dục và đào tạo, kinh tế - xã hội, an ninh, quốc phòng và
khả năng áp dụng cúa đề tài:
Phần mềm nhỏ gọn trên chiếc điện thoại giúp người dùng học luật lệ mọi lúc mọi nơi,
hiểu hơn về luật lệ giao thông góp phần an toàn khi ham gia giao thông Phần mềm có
4
Trang 7thé áp dụng ở các trung tâm học và thi lai xe, img dung cho tất cả mọi người tiếp cận tốt
và hiệu quả với luật lệ giao thông
6 Công bố khoa học của SV từ kết quả nghiên cứu của đề tài (ehỉ rõ tên tạp chí nếu
có) hoặc nhận xét, đánh giá của cơ sở đã áp dụng các kết quả nghiên cứu (nếu có):
Ngày tháng năm
SV chịu trách nhiệm chính thực hiện đề tài (ki, ho va tén)
Nhận xét của người hướng dẫn về những đóng góp khoa học của SV thực hiện đề tài (phần này do người hướng dan ghi):
Ngày tháng năm
(kí tên và đóng dấu) (ki, ho và tên)
Trang 8Tom tat dé tai
Phần mềm ôn thi sát hạch luật, lý thuyết lái xe ô tô là công cụ hữu ích cho các bạn muốn học luật cũng như ôn thi lay bang lái xe ô tô Với giao điện đẹp, thân thiện,
hướng tới người dùng, phần mềm đã đáp ứng các yêu cầu của người dùng một cách
nhanh chóng, chính xác, hiệu quả, đồng thời rất đễ sử dụng
Sau một thời gian nghiên cứu và phát triển, em đã xây dựng hoàn chỉnh phần mềm
ôn thi sát hạch luật, lý thuyết lái xe ô tô với các chức năng cơ bản sau:
- Chế độ ôn thi cho phép xem toàn bộ 450 câu hỏi Đầy đủ dữ liệu 450 câu hỏi sát hạch lý thuyết lái xe và sa hình Tìm kiếm câu hỏi bằng cách gõ nội dung cần tìm
- Chế độ làm bài thi với các bộ đề được sinh ngẫu nhiên cho các hạng BI, B2, C, D,E,F Xem lịch sử thị
- Xem kết quả và đáp án sau khi làm xong bài thi
- Xem các dạng trong danh sách biển báo giao thông: biển cấm, biển báo nguy
hiểm, biên hiệu lệnh, biển báo chỉ dẫn
- Xem các mẹo giúp người dùng đễ nhớ, dé dàng chọn đáp án nhất
Trang 9Phan I: Dat van dé
i Tình hình nghiên cứu trong và ngoài nước:
Điện thoại di động nỗi bậc lên như một phương tiện liên lạc hữu ích nhất, tiện lợi
nhất, đặc biệt đối với những người sống và làm việc trong các đô thị Hiện nay trên
thế giới, điện thoại di động không phát triển không ngừng và nhanh chóng cả về
công nghệ lẫn tính năng, ứng dụng Riêng ở Việt Nam, thị trường điện thoại di
động đã và đang phát triển mạnh mẽ với số lượng người sử dụng đông đảo, hơn
hắn các thiết bi đi động cá nhân khác
Bên cạnh đó, nhu cầu thi lay bằng lái xe ô tô sẽ trở nên rất phố biến và cần thiết
Vì vậy, một ứng dụng phần mềm miễn phí giúp ôn thi sát hạch luật, lý thuyết lái
xe ô tô, phiên bản dành cho điện thoại di động Android được người dùng chờ đợi
và ủng hộ
2 Đối tương nghiên cứu:
- Nghiên cứu hệ điều hành android về nhiều phương diện: hình thức, cấu trúc bên
ngoài, bên trong
- Nghiên cứu cách viết ứng dụng chạy trên hệ điều hành android -
3 Những vẫn đề còn tồn tai:
Hiện nay các thiết bị điện thoại đi động phát triển rất mạnh mẽ Nhu cau thi bang
lái xe ô tô của người dân cũng không còn là vấn đề xa vời vì nhiều người đã có thé săm cho mình những chiếc ô tô giá hợp túi tiền cũng như đối với những người dùng việc lái xe để mưu sinh Tuy nhiên cùng với nhịp sống hiện đại thì không phải lúc
nào họ cũng có thể cầm theo rất nhiều tài liệu, đề thi sẽ rất bất tiện mà không hiệu
quả Cuộc sống ngày càng trở nên hiện đại nên họ cần những ứng dụng phần mềm
ngay trên chính chiếc điện thoại di động nhỏ gọn Tuy nhiên trên mạng cũng có
phiên bản cả cũ cả mới lẫn lộn, của nhiều tác g1ả khác nhau nên cực kì khó khăn
cho người sử dụng tìm kiếm và tải về thì không sử dụng được Android là hệ điều
hành trên điện thoại đi động (và hiện nay là cả trên một số đầu phát HD, HD Player,
TV) phát triển bởi Google và dựa trên nền tảng Linux 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 Tuy nhiên số
7
Trang 10lượng phần mềm thi lái xe rất ít và hạn chế đặc biệt trên điện thoại đi động trên hệ
điều hành Android thì càng hiếm
Phân II: Giải quyêt vần đề
1 Muc đích nghiên cứu
Tìm hiểu sâu hệ điều hành android - một hệ điều hành đi động mã nguồn mở, miễn
phí, mạnh mẽ và được ưa chuộng cao trên thế giới
phần mềm giúp ôn thi sát hạch luật, lý thuyết lái xe ô tô phiên bản dành cho điện thoại di động Android Phần mềm bao gồm đầy đủ dữ liệu 450 câu hỏi sát hạch lý thuyết lái xe, luật giao thông đường bộ cho các hạng B1, B2, C, D, E, F vô cùng hữu ích cho các bạn muốn ôn thi lay bằng lái xe ô tô, giấy phép lái xe -
2 Phương pháp nghiên cứu
Thu thập từ nguồn tài liệu: Thu thập các nguồn tài liệu trong ngành, ngoài ngành,
nội bộ, trên mạng Cấp tài liệu: Tài liệu cấp I (Tài liệu sơ cấp), Tài liệu cấp II, II (Tài liệu thứ cấp) Tiến hành phân tích tài liệu tìm được kết hợp với kiến thức
đã có
Sau đó tổng hợp tài liệu đã nghiên cứu: chỉnh lý tài liệu, sắp xếp lại tài liệu cùng
với sự hỗ trợ của thầy hướng dẫn
Tìm hiểu lý thuyết lái xe ô tô, đặc biệt là 450 câu hỏi thi sát hạch
Viết ứng dụng thực tiễn đề ứng dụng các kiến thức đã tìm hiểu
sâu Nôi dung nghiên cứu
1 Hệ điều hành android:
Giới thiêu ứng dụng Android
11 — Giới thiệu chung về hệ điều hành android:
Android là một hệ điều hành đi động dựa trên nền tảng linux phiên bản 2.6 đành cho các dòng điện thoại SmartPhone Đầu tiên được ra đời bởi công ty liên hợp
Android, sau đó được Google mua lại và phát triển từ năm 2005 và trở thành một
hệ điều hành di động mã nguồn mở, miễn phí, mạnh mẽ và được ưa chuộng cao
trên thế giới
Hệ điều hành Android một hệ điều hành rất mạnh, có bảo mật cao, hỗ trợ được nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi, NFC tương thích với nhiều
8
Trang 11phan cứng, hỗ trợ nhiều loại bộ nhập đữ liệu như keyboard, touch và trackball Android là hệ điều hành di động nên có khả năng kết nối cao với các mạng không
dây Hỗ trợ công nghệ OpenGL nên có khả năng chơi các phương tiện media, hoạt
hình cũng như trình điễn các khả năng đề họa khác cực tốt, là tiền đề để phát triển
các ứng đụng có giao diện phức tạp chăng hạn như là các trò chơi
Android liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần Android
được tối ưu hóa đề hoạt động tốt hơn, nhanh và én dinh hon, hỗ trợ thêm công nghệ
mới Chăng hạn như theo một đánh giá thì Android phiên bản 2.2 hoạt động nhanh hơn bản 2.1 tới 450% Hiện nay, phiên bản mới nhất 4.4 phát hành 2013 và đang
tiếp tục được cập nhật
Năm 2008, hệ điều hành Android đã chính thức mở toàn bộ mã nguồn, điều đó cho
phép các hãng điện thoại có thể đem mã nguồn về tùy chỉnh, thiết kế lại sao cho phù hợp với mỗi mẫu mã điện thoại của họ và điều quan trọng nữa là hệ điều hành
mở này hoàn toàn miễn phí, không phải trả tiền nên giúp họ tiết kiệm khá lớn chỉ phí phát triển hệ điều hành Những điều đó là cực kỳ tốt không chỉ đối với các hãng
sản xuất điện thoại nhỏ mà ngay cả với những hãng lớn như Samsung, HTC Với Google, vì Android hoàn toàn miễn phí, Google không thu tiền từ những hãng
sản xuất điện thoại, tuy không trực tiếp hưởng lợi từ Android nhưng bù lại, những
dịch vụ của hãng như Google Search, Google Maps, nhờ có Android mà có thể
dễ dàng xâm nhập nhanh vào thị trường di động vì mỗi chiếc điện thoại được sản
xuất ra đều được tích hợp hàng loạt dịch vụ của Google Từ đó hãng có thể kiếm
bội, chú yếu là từ các nguồn quảng cáo trên các dịch vụ đó
Với các nhà phát triển ứng đụng, việc hệ điều hành Android được sử dụng phô biến
đồng nghĩa với việc họ có thể thoải mái phát triển ứng dụng trên nền Android với
sự tin tưởng là ứng dụng đó sẻ có thể chạy được ngay trên nhiều dong dién thoại của các hãng khác nhau Họ ít phải quan tâm là đang phát triển cho điện thoại nào, phiên bản bao nhiêu vì nền tảng Android là chung cho nhiều dòng máy, máy ảo Java đã chịu trách nhiệm thực thi những ứng dụng phù hợp với mỗi dòng điện thoại
mà nó đang chạy Tắt cả các chương trình ứng dụng được viết bằng ngôn ngữ Java kết hợp với XML nên có khả năng khả chuyển cao Giới thiệu ứng dụng Android: Các thành phần của ứng dụng Android
Các thành phần chính của một ứng dụng Android gồm:
9
Trang 121) Activity
Hiểu một cách đơn giản thì Activity là một màn hình của 1 ứng dụng Mỗi một màn hình là một lớp mở rộng của lớp Activity Khi khởi động 1 ứng dụng Android nào đó thì bao giờ cũng có một main Activity được gọi, hiển thị màn hình giao diện chính của ứng dụng cho phép người dùng tương tác và từ đó mở ra các màn hình khác
2) Services
Thanh phan chay an trong Android Service sir dung đề thực hiện những công việc
mà không cần hiển thị xuyên suốt cho người dùng thấy như hẹn giờ, theo dõi các cập nhật của ứng dụng, đưa ra các cảnh báo (Notification)
đó
5) Broadcast Receiver
Thanh phan thu nhận các Intent bên ngoài gửi tới
Ví dụ: bạn viết 1 chương trình thay thế cho phần gọi điện mặc định của Android, khi đó bạn cần 1 Broadcast Receiver để nhận biết các Intent là các cuộc gọi tới
6) Notification
10
Trang 13Đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động Đây là một kỹ thuật được ưa chuộng để tạo một chú ý người đùng từ bên trong một Service
hoặc một Broadcast Receiver Ví dụ khi người dùng đang nhận một tin nhắn hoặc đang nhận cuộc gọi, chúng sẽ gửi đến họ một tín hiệu bằng đèn, tạo một âm thanh
hoặc hiển thị một biểu tượng nào đó
Vòng đời của ứng dụng Android
Một sự khác thường và là đặc tính cơ bản của Android là thời gian sống của tiễn
trình ứng dụng không được điều khiên trực tiếp bởi chính nó Thay vào đó, nó được
xác định bởi hệ thống qua sự kết hợp của việc theo dõi:
= Nhimg phan cia img dụng mà hệ thống biết là đang chạy
# Độ ưu tiên của các thành phần ứng dụng
" Ứng dụng chiếm lĩnh bao nhiêu vùng nhớ của hệ thống
Một tiến trình của một ứng dụng Android được tao ra và còn chạy cho đến khi người sử dụng hủy hoàn toàn hay khi hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ
để cung cấp cho các ứng dụng khác có độ ưu tiên cao hơn
Các thành phần ứng đụ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 activie nó có thé visible hoặc invisible
Chu kỳ sống một tring dung Android
Start Active/Inactive End
Nếu người dùng nhắn nút Back thì activity kết tiếp của stack sẽ đi duyễn lên và trở thanh active Activity
11
Trang 14
Ế SN co JRE eee 3
Activity mdi | T Nút nhắn Back được nhắn
được khởi tạo Hoặc Activity đang chạy được đóng
Hinh 3 Chu ki song ciia Activity
Mot Activity cé 3 chu ky chinh sau:
= Active hoặc rumning: khi Activity đang được chạy và hiển thị trên màn hình, Activity này tập trung vào những thao tác của người dùng trên ứng dụng
* Paused: Activity dang duoc tạm dừng, tuy bị khi mất focus đo có một Activity
khác với màn hình không che hết Activity bị tạm đừng nằm ở trên, vì thế người
dùng vẫn có thể trông thấy nó Một Activity tạm đừng là còn sống nhưng có thể bị
kết thúc bởi hệ thống trong trường hợp thiếu vùng nhớ
12
Trang 15® Stopped: nếu nó hoàn toàn bao phủ bởi Activity khác Nó vẫn còn các 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
k< Các phương thức trong chu kỳ sống của một Activity:
Phương thức: onCreate()
- Được gọi khi activity lần đầu tiên được tạo
- Ở đây bạn làm tất cả các cài đặt tĩnh tạo các view, kết nối dữ liệu đến list và
- Được gọi trước khi một activity visible với người dùng
- Theo sau bởi onResume() nếu activity đến trạng thái foreground hoặc onStop()
né nó trở nên ân
Phương thức: onResumc()
- Được gọi trước khi activity bắt đầu tương tác với người dùng
- Tai thoi diém nay activity ở trên dinh của stack activity
- Luôn theo sau bởi onPause()
Phương thức: onPauseQ
- Được gọi khi hệ thống đang resuming activity khác
- Phương thức này là điển hình việc giữ lại không đổi dữ liệu
13
Trang 16- Nó nên được điển ra một cách nhanh chóng bởi vì activity kế tiếp sẽ không được resumed ngay cho đến khi nó trở lại
- Theo sau bởi onResume nếu activity trở về từ ở trước, hoặc bởi onStop nều nó trở nên vIsibÌle với người dùng
- Trạng thái của activity có thê bị giết bởi hệ thống
Phương thức: onStopQ
- Được gọi khi activity không thuộc tầm nhìn của người dùng
- Nó có thê điễn ra bởi vì nó đang bị hủy, hoặc bởi vì activity khác vữa được
- Được gọi trước khi activity bị hủy
- Đó là lần gọi cuối cùng mà activity này được nhận
- Nó được gọi khác bởi vì activity đang hoàn thành, hoặc bởi vì hệ thống tạm thởi
bị hủy điệt để tiết kiệm vùng nhớ
- Bạn có thê phân biệt giữa 2 kịch bản với phương isFinshingQ
Intent
e Khai niện Intent:
Intent là một cấu trúc đữ liệu mô tả cách thức, đối tượng thực hiện của một Activity
Nó là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau Intent chính là người đưa thư, giúp cac Activity cé thể triệu gọi cũng như truyền các dữ liệu cần thiết tới một Activity khác Điều này cũng giống như việc đi chuyển qua lại giữa các Forms trong lập trình Windows Form
14
Trang 17ee ~ Activity A Intent: action+data Z7 AdMVB `.” OO re,
(Setprofile picture pis!) =} So 1/7 (pick up one pis!)
(Intent: code + result) :
Hinh 4 Intent
Intent về cơ bản là một cấu trúc đữ liệu, được mô tả trong lớp android.content.Intent
e Các thuộc tính của một đối tượng Intent:
Bảng 1 Các thuộc tính của đối tượng Intent
action Action cé thé do Android định nghĩa san (built-in
standard action) hoặc do người lập trình tự định
data Dir ligu mà Activity được gọi sẽ xử lý
catelogy Thông tin về nhóm của action
ị Định đạng kiểu dữ liệu (chuân MIME), thường được
tự động xác định
Chỉ định cụ thê lớp sẽ thực thi Activity Khi được xác
component định, các thuộc tính khác trở thành không bất buộc
e Các Action được định nghĩa sẵn:
Dưới đây là những hằng String đã được định nghĩa sẵn trong lớp Intent Đi kèm
với nó là các Activity hay Application được xây dựng sẵn sẽ được triệu gọi mỗi
khi Intent tương ứng được gửi (tất nhiên khi được cung cap dung data)
15
Trang 18Vi dụ: Gọi tới một số điện thoại:
Intent diallntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:123456")); startActivity(diallntent);
: ‘Built-in Standard Actions
ACTION MAIN ACTION ANSWER
ACTION VIEW ACTION INSERT
ACTION ATTACH DATA ACTION DELETE
ACTION EDI ACTION RUN
ACTION PICK ACTION SYNC
ACTION CHOOSER ACTION PICK ACTIVITY
ACTION GET CONTENT ACTION SEARCH
ACTION DIAL ACTION WEB SEARCH
ACTION CALL | ACTION FACTORY TEST
ACTION SEND ACTION SENDTO
=" Built-in Standard Broadcast Actions.)
ACTION TIME TICK ACTION PACKAGE RESTARTED
ACTION TIME CHANGED ACTION PACKAGE DATA CLEARED
ACTION TIMEZONE CHANGED ACTION UID REMOVED
ACTION BOOT COMPLETED ACTION BATTERY CHANGED
ACTION PACKAGE ADDED ACTION POWER CONNECTED
ACTION PACKAGE CHANGED ACTION POWER DISCONNECTED
ACTION PACKAGE REMOVED ACTION SHUTDOWN
Hình 5 Các Action được dựng sẵn
Content Provider và Dri
Trong hệ thống Android tất cả các tài nguyên như Contact, SMS, đều được lưu trir vao CSDL SQLite của hệ thống Cũng như các CSDL khác, CSDL mà hệ thống Android sử dụng để lưu trữ thông tin cũng cho phép chúng ta truy vấn dữ liệu như một CSDL thông thường Tuy nhiên, trong hệ thống đó chúng ta không cần phải
thao tác bằng lệnh SQL nhiều dé truy xuất dữ liệu mà thay vào đó Android đã được
trang bị một API cho phép người lập trình có thể dễ đàng truy xuất dữ liệu Đó gọi
là ContentProvider ContentProvider cung cấp cho chúng ta một đối tượng con trỏ
giúp chúng ta có thể dễ dàng lấy được bất cứ đữ liệu lưu trữ nào chỉ cần cung cấp
một đường dẫn đúng đến dữ liệu đó Đường dẫn này còn được gọi là Uri
content: //com.example.transportationprovider/trains/122
Tao mot Uri:
Uri uri = Uri.parse(“content://com.android.contacts/contacts”);
Cấu trúc gồm có 4 phần chính như sau:
w Phần A: Đây là tiền tố chỉ ra dữ liệu được điều khiển bởi Content Provider và nó
không bao giờ thay đồi
16
Trang 19= Phan B: Phan này chỉ đến nơi lưu trữ đữ liệu Cũng giống như cấu trúc của một
số điện thoại thì cái này có thể hình dung nó như là mã quốc gia hoặc cũng có thể
coi nó như là tên của CSDL
= Phan C: phan nay chi ra loại đữ liệu Chẳng hạn như, đữ liệu contact, dữ liệu
SM§S, Phần này có thê coi nó như là tên của một table
» Phần D: phần này chỉ đến đúng vị trí của dữ liệu, có thể coi phần này như là ID
của row trong table hoặc một dữ liệu nào đó dùng để truy van
Ví dụ: Uri chỉ đến contact thứ 0 trong CSDL là: content://contacts/people/0
Để có thê thực hiện truy vấn đến vùng đữ liệu được chỉ ra bởi mét Uri ta cần có 2
đối tượng con trỏ được cung cấp bởi Activity đó là: Cursor và ContentResolver
Đề lấy được 2 đối tượng này thì trong Activity sử dụng hàm
getContentResolverQ; - trả về đối tượng ContentResolver
getContentResolver().query(Ủrni uri); - trả về đối tượng Cursor
Background Service
Service là một trong 4 thành phần chính trong một ứng dụng Android (Activity,
Service, BroadcastReceiver, ContentProvider) thành phần này chạy trong hậu
trường và làm những công việc không cần tới giao diện như chơi nhạc, download,
xử lí tính toán, 1¬
Một Service có thể được sử dụng theo 2 cách:
“ Nó có thê được bắt đầu và được cho phép hoạt động cho đến khi một người nào
đó dừng nó lại hoặc nó tự ngắt Ở chế độ này, nó được bắt đầu bằng cách gọi
Context.startService() và dừng bằng lệnh Context.stopService() Nó có thé tu ngat
bang lénh Service.stopSelf() hoac Service.stopSelfResult() Chi cần một lệnh
stopService() dé ngimg Service lại cho dù lệnh startService() được gọi ra bao nhiêu
^
lân
“ Service có thê được vận hành bằng việc sử dụng một Interface mà nó định nghĩa
Người dùng thiết lập một đường truyền tới đối tượng Service và sử đụng đường
kết nối đó đề thâm nhập vào Service Kết nối này được thiết lập bằng cách gọi lệnh
Context.bindService() và được đóng lại bằng cách gọi lệnh
Context.unbindService() Nhiều người dùng có thé kết nối tới cùng một Service
F—————————-—_BBSÖ
SKC 005711
Trang 20Nếu Service vẫn chưa được khởi chạy, lệnh bindService() có thé thy ý khởi chạy
nó
Hai chế độ này không tách biệt hoàn toàn, có thể kết nối với một Service mà nó đã được bắt đầu với lệnh startService() Ví dụ, một Service nghe nhạc ở chế độ nền
có thê được bắt đầu bằng cách gọi lệnh startService() cùng với một đối tượng Intent
mà định dạng được âm nhac dé choi Chỉ sau đó, có thể là khi người sử đụng muốn kiểm soát trình chơi nhạc hoặc biết thêm thông tin về bài hát hiện tại đang chơi, thì
sẽ có một Activity tạo lập một đường truyền tới Service bằng cách gọi
bindService() Trong trường hợp như thế này, stopService() sẽ không thực sự ngừng Service cho đến khi liên kết cuối cùng được đóng lại
Giống như một Activity, một Service cũng có các phương thức chu kỳ sống mà ta
có thể cài đặt để kiểm soát những sự thay đổi trong trạng thái của nó Service chỉ
có 3 phương thức được gọi đến trong chu trình sống là:
void onCreate()
void onStart(Intent intent)
void onDestroy()
Các phương thức kết nối và hủy kết nỗi đến một Service:
IBinder onBind(Intent intent)
boolean onUnbind(Intent intent)
void onRebind(Intent intent)
18
Trang 21Service is Service is Started by created by
Hình 6 Chu trình sống của một Service
Hệ điều hành Android có 4 tầng từ đưới lên trên là tầng hạt nhân Linux (Phiên bản
2.6), tang Tang Libraries & Android runtime , Tang Application Framework va trên cùng là tầng Application[2]
19
Trang 22Hinh 7 Kién tric Android
Tang hat nhan Linux (Linux Kernel layer):
Hệ điều hành Android được phát triển dựa trên hạt nhân linux, cụ thể là hạt nhân
linux phiên bản 2.6, điều đó được thê hiện ở lớp dưới cùng này Tất cả mọi hoạt
động của điện thoại muốn thi hành được thì đều được thực hiện ở mức cấp thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp với phần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình (process)[3]
Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã được nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm tay như
hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cần kết nối
mạng không đây
Tầng này có các thành phần chủ yếu :
> 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 đù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 đữ liệu từ camera trả vê
> Bluetooth Driver : Diéu khién thiết bị phát và thu sóng Bluetooth
20
Trang 23> 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 phat song wifi
> Audio Driver : điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu
đạng audio thành tín hiệu số và ngược lại
> Binder IPC Driver : Chiu trach 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
Tang Library va Android runtime: Phần này có 2 thành phần là phần Library và Android Runtime
Tầng Libraries:
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ư[4] :
> 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 mã đề hỗ trợ việc phát và
ghi các loại định dạng âm thanh, hình ảnh, video thông dụng
> Thư viện web (LibWebCore) : Day là thành phần đề xem nội dung trên web, được sử dụng để xây dựng phan mềm duyệt web (Android Browse) cũng như
để các ứng dụng khác có thể nhúng vào Nó cực kỳ mạnh, hỗ trợ được nhiều công
nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX
> Thư viện SQLite : Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng
21
Trang 24Tang Android runtime:
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thé hoạt động Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như JAVA 10, Collections, File Access Thir hai 14 m6t may ao java (Dalvik Virtual Machine) [5] Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điều hành Android không được chạy bằng JRE của Sun (nay là Oracle) (TVM) mà là chạy băng máy ảo Dalvik do Google phát triển
Tang Application Framework
Tầng này xây dựng bộ công cụ, các phần tử ở mức cao te các lập trình viên có thể nhanh chóng xây dựng ứng dụng Nó được viết bằng Java, có khả năng sử dụng chung dé tiét kiém tai nguyén[6]
Đây là một nền tàng mở, điều đó có 2 điều lợi:
- Với các hãng sản xuất điện thoại : Có thể tùy biến để phù hợp với cấu hình điện thoại mà họ sản xuất cũng như để có nhiều mẫu mã, style (phong cách) hợp thị hiếu người dùng Vì thế nên tuy cùng chung nên tảng Android mà điện thoại của
Google có thể khác hắn với Motorola, HTC, T-Mobile, Samsung
- Với lập trình viên : Cho phép lập trình viên có thể sử dụng các API ở tầng trên
mà không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lập trình viên tự do sáng tạo bởi vì 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
Giới thiệu một số thành phan của phần này :
oActivity 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
oTelephony Manager : Cung cấp công cụ để thực hiện việc liên lạc như gọi điện
thoại
oXMPP Service : Cung cấp công cụ để liên lạc trong thời gian thực
22
Trang 25oLocation 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
o Window Manager : Quan ly 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 điện giữa các ứng dụng
oNotication Manager : Quan ly viéc hiển thị các thông báo (như báo có tin nhắn,
có e-mail mdi )
o Resource Manager : Quan ly tai nguyén tinh cua cac img dung 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)
Tang Application:
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng 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 là gọi điện(phone),
quản lý danh bạ(Contacts), duyệt web (Browser), nhắn tin (SMS), lịch làm việc (Calendar), doc e-mail (Email-Client), ban đồ (Map), quay phim chụp ảnh (camera) [7]
Các ứng dụng được cài thêm như các phần mềm chứng khoán (Stock), các trò chơi
(Game), từ điền
Các chương trình có các đặc điểm là :
> Viết bằng Java, phần mở rộng là apk
> Khi m6i tmg dung duc chay, n6 co mot phién bar Virtual Machine duoc
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 : chương trình chạy nền hay
là dịch vụ
> Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời
điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứng dụng
thì có duy nhất một thực thể (instance) được phép chạy mà thôi Điều đó có tác
dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn
23
Trang 26> Các ứng dụng được gán số ID của người sử dung nhăn phân định quyền hạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống
> Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành đi
động khác, Android cho phép một ứng dụng của bên thứ ba được phép chạy nền Các ứng dụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dung quá
5~10% công suất CPU, điều đó nhằn để tránh độc quyên trong việc sử dụng CPU
> Ứng dụng không có điểm vào cố định, không có phương thức main để bắt
dau
1.3 Hé thống tập tin trên hệ điều hành:
Trong phạm vi một bài tìm hiểu về hệ điều hành, em chỉ xin tìm hiểu rõ một vẫn
đề của hệ điều hành Android đó là vấn để quản lý hệ thống tập tin Phần này có điểm thuận lợi dé tìm hiểu đó là vì được phát triển từ nhân linux nên hệ thống tập tin trên Android cực kỳ giống hệ thống tập tin trên linux như là về cách tổ chức,
những quyền hạn của người sử dụng lên file
1.4.1 Tỗng quan về hệ thống file trên Android
Trong Android, các file được tổ chức thành các thư mục, theo mô hình phân cấp Tham chiếu đến một file bằng tên và đường dẫn Các câu lệnh thao tác file cho phép thực hiện các chức năng như dịch chuyền, sao chép toàn bộ thư mục cùng với các thư mục con chứa trong nó
Có thể sử dụng các ký tự, đấu gạch đưới, chữ số, dau cham va dau phay đề đặt tên file Không được bắt đầu một tên file bằng dầu chấm hay chữ số Những ký tự khác như ‘/’, ‘2’, **°, là ký tự đặc biệt được đành riêng cho hệ thống Chiều dài của tên
file có thể tới 256 ký tự Trong hệ điều hành Android có sự phân biệt tên file chữ
hoa và chữ thường, điều đó có nghĩa là trong cùng 1 thư mục có thể tồn tại những file có tên là File, FILE, file và chúng là những file khác nhau
Tất cả các file trong Android có chung cấu trúc vật lý là chuỗi các byte (byte stream) Cấu trúc thống nhất này cho phép Android áp dụng khái niệm file cho mọi thành phần đữ liệu trong hệ thống Thư mục cũng như các thiết bị được xem như
file Chính việc xem mọi thứ như các file cho phép Android quản lý và chuyên đổi
dữ liệu một cách dễ dàng Một thư mục chứa các thông tin về thư mục, được tổ chức theo một định dạng đặc biệt Các thành phần được xem như các file, chúng
24
Trang 27được phân biệt dựa trên kiéu file: ordinary file, directory file, character device file,
va block device file
1.4.2Cac kiéu file trén Android "
Trong nhiều hệ điều hành như window, người ta phân biệt rõ file (tập tin) và folder (hay đirectory : thư mục) là 2 thành phần khác hẳn nhau Tuy nhiên trên hệ điều
hành Android (cũng như linux) thì coi đirectory cũng là file và nó là một loại file đặc biệt
1.4.3Tổ chức quyền sở hữu và quyền hạn trên file
Tương tự trên hệ thống linux, trên hệ điều hành Android, một file có thể liên kết
với một người sử dụng và một nhóm người sử dụng Sự liên kết đó là một tập hợp các quyền hạn truy cập bao gồm quyền được phép đọc (read), duoc phép ghi (write)
va duoc phép thuc thi (execute)
Cụ thể như sau: Một file sẽ có những quyền hạn tương ứng với 9 ký tự theo mẫu sau : Với ký tự r w x nghĩa là có quyền tương ứng với ký tự viết tắt đó, - nghĩa là không có quyền hạn đó
3 ký tự đầu tiên là quyền hạn chủ nhân file
3 ký tự giữa là quyền hạn của nhóm tài khoản sở hữu file
3 ký tự cuối là quyền hạn của những người không thuộc nhóm sở hữu file
Ví dụ : Một file có dãy ký tự biểu diễn quyền hạn là rwxr-xr— thì điều đó có nghĩa
3 ky tu đầu là rwx : Chủ nhân có thể đọc, ghi và thực thi file
3 ký tự tiếp theo lả r-x thi nhóm tải khoản sở hữu file có quyển đọc vả thực thi ñle chứ không có quyền ghi, chỉnh sửa file
3 ký tự cuối là r nghĩa là những người không sở hữu file chỉ được phép đọc mà
không thể chỉnh sửa hay thực thi file
Trên hệ thống Android, để biết xem được quyền hạn đó, ta có thể sử dụng câu lệnh
Is -1 -d Vi du : Is -1 -d /mnt/sdcard/ NgocMy dé xem quyền hạn của file /mnt/sdcard/NgocMy thi co thể trả về kết quả như sau:
d -rwxr-x system sdcard rw_ 2014-5-29 21:00 NgocMy
Thì những thông tin có thể lấy về là :
25