Tải bản đầy đủ (.docx) (71 trang)

đồ án tốt nghiệp công nghệ thông tin đề tài xây dựng ứng dụng giải trí

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 (1.63 MB, 71 trang )

XÂY DỰNG ỨNG DỤNG GIẢI TRÍ – Niên khóa: 2014 - 2018

NGUYỄN THỊ KIM ANH

XÂY DỰNG ỨNG DỤNG GIẢI TRÍ

Chuyên ngành: Công nghệ Thông tin

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Hà Nội - 2018


ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
Chuyên ngành: Công nghệ Thông tin

Giảng viên hướng dẫn: Th.S Nguyễn Thị Quỳnh Như
Sinh viên thực hiện: Nguyễn Thị Kim Anh
Lớp : 14A4
Lớp: 14A1

Hà Nội - Năm 2018


VIỆN ĐẠI HỌC MỞ HÀ NỘI

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT

KHOA CÔNG NGHỆ THÔNG TIN

NAM
Độc lập – Tự do – Hạnh phúc


Hà Nội, ngày 12 tháng 3 năm 2018

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ và tên: Nguyễn Thị Kim Anh
Ngày sinh: 23/02/1996

Giới tính: Nữ
Nơi sinh: Thái Bình

Chuyên ngành: Công nghệ thông tin Mã số: 14A10010186
Lớp hành chính: 1410A04
1. TÊN ĐỀ TÀI
Xây dựng ứng dụng giải trí
2. NHIỆM VỤ VÀ NỘI DUNG
Nhiệm vụ cụ thể của Đồ án tốt nghiệp:
- Phân tích thiết kế hệ thống, xác định yêu cầu của hệ thống.
- Xây dựng các nghiệp vụ chính sau:
+ Chơi game
+ Nghe nhạc
3. NGÀY GIAO NHỆM VỤ:
4. NGÀY HOÀN THÀNH NHIỆM VỤ:
5. PHÂN CÔNG CÔNG VIỆC: Nguyễn Thị Kim Anh 100%
6. CÁN BỘ HƯỚNG DẪN: Nguyễn Thị Quỳnh Như


LỜI NÓI ĐẦU
Trong quá trình phát triển khoa học kỹ thuật thì công nghệ thông tin đóng
vai trò hết sức quan trọng. Với mong muốn áp dụng công nghệ thông tin vào
trong cuộc sống hàng ngày để làm giảm đi những căng thẳng, mệt mỏi sau
mỗi giờ làm việc, học tập. Tác giả muốn xây dựng một ứng dụng giải trí bao

gồm có nghe nhạc và chơi game để giúp người dùng có thể thư giản quên đi
mọi mệt mỏi, căng thẳng. Một ứng dụng miễn phí phù hợp với mọi lứa tuổi.
Nhận được sự giúp đỡ tận tình của cô Nguyễn Thị Quỳnh Như, người đã trực
tiếp hướng dẫn em trong suốt quá trình thực hiện đồ án của mình. Những nhận
xét, đánh giá và nhất là những chia sẻ kinh nghiệm làm việc của cô là những
thông tin vô cùng hữu ích cho việc hoàn thành dự án của em. Em xin trân
trọng cảm ơn cô, chúc cô và gia đình luôn luôn mạnh khỏe và đạt được mọi
thành công trong cuộc sống.
Bên cạnh đó em cũng xin gửi lời cảm ơn đến các thầy, cô đang công tác
tại khoa Công nghệ thông tin – Viện Đại học Mở Hà Nội đã giúp đỡ quá trình
học tập trên lớp những kiến thức do thầy cô truyền thụ đã giúp em rất nhiều
trong việc hoàn thành được đồ án của mình.
Cuối cùng em xin kính chúc các thầy cô mạnh khỏe, luôn luôn là những
người lái đò ân cần dìu dắt các thế hệ sinh viên tiếp theo của FITHOU trưởng
thành.
Hà Nội, Ngày 11 tháng 4 năm 2018
Sinh viên thực hiện
Nguyễn Thị Kim Anh


MỤC LỤC
LỜI NÓI ĐẦU........................................................................................................
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI.................................................................1
1.1. Lý do chọn đề tài......................................................................................1
1.1.1.

Game 2048......................................................................................1

1.1.2.


Nghe nhạc.......................................................................................2

1.2. Mục tiêu đề tài..........................................................................................2
1.3. Phạm vi đề tài.........................................................................................3
1.4. Phân tích bài toán.....................................................................................3
1.4.1.

Mục nghe nhạc................................................................................3

1.4.2.

Mục chơi game...............................................................................3

CHƯƠNG 2. GIỚI THIỆU CÔNG NGHỆ SỬ DỤNG.......................................5
VÀ NỀN TẢNG PHÁT TRIỂN...........................................................................5
2.1. Hệ điều hành android...............................................................................5
2.1.1.

Đặc điểm.........................................................................................6

2.1.2.

Kiến trúc và các thành phần............................................................7

2.1.2.1. Kiến trúc tổng quát.........................................................................7
2.1.2.2. Các thành phần của một ứng dụng Android..................................7
2.2. Các công nghệ sử dụng............................................................................8
2.2.1.

Ngôn ngữ java.................................................................................8


2.2.2.

Service..........................................................................................10

2.2.3.

Giới thiệu MediaPlayer trong Android.........................................14

2.2.4.

Android SharedPreference............................................................15

CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG...................................17
3.1. Phát biểu bài toán.................................................................................17
3.2. Xác định yêu cầu..................................................................................31


3.2.1. Yêu cầu chức năng............................................................................31
3.2.2. Yêu cầu phi chức năng.....................................................................32
3.1. Mô tả nghiệp vụ bài toán........................................................................33
3.2. Sơ đồ phân rã chức năng.....................................................................36
3.3. Sơ đồ luồng dữ liệu logic......................................................................37
3.3.1.

DFD mức ngữ cảnh.......................................................................37

3.3.2.

Sơ đồ luồng dữ liệu mức đỉnh.......................................................38


3.3.3.

Sơ đồ luồng dữ liệu mức dưới đỉnh..............................................38

3.3.3.1. Mức dưới đỉnh của quản lý nhạc..................................................38
3.4. Rà soát việc đáp ứng các yêu cầu........................................................39
3.5. Mô hình thực thể - quan hệ (ER).........................................................40
3.5.1.

Xác định các kiểu thực thể, thuộc tính và các loại thuộc tính......40

3.6. Thiết kế giao diện.................................................................................40
3.6.1.

Menu màn hình chính...................................................................40

3.6.2.

Màn hình nghe nhạc......................................................................41

3.6.3.

Màn hình chọn kích thước game..................................................42

3.6.4.

Màn hình game 2048 kích thước 3 x 3.........................................43

3.6.5.


Màn hình game 2048 kích thước 4 x 4.........................................44

3.6.6.

Màn hình game 2048 kích thước 5x5...........................................45

3.6.7.

Màn hình hướng dẫn chơi game...................................................45

3.6.9.

Màn hình hiển thị khi người chơi chiến thắng..............................46

3.6.10. Màn hình hiển thị khi người chơi thua cuộc.................................47
CHƯƠNG 4: THUẬT TOÁN SỬ DỤNG TRONG GAME 2048.....................48
4.1. Thuật toán xử lý hoạt động vuốt trong game 2048................................48
4.1.1.

Thuật toán xử lý hoạt động vuốt sang trái....................................48

4.1.2.

Thuật toán xử lý hoạt động vuốt sang phải...................................50

4.1.3.

Thuật toán xử lý hoạt động vuốt lên trên......................................52



4.1.4.

Thuật toán xử lý hoạt động vuốt xuống dưới...............................54

4.2. Thuật toán sinh số ngẫu nhiên................................................................56
4.2.1.

Thuật toán kiểm tra những ô có giá trị bằng 0 thì lưu vị trí của

nó vào mảng 1 chiều...................................................................................56
4.2.2.

Sinh số ngẫu nhiên........................................................................57

4.3. Thuật toán chuyển ô có giá trị bằng 2 thành ô có giá trị bằng 4............58
4.4. Thuật toán quay lại.................................................................................59
TÀI LIỆU THAM KHẢO..................................................................................60


DANH MỤC HÌNH VÀ BẢNG
Hình 2.1.............................................................................................................9
Hình 2.2. Service.............................................................................................13
Hình 3.1. Mô tả hoạt động vuốt sang trái........................................................17
Hình 3.2. Mô tả hoạt động vuốt sang phải......................................................18
Hình 3.3. Mô tả hoạt động vuốt lên trên.........................................................18
Hình 3.4. Mô tả hoạt động vuốt lên trên.........................................................18
Hình 3.5. Mô tả hoạt động cộng dồn...............................................................19
Hình 3.6. Hiện số ngẫu nhiên trong mảng.......................................................19
Hình 3.7. Mô tả giá trị lớn nhất trong mảng....................................................20

Hình 3.8. Mô tả chức năng tính điểm..............................................................20
Hình 3.9. Mô tả chức năng đổi vị trí 2 ô.........................................................20
Hình 3.10. Mô tả chức năng quay lại..............................................................21
Hình 3.11. Mô tả chức năng chuyển 2 thành 4................................................21
Hình 3.12. Mô tả hoạt động vuốt sang trái......................................................21
Hình 3.13. Mô tả hoạt động vuốt sang phải....................................................22
Hình 3.14. Mô tả hoạt động vuốt lên trên.......................................................22
Hình 3.15. Mô tả hoạt động vuốt lên trên.......................................................22
Hình 3.16. Mô tả hoạt động cộng dồn.............................................................23
Hình 3.17. Hiện số ngẫu nhiên trong mảng.....................................................23
Hình 3.18. Mô tả giá trị lớn nhất trong mảng..................................................24
Hình 3.19. Mô tả chức năng tính điểm............................................................24
Hình 3.20. Mô tả chức năng đổi vị trí 2 ô.......................................................25
Hình 3.21. Mô tả chức năng quay lại..............................................................25
Hình 3.22. Mô tả chức năng chuyển 2 thành 4................................................26
Hình 3.23. Mô tả hoạt động vuốt sang trái......................................................26
Hình 3.24. Mô tả hoạt động vuốt sang phải....................................................27


Hình 3.25. Mô tả hoạt động vuốt lên trên.......................................................27
Hình 3.26. Mô tả hoạt động vuốt lên trên.......................................................27
Hình 3.27. Mô tả hoạt động cộng dồn.............................................................28
Hình 3.28. Hiện số ngẫu nhiên trong mảng.....................................................28
Hình 3.29. Mô tả giá trị lớn nhất trong mảng..................................................29
Hình 3.30. Mô tả chức năng tính điểm............................................................29
Hình 3.31. Mô tả chức năng đổi vị trí 2 ô.......................................................30
Hình 3.32. Mô tả chức năng quay lại..............................................................30
Hình 3.33. Mô tả chức năng chuyển 2 thành 4................................................31
Hình 3.34. Tiến trình nghiệp vụ toàn bài.........................................................33
Hình 3.35. Tiến trình nghiệp vụ nghe nhạc.....................................................34

Hình 3.36. Tiến trình nghiệp vụ chơi game.....................................................35
Hình 3.37. Sơ đồ phân rã chức năng...............................................................36
Hình 3.38. DFD mức ngữ cảnh.......................................................................37
Hình 3.39. Sơ đồ luồng dữ liệu mức đỉnh.......................................................38
Hình 3.40. Mức dưới đỉnh của quản lý nhạc...................................................38
Hình 3.44. Menu màn hình chính....................................................................40
Hình 3.45. Màn hình nghe nhạc......................................................................41
3.6.3. Màn hình chọn kích thước game........................................................42
Hình 3.46. Màn hình chọn kích thước.............................................................42
Hình 3.47. Game 2048 kích thước 3x3...........................................................43
Hình 3.48. Game 2048 kích thước 4x4...........................................................44
Hình 3.49. Game 2048 kích thước 5x5...........................................................45
Hình 3.50. Màn hình hướng dẫn chơi game....................................................45
Hình 3.51. Menu trong game..........................................................................46
Hình 3.52. Màn hình hiển thị sau khi người chơi thắng..................................46
Hình 3.53. Màn hình hiển thị sau khi người chơi thắng..................................47
Hình 4.1. Bước 1 thuật toán vuốt trái..............................................................48


Hình 4.2. Bước 2 thuật toán vuốt trái..............................................................49
Hình 4.3. Bước 1 thuật toán vuốt phải............................................................50
Hình 4.4. Bước 2 thuật toán vuốt trái..............................................................51
Hình 4.5. Bước 1 thuật toán vuốt lên trên.......................................................52
Hình 4.6. Bước 2 thuật toán vuốt lên trên.......................................................53
Hình 4.7. Bước 1 thuật toán vuốt xuống dưới.................................................54
Hình 4.8. Bước 2 thuật toán vuốt xuống dưới.................................................55
Hình 4.9. Thuật toán lưu các ô có giá trị bằng 0 vào mảng 1 chiều................56
Hình 4.10. Thuật toán sinh số ngẫu nhiên.......................................................57
4.3. Thuật toán chuyển ô có giá trị bằng 2 thành ô có giá trị bằng 4............58
Hình 4.11. Sơ đồ thuật toán chuyển 2 thành 4................................................58

Hình 4.12. Thuật toán mảng lùi

Hình 4.13. Sơ đồ thuật toán quay lại........59

Bảng 2.2. Các phương thức trong MediaPayer...................................................14
Bảng 3.1. Rà soát việc đáp ứng các yêu cầu.......................................................39


1

CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI
1.1. Lý do chọn đề tài
1.1.1. Game 2048
Trên quan điểm khoa học thì việc chơi game sẽ mang lại nhiều
lợi ích hơn hẳn cách mà các phụ huynh nghĩ. Dĩ nhiên nếu biết lựa chọn
các game hợp lý và sắp xếp thời gian chơi phù hợp thì ngoài tác dụng
giải tỏa căng thẳng, những lợi ích của game còn nhiều hơn thế.
- Phản xạ nhanh hơn, tay và mắt phối hợp tốt hơn
- Cải thiện tư duy, rất tốt cho người đi làm hay lên kế hoạch, chiến lược
- Bạn sẽ kiên trì hơn, biết cách phối hợp trong làm việc nhóm
- Điều trị những căn bệnh mãn tính
- Chơi game giúp giảm đau
- Tốt cho mắt
2048 là game với cách chơi vô cùng đơn giản: Bạn có một bảng n x n ô
số, bạn chỉ việc di chuyến các ô số sao cho hai ô số cùng giá trị được nhập
vào nhau, mỗi lần di chuyến là có thêm ô số mới xuất hiện. Các giá trị số là 2,
4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048. Và con số 2048 chính là đích đến
của trò chơi bởi vì nó khá khó. Mặc dù vậy, bạn vẫn có thế tiếp tục game cho
đến 4096, 8192, 16348. Như vậy, 2048 là một game điểm, không có điểm
dừng.

2048 yêu cầu sự thông minh, nhanh nhẹn, sử dụng trí óc và bộ não của
người chơi. Phù hợp với mọi lứa tuổi.


2

1.1.2. Nghe nhạc
Nghiên cứu gần đây cho thấy rằng việc nghe nhạc giúp chúng ta luôn
cảm thấy hạnh phúc và cải thiện sức khỏe thể chất một cách đáng kinh ngạc.
Nếu được học hoặc đào tạo về âm nhạc không chỉ giúp nâng cao chỉ số IQ mà
nó còn mang lại nhiều lợi ích khi chúng ta về già nữa. Dưới đây là 15 lợi ích
tuyệt vời đã được khoa học chứng minh của việc nghe nhạc có thể bạn chưa
biết.
- Âm nhạc làm bạn cảm thấy hạnh phúc hơn
- Âm nhạc giúp bạn có thêm nhiều động lực
- Âm nhạc làm giảm căng thẳng và cải thiện sức khỏe
Để luôn giữ bình tĩnh và giải tỏa căng thẳng sau một ngày làm việc vất
vả, hãy bật nhạc lên, hát theo và rung chân theo từng điệu nhạc để loại bỏ tối
đa những bệnh có thể mắc phải.
-

Âm nhạc giúp bạn ngủ ngon hơn
Âm nhạc giúp giảm nguy cơ mắc bệnh trầm cảm
Âm nhạc giúp tăng khả năng học tập và ghi nhớ
Âm nhạc làm giảm đau
Âm nhạc giúp cải thiện trí nhớ của các bệnh nhân Alzheimer
Âm nhạc giúp các bệnh nhân đột quỵ hồi phục
Âm nhạc làm tăng tính sáng tạo trong lời nói
Âm nhạc giúp não bộ khỏe mạnh dù đã lớn tuổi
Vì những lợi ích to lớn của nghe nhạc và chơi game mà em đã nêu trên


nên em quyết định làm một ứng dụng bao gồm chức năng nghe nhạc và chơi
game đó là ứng dụng giải trí.
1.2. Mục tiêu đề tài
Nghiên cứu tìm hiểu cách làm việc và lập trình trên nền tảng Android.
Hiểu về nguyên lý hoạt động của của Android, các thành phần của hệ
thống cũng như của một ứng dụng thực thi trên nền android.


3

Nghiên cứu sử dụng ngôn ngữ Java và các thư viện trong Android để
lập trình Game và phát nhạc.
Xây dựng phần mềm cài được trên thiết bị thật Android:
- Chơi game và nghe nhạc không phát sinh lỗi
- Hình ảnh, hiệu ứng rõ nét
- Lưu được điểm kỉ lục
- Hiện thị danh sách bài hát từ bộ nhớ trong
1.3. Phạm vi đề tài
Đề tài chỉ tập trung xây dựng ứng dụng game kết hợp nghe nhạc offline
trên điện thoại cá nhân.
1.4. Phân tích bài toán
1.4.1. Mục nghe nhạc
Những bài hát được tải về bộ nhớ máy sẽ được hiển thị trên ứng dụng
với trình phát nhạc tương tự với trình mp3 hiện có tạo cảm giác thân quen và sử
dụng một cách dễ dàng. Những bài hát yêu thích có thể được phát ngẫu nhiên 1
bài hát bất kì trong danh sách hoặc lặp đi lặp lại bài hát mà bạn chọn.
1.4.2. Mục chơi game
2048 chơi trên một lưới vuông n x n. Mỗi lần di chuyển là một lượt,
người chơi sử dụng các phím mũi tên và các khối vuông sẽ trượt theo một

trong bốn hướng tương ứng (lên, xuống, trái, phải). Mỗi lượt có một khối có
giá trị 1, 2 hoặc 4 sẽ xuất hiện ngẫu nhiên ở một ô trống trên lưới. Các khối
vuông trượt theo hướng chỉ định cho đến khi chạm đến biên của lưới hoặc
chạm vào khối vuông khác. Nếu hai khối vuông có cùng giá trị chạm vào
nhau, chúng sẽ kết hợp lại thành một khối vuông có giá trị bằng tổng giá trị


4

hai khối vuông đó (giá trị gấp đôi). Khối vuông kết quả không thể kết hợp với
khối vuông khác một lần nữa trong một lượt di chuyển. Để dễ nhận biết thì
các khối vuông giá trị khác nhau sẽ có màu sắc khác nhau.
Bảng điểm ở góc trên bên phải cho biết điểm của người chơi. Ban đầu
điểm bằng 0. Khi hai khối vuông kết hợp thì người chơi sẽ tăng điểm là giá trị
khối vuông mới. Bên cạnh điểm hiện tại là ô có giá trị lớn nhất mà người chơi
đang đạt được. Cuối cùng là kỉ lục điểm cao nhất người chơi từng đạt được.
Khi người chơi tạo được ô vuông có giá trị 2048 thì thắng cuộc. Lúc này
người chơi có thể lựa chọn tiếp tục chơi để đạt các giá trị cao hơn 2048. Khi
không còn nước đi hợp lệ (không còn ô trống và các ô kề nhau đều khác giá
trị) thì trò chơi kết thúc.


5

CHƯƠNG 2. GIỚI THIỆU CÔNG NGHỆ SỬ DỤNG
VÀ NỀN TẢNG PHÁT TRIỂN
2.1. Hệ điều hành android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế
dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông
minh và máy tính bảng.

Android có mã nguồn mở và Google phát hành mã nguồn theo
Giấy phép Apache. Chính mã nguồn mở cùng với một giấy phép không
có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động
và các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android
một cách tự do. Ngoài ra, Android còn có một cộng đồng lập trình viên
đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị,
bằng một loại ngôn ngữ lập trình Java có sửa đổi.
Android chiếm 75% thị phần điện thoại thông minh trên toàn thế
giới vào thời điểm quý 3 năm 2012, với tổng cộng 500 triệu thiết bị đã
được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày. Sự thành công của
hệ điều hành cũng khiến nó trở thành mục tiêu trong các vụ kiện liên
quan đến bằng phát minh, góp mặt trong cái gọi là "cuộc chiến điện thoại
thông minh" giữa các công ty công nghệ.
Nền tảng Android tích hợp nhiều tính năng nổi bật: Android là một
hệ điều hành nhân Linux, đảm bảo sự tương tác với các phần cứng, quản
lý bộ nhớ, điều khiển các tiến trình tối ưu cho các thiết bị di động.
 Bộ ứng dụng khung cho phép sử dụng lại và thay thế các

thành phần riêng lẻ.


6

 Máy ảo Dalvik được tối ưu cho các thiết bị di động, chạy các

ứng dụng lập trình trên ngôn ngữ Java.
 Các thư viện cho phát triển ứng dụng mã nguồn mở bao gồm

SQLite, WebKit, OpenGL và trình quản lý đa phương tiện.
 Hỗ trợ các chuẩn đa phương tiện phổ biến, thoại trên nền


GSM, Bluetooth EDGE, 3G và Wifi
 Hỗ trợ Camera, GPS, la bàn, máy đo gia tốc…
 Bộ phát triển ứng dụng SDK đầy đủ gồm thiết bị giả lập, công

cụ sửa lỗi, tích hợp với Eclipse SDK.
Android cung cấp một tập hợp đầy đủ các phần mềm cho thiết bị di
động bao gồm: hệ điều hành, các khung ứng dụng và các ứng dụng cơ bản.
2.1.1. Đặc điểm
 Tính mở

Android được xây dựng từ dưới đi lên cho phép người phát triển
tạo các ứng dụng di động với đầy đủ các điểm mạnh của các thiết bị cầm
tay hiện có. Android hoàn toàn mở, một ứng dụng có thể gọi tới bất kể
một chức năng lõi của điện thoại như tạo cuộc gọi, gửi tin nhắn hay sử
dụng máy ảnh,... Android được xây dựng trên nhân Linux mở. Thêm nữa,
nó sử dụng một máy ảo mà đã được tối ưu hóa bộ nhớ và phần cứng với
môi trường di động. Android là một mã nguồn mở, nó có thể được mở
rộng để kết hợp tự do giữa các công nghệ nổi trội.
 Tính ngang hàng của các ứng dụng


7

Với Android, không có sự khác nhau giữa các ứng dụng điện thoại
cơ bản với ứng dụng của bên thứ ba. Chúng được xây dựng để truy cập
như nhau tới một loạt các ứng dụng và dịch vụ của điện thoại.


Dễ xây dựng ứng dụng


Android cung cấp bộ thư viện giao diện lập trình ứng dụng đồ sộ
và các công cụ để viết các ứng dụng phức tạp.
2.1.2. Kiến trúc và các thành phần
2.1.2.1. Kiến trúc tổng quát
Android bao gồm bốn thành phần sau:
 Hệ điều hành.
 Thư viện và các giao diện lập trình ứng dụng.
 Khung ứng dụng.
 Ứng dụng.

2.1.2.2. Các thành phần của một ứng dụng Android
Một ứng dụng trên Android được cấu thành từ bốn thành phần cơ
bản sau:
 Activities.
 Services.
 Broadcast Receivers.
 Content Provider.

Các thành phần này không nhất thiết phải có mặt đầy đủ trong ứng dụng.


8

2.2.

Các công nghệ sử dụng
2.2.1. Ngôn ngữ java

Ngôn ngữ lập trình Java ban đầu được phát triển bởi Sun

Microsystems do James Gosling khởi xướng và phát hành vào năm 1995
(Java 1.0 [J2SE]). Tính đến thời điểm này (tháng 2/2015) phiên bản mới
nhất của Java Standard Edition (JSE) là 8. Với ưu thế về đa nền tảng
(multi platform) Java càng lúc càng được ứng dụng rộng rãi trên nhiều
thiết bị từ máy tính đến mobile và nhiều thiết bị phần cứng khác...
Java là ngôn ngữ lập trình hướng đối tượng nên nó cũng có 4 đặc
điểm chung của các ngôn ngữ hướng đối tượng
Tính trừu tượng (Abstraction): là tiến trình xác định và nhóm các
thuộc tính, các hành động liên quan đến một thực thể đặc thù, xét trong mối
tương quan với ứng dụng đang phát triển.
Tính đa hình (Polymorphism): cho phép một phương thức có các tác
động khác nhau trên nhiều loại đối tượng khác nhau. Với tính đa hình, nếu
cùng một phương thức ứng dụng cho các đối tượng thuộc các lớp khác nhau
thì nó đưa đến những kết quả khác nhau. Bản chất của sự việc chính là
phương thức này bao gồm cùng một số lượng các tham số.
Tính kế thừa (Inheritance): Điều này cho phép các đối tượng chia sẻ
hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại.
Tính đóng gói (Encapsulation): là tiến trình che giấu việc thực thi
những chi tiết của một đối tượng đối với người sử dụng đối tượng ấy.
Bên cạnh đó Java còn có một số đặc tính khác:
Độc lập nền (Write Once, Run Anywhere):


9

Không giống như nhiều ngôn ngữ lập trình khác như C và C ++, khi Java
được biên dịch, nó không được biên dịch sang mã máy cụ thể, mà thay vào
đó là mã byte code chạy trên máy ảo Java (JVM). Điều này đồng nghĩa với
việc bất cứ thiết bị nào có cài đặt JVM sẽ có thể thực thi được các chương
trình Java.

Đơn giản: học Java thật sự dễ hơn nhiều so với C/C++, nếu bạn đã
quen với các ngôn ngữ lập trình hướng đối tượng thì việc học Java sẽ dễ dàng
hơn. Java trở nên đơn giản hơn so với C/C++ do đã loại bỏ tính đa kế thừa và
phép toán con trỏ từ C/C++.
Bảo mật: Java hỗ trợ bảo mật rất tốt bởi các thuật toán mã hóa như mã
hóa một chiều (one way hashing) hoặc mã hóa công cộng (public key)...
Đa luồng: Với tính năng đa luồng Java có thể viết chương trình có thể
thực thi nhiều task cùng một lúc. Tính năng này thường được xử dụng rất
nhiều trong lập trình game.
Hiệu suất cao nhờ vào trình thu gom rác (garbage collection), giải
phóng bộ nhớ đối với các đối tượng không được dùng đến.
Linh hoạt: Java được xem là linh hoạt hơn C/C ++ vì nó được thiết kế
để thích ứng với nhiều môi trường phát triển.

Hình 2.1.


10

Java được sử dụng để làm gì?


Viết ứng dụng web (J2EE): Java thường được sử dụng để xây dựng các

hệ thống web lớn đòi hỏi độ bảo mật cao, số lượng người dùng lớn như ngân
hàng, phần mềm quản lý bệnh viện, CRM, HRM.... Đối với các website nhỏ
thông thường rất ít viết bằng Java.


Viết ứng dụng mobile (J2ME): Trước đây nền tảng J2ME thường được


sử dụng để viết game và app cho di động feature phone (file .jar) và giờ đây
khi smartphone Android lên ngôi Java lại tiếp tục được sử dụng để viết app và
game cho nền tảng Android (file .apk).
2.2.2. Service
 Định nghĩa service
Một service là một thành phần của ứng dụng, thể hiện mong muốn ứng
dụng thực hiện các hành động trong khi không tương tác với người dung hoặc
cung cấp chức năng cho các ứng dụng khác sử dụng. Nói một cách đơn giản,
service là các tác vụ (task) chạy ngầm dưới hệ thống nhằm thực hiện một
nhiệm vụ nào đó. Mỗi class Service phải chứa thẻ <service> được khai báo
trong file AndroidMainfext.xml. Service có thể được bắt đầu bởi
Context.startService() và Context.bindservice()
Cũng như các đối tượng của ứng dụng khác, service chạy trên luồng
(Thread) của tiến trình chính. Có nghĩa là nếu service của bạn dự định chạy
các hành vi có cường độ lớn hoặc các hành vi có thể gây nghẽn mạch, nó sẽ tự
sinh ra luồng (Thread) của chính nó để làm thực hiện các tác vụ được đặc tả
trong Service.
 Cần lưu ý:


11

Service không phải là một tiến trình độc lập. Đối tượng service không
chạy trên tiến trình (process) của riêng nó (trừ khi có một yêu cầu đặc biệt),
Service chạy trên tiến trình của chương trình.
Service không phải là một luồng (thread).
Service có chứa 2 đặc trưng cơ bản sau:
Là một chức năng để ứng dụng thông báo với hệ thống về việc mà nó
muốn thực hiện ở phía dưới nền (ngay cả khi người dùng không tương tác

trực tiếp tới ứng dụng). Điều này tương ứng với việc gọi phương thức
Context.startservice(), nó sẽ yêu cầu hệ thống lên lịch cho service để chạy cho
đến khi bị chính service hay người nào đó dừng nó lại.
Là một chức năng cho phép ứng dụng để cung cấp các chức năng của
nó cho các ứng dụng khác. Điều đó tương ứng với việc gọi
Context.bindService(), cho phép một long-standing connection được tạo ra để
service có thể tương tác với nó.
Khi một Service được tạo ra, việc hệ thống cần làm là tạo ra thành phần
và gọi hàm onCreate() và bất kỳ lệnh callback thích hợp nào trên luồng chính.
Nó phụ thuộc vào Service thi hành hành vi thích hợp nào, chẳng hạn tạo
luồng thứ hai để thực hiện tiến trình.
 Vòng đời của 1 Service
Có 2 lý do để một service được chạy bởi hệ thống. Bằng cách gọi
phương thức Context.startService() và Context.bindService(). Nếu người
dùng gọi phương thức Context. startService() thì hệ thống sẽ nhận về một đối
tượng service (tạo mới nó và gọi hàm onCreate() nếu cần thiết) và sau đó lại
gọi phương thức onStartCommand (Intent, int, int) với các biến được cung
cấp bởi client . Service mới được tạo ra này sẽ chạy cho tới khi lệnh gọi
phương thức Context.stopService() hoặc phương thức stopSelf(). Dù cho một


12

service có được start bao nhiêu lần đi nữa thì nó sẽ bị tắt ngay khi phương
thức Context.stopService() hoặc phương thức stopSelf() được gọi. Service có
thể dùng phương thức stopSelf(int) để đảm bảo rằng service sẽ không được tắt
cho đến khi Intent đã khởi tạo nó được xử lý.
Bảng 2.1. Mô tả trạng thái của service
Trạng thái


Started
(Được khởi động)

Bound
(Ràng buộc)

Mô tả
Một dịch vụ được gọi là started (được khởi động)
khi một thành phần ứng dụng, chẳng hạn
như Activity khởi
động

bằng
cách
gọi startService(). Một khi được gọi, dịch vụ này có
thể chạy ở chế độ nền vô thời hạn, thậm chí cả khi
thành phần đã khởi động nó bị phá hủy.
Dịch vụ này còn được gọi là dịch vụ không bị giàng
buộc (Un Bounded Service).
Một dịch vụ được giàng buộc (bound) khi một thành
phần ứng dụng giàng buộc nó bằng cách
gọi bindService().
Một dịch vụ ràng buộc cung cấp một giao
diện client-server cho phép các thành phần tương
tác với dịch vụ, gửi các yêu cầu, nhận kết quả, và
thậm chí làm như vậy xuyên qua nhiều tiến trình với
Interprocess communication (IPC) (Truyền thông
nhiều tiến trình).

Một dịch vụ có phương thức gọi lại chu kỳ vòng đời của nó (life cycle

callback methods) mà bạn có thực hiện (implement) để theo dõi những thay
đổi trong trạng thái của dịch vụ và bạn có thể thực hiện công việc ở giai đoạn
thích hợp. Sơ đồ dưới đây về bên trái cho thấy vòng đời khi dịch vụ được tạo
ra với startService(), sơ đồ bên phải cho thấy vòng đời của dịch vụ được tạo
ra bởibindService().


13

Hình 2.2. Service
Dựa theo hình trên, 1 service được bắt đầu bởi phương thức
startService() là service dùng để thực hiện các tác vụ ngầm dưới nền, service
được bắt đầu bởi phương thức bindService() là service được dùng để cung cấp
các chức năng cho các chương trình khác.


14

2.2.3.


Giới thiệu MediaPlayer trong Android
Lớp MediaPlayer: Lớp android.media.MediaPlayer là được sử
dụng để điều kiển những tâp tin như audio hoặc video.



Phương thức của lớp MediaPlayer: Có rất nhiều phương thức của
lớp MediaPlayer. Một số lớp thường được hay sử dụng là.
Bảng 2.2. Các phương thức trong MediaPayer


Phương thức
Public void
setDataSource(String path)
public void prepare()
public void start()
public void stop()
public void pause()
public boolean isPlaying()

Mô tả
bộ nguồn dữ liệu (đường dẫn file hoặc http url)
để sử dụng.
phát lại đồng bộ.
bắt đầu hoặc tiếp tục lại phát lại.
dừng phát lại.
tạm dừng phát lại.
kiểm tra nếu máy nghe nhạc phương tiện truyền
thông đang phát.
public void seekTo(int millis)
tìm cách thời gian quy định trong mili giây.
public void setLooping(boolean đặt máy trong vòng lặp hoặc không lặp.
looping)
public boolean isLooping()
kiểm tra nếu người chơi được lặp hoặc không
lặp.
public void selectTrack(int chọn một ca khúc cho các chỉ số xác định.
index)
public int getCurrentPosition()
trả về vị trí phát hiện.

public int getDuration()
trả về thời gian của tập tin
public void setVolume (float đặt âm lượng trên máy nghe nhạc này.
leftVolume,float rightVolume)
2.2.4. Android SharedPreference
 Giới thiệu
SharedPreference là một lớp cho phép lưu trữ và nhận dữ liệu theo keyvalue với các kiểu dữ liệu nguyên thuỷ như integer, string, boolean, float,
long.


15

Preference gần giống với Bundle nhưng nó có thể lưu trữ dữ liệu còn
Bundle thì không
 Lấy một ShareReference

 Lấy một SharedPreference mặc định trong ứng dụng bằng cách gọi
hàm
SharedPreference sharedPreference =
PreferenceManager.getDefaultSharedPreference(this);
 Tạo một SharedPreference
SharedPreference shared =
getSharedPreference(“MySharedPreference”, MODE_PRIVATE);
 Lấy một SharedPreference mặc định của một Activity
SharedPreference shared = getPreferences(MODE_PRIVATE);
 SharedPreferrence sẽ được lưu
ở data/data/packageName/shared_prefs/filename
 Cập nhật ShareReference
 Để cập nhật SharedPreference, ta cần sử dụng Editor để thêm, sửa,
xoá nội dung của preferrence.

 Các hàm thêm/sửa và lấy ra nội dung tương ứng là
putBoolean()/getBoolean()


×