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

Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

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.4 MB, 71 trang )

Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DUY TÂN

LÊ XUÂN HUY - 152122479

Tên đề tài

TÌM HIỂU THƯ VIỆN OPENGLES VÀ XÂY DỰNG
GAME LINE3D TRÊN ANDROID
GIẢNG VIÊN HƯỚNG DẪN
TS. PHẠM ANH PHƯƠNG

NIÊN KHÓA 2009 - 2013

Lê Xuân Huy – 152122479


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

LỜI CẢM ƠN
Để hoàn thành được đề tài này, khơng những cần phải có sự nỗ lực hết mình của
bản thân, mà còn cần sự giúp đỡ của thầy cơ, gia đình, bạn bè. Dù trực tiếp, hay gián tiếp
hay dù một lời động viên cũng đủ để tiếp thêm nguồn sức mạnh về tinh thần lẫn vật chất.
Chính vì thế, em rất biết ơn đến tất cả những người đã giúp em hoàn thành tốt đề tài này.
Trước tiên, em xin chân thành cám ơn thầy TS. Phạm Anh Phương đã tận tình
hướng dẫn, cung cấp những kiến thức quý báu và giúp đỡ em trong những lúc khó khăn.
Em cũng xin cảm ơn đến tất cả những thầy cô đã từng giảng dạy em, dù không
hướng dẫn trực tiếp trong đề tài này, nhưng những kiến thức mà thầy cô đã truyền đạt cho
em cũng vô cùng quan trọng, nếu khơng có nền tảng kiến thức đó thì em cũng khó mà hồn


thiện được đề tài.
Bên cạnh đó, tơi cũng khơng qn những người bạn đã cùng kề vai sát cánh, cũng
vô cùng tận tâm hướng dẫn và góp ý cho tơi, chỉ cần mỗi người gợi ý 1 chút thì tơi đã có 1
khối kiến thức khổng lồ.
Trong quá trình thực hiện đề tài, mặc dù đã rất cố gắng nhưng với sự hạn chế về
kiến thức và thời gian, nên chắc chắn sẽ không tránh khỏi sai sót. Vì vậy, em kính mong
nhận được sự cảm thơng và những ý kiến đóng góp của q thầy cô.

Lê Xuân Huy – 152122479


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

LỜI CAM ĐOAN
Em xin cam đoan :
a.

Những nội dung trong luận văn này là do em thực hiện dưới sự hướng dẫn trực tiếp
của thầy TS. Phạm Anh Phương.

b.

Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng và trung thực tên
tác giả, tên cơng trình, thời gian, địa điểm công bố.

c.

Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em xin chịu hoàn
toàn trách nhiệm.


Lê Xuân Huy – 152122479


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

MỤC LỤC
LỜI CẢM ƠN ...........................................................................................................
LỜI CAM ĐOAN ......................................................................................................
MỞ ĐẦU ..................................................................................................................
CHƯƠNG I: TỔNG QUAN VỀ ỨNG DỤNG TRÊN ANDROID .......................... 1
I. TỔNG QUAN VỀ ANDROID ....................................................................... 1
1. Lược sử về Android ..................................................................................... 1
2. Nền tảng Android ........................................................................................ 2
3. Kiến trúc ứng dụng Android ........................................................................ 3
3.1 Máy ảo Dalvik ....................................................................................... 3
3.2 Các thành phần của một ứng dụng Android ............................................ 4
4. Vịng đời của ứng dụng Android .................................................................. 5
5. Các cơng cụ để tạo một ứng dụng Android .................................................. 5
5.1 Eclipse IDE ............................................................................................ 6
5.2 Android SDK ......................................................................................... 6
5.3 Cài đặt công cụ ...................................................................................... 7
6. Thiết bị Android ảo (Android Virtual Device - AVD) ................................. 7
7. Android Project ........................................................................................... 9
7.1 Tạo một Android Project mới ................................................................. 9
7.2 Cấu trúc một Project ............................................................................ 10
II. CÁC THÀNH PHẦN CƠ BẢN CỦA MỘT ỨNG DỤNG TRÊN ANDROID
.......................................................................................................................... 10
1. Hoạt động (Activity) .................................................................................. 10
1.1 Tạo một Activity .................................................................................. 10
1.2 Vòng đời của Activity .......................................................................... 12

1.3 Khởi động một Activity ....................................................................... 12
1.4 Liên lạc giữa 2 Activity ........................................................................ 13
2. Trình thu phát (BroadcastReceiver) ........................................................... 13
2.1 Chu kỳ sống ......................................................................................... 13
2.2 Một số broadcast thông dụng ............................................................... 14
III. THIẾT KẾ GIAO DIỆN ............................................................................. 14
1. Một số lớp hỗ trợ thiết kế giao diện cho ứng dụng Android ....................... 14
2. Android Widget Toolbox ........................................................................... 15
3. Các kiểu Layout ........................................................................................ 16
4. Tạo các View ............................................................................................. 16
4.1 Chỉnh sửa các View có sẵn ................................................................... 16
4.2 Tạo các điều khiển ghép (compound control) ....................................... 16
4.3 Tạo các Control tùy chỉnh .................................................................... 17
5. Tạo giao diện Activity với các View .......................................................... 17
CHƯƠNG II: ĐỒ HỌA 3D VỚI OPENGLES ..................................................... 18
I. GIỚI THIỆU VỀ OPENGLES ....................................................................... 18
Lê Xuân Huy – 152122479


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

II. CÁC TÍNH NĂNG CỦA OPENGLES ......................................................... 18
1. Phép dựng (Rendering) .............................................................................. 18
2. Phép chiếu trực giao (Orthographic Projection) ......................................... 19
3. Phép chiếu phối cảnh (Perspective Projection) ........................................... 21
4. Chiều sâu (Depth) ...................................................................................... 24
5. Màu sắc và tơ bóng (Color and Shading) ................................................... 25
6. Bộ lọc mặt sau (Backface Culling) ............................................................ 26
7. Ánh sáng (Lighting) .................................................................................. 27
8. Dán chất liệu (Texture Mapping) ............................................................... 28

9. Pha trộn màu (Blending) ............................................................................ 29
10. Hiệu ứng sương mù (Fog) ........................................................................ 30
CHƯƠNG III: XÂY DỰNG GAME LINE3D ........................................................ 32
I. GIỚI THIỆU ................................................................................................. 32
II. PHÂN TÍCH ................................................................................................ 32
III. THIẾT KẾ HỆ THỐNG .............................................................................. 34
1. Sơ đồ Use case .......................................................................................... 34
1.1 Đặc tả use case XoayBanCo .............................................................. 35
1.2 Đặc tả use case ChonVienBi ............................................................ 35
2. Sơ đồ lớp ................................................................................................... 36
2.1 Các lớp Activity ................................................................................... 36
2.2 Các lớp BUS ....................................................................................... 37
IV. THIẾT KẾ GIAO DIỆN ............................................................................. 37
1. Danh sách các màn hình ............................................................................ 37
2. Mơ tả chi tiết mỗi màn hình ....................................................................... 38
2.1MenuScreen .......................................................................................... 38
2.2 Màn hình PlayScreen ........................................................................... 39
V. THIẾT KẾ GIẢI THUẬT ............................................................................ 39
1. Phương thức giao tiếp giữa các Activity .................................................... 39
2. Phương thức quay trục tọa độ .................................................................... 39
VI. THIẾT KẾ PHẦN MỀM ............................................................................ 40
1. GLSurfaceView ........................................................................................ 40
2. Thiết kế bàn cờ .......................................................................................... 43
2.1 Thiết kế đối tượng viên gạch ................................................................ 43
2.2 Tô màu cho đối tượng viên gạch .......................................................... 48
2.3 Bàn cờ .................................................................................................. 50
2.4 Thiết kế các viên bi ............................................................................. 54
KẾT LUẬN ............................................................................................................
1. Các kết quả đạt được ..........................................................................................
2. Hạn chế của khóa luận .......................................................................................

3. Hướng phát triển ................................................................................................

TÀI LIỆU THAM KHẢO ................................................................................

Lê Xuân Huy – 152122479


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

Danh mục hình vẽ:
Hình 1 - 1: Cấu trúc Android ................................................................................... 3
Hình 1 - 2: Máy ảo Dalvik ....................................................................................... 4
Hình 1 - 3: Tạo một AVD ........................................................................................ 8
Hình 1 - 4: Tạo một Android Project ....................................................................... 9
Hình 1 - 5: Vịng đời của Activity.......................................................................... 12
Hình 1 - 6: Quan hệ giữa các thành phần trên ........................................................ 15
Hình 2 - 1: Phép chiếu trực giao ............................................................................ 19
Hình 2 - 2: Kết quả phép chiếu trực giao ............................................................... 21
Hình 2 - 3: Phép chiếu phối cảnh ........................................................................... 22
Hình 2 - 4: Mơ tả góc nhìn camera ........................................................................ 23
Hình 2 - 5: Kết quả phép chiếu phối cảnh .............................................................. 23
Hình 2 - 6: Demo chiều sâu ................................................................................... 25
Hình 2 - 7: Kết quả màu sắc và tơ bóng ................................................................. 26
Hình 2 - 8: Kết quả ánh sáng ................................................................................. 27
Hình 2 - 9: Dán chất liệu........................................................................................ 29
Hình 2 - 10: Pha màu (GL_ONE, GL_ZERO) ....................................................... 30
Hình 2 - 11:Hiệu ứng sương mù ............................................................................ 31
Hình 3 - 1: Sơ đồ phân tích .................................................................................... 33
Hình 3 - 2: Sơ đồ Use case..................................................................................... 34
Hình 3 - 3: Các lớp Activity .................................................................................. 36

Hình 3 - 4: Các lớp BUS........................................................................................ 37
Hình 3 - 5: Màn hình lựa chọn chính ..................................................................... 38
Hình 3 - 6: Màn hình chơi game ............................................................................ 39
Hình 3 - 7: Khối lập phương OpenGL ................................................................... 44
Hình 3 - 8: Vẽ các tam giác trong khối lập phương ................................................ 45
Hình 3 - 9: Vẽ viên gạch màu trắng ....................................................................... 48
Hình 3 - 10: Mơ hình màu RGB ............................................................................ 48
Hình 3 - 11: Viên gạch hồn chỉnh ........................................................................ 49
Hình 3 - 12: Dịch chuyển viên gạch....................................................................... 50
Hình 3 - 13: Quản lý viên gạch bằng ma trận ......................................................... 51
Hình 3 - 14: Bàn cờ ............................................................................................... 53
Hình 3 - 15: Ghép nhiều tam giác thành hình cầu .................................................. 54
Hình 3 - 16: Hệ tọa độ cầu ..................................................................................... 55
Hình 3 - 17: Thứ tự vẽ các điểm trong hình cầu. .................................................... 55
Hình 3 - 18: Viên bi tại tâm bàn cờ. ....................................................................... 57
Hình 3 - 19: Hồn chỉnh điều khiển các viên bi ..................................................... 58
Hình 3 - 20: Xử lý ăn bi trong ma trận theo hàng ngang, hàng dọc ........................ 59
Hình 3 - 21: Xử lý ăn bi trong ma trận theo đường chéo 1 ..................................... 60
Hình 3 - 22: Xử lý ăn bi trong ma trận theo đường chéo 2 ..................................... 60

Lê Xuân Huy – 152122479


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

MỞ ĐẦU
1. Cơ sở khoa học và thực tiễn của đề tài
Điện thoại di động đã, đang và sẽ là một công cụ quan trọng không thể thiếu
trong thời đại thông tin hiện nay. Các ứng dụng cho điện thoại di động đang trở nên
quan trọng hơn bao giờ hết, đó là một thành phần khơng thể thiếu ln đi song song

với các thiết bị thông minh. Mac OSX (iphone), Android, Symbian, Windows
Mobile và Blackbery hiện là những gương mặt chính cạnh tranh nhau trên thị
trường điện thoại thơng minh và tất cả đều có những điểm thu hút hứa hẹn riêng
dành cho các nhà phát triển. Nhưng ở một thị trường đặc thù như Việt Nam, có
nhiều điều đúng ở các nước trên thế giới nhưng không thể áp dụng ở nước ta. Chọn
Android là giải pháp tối ưu trong tương lai.
Android dễ dàng tiếp cận, làm quen. Ngơn ngữ lập trình ứng dụng cho
Android dựa trên nền tảng Java và đây cũng là ngôn ngữ phổ biến trong giới lập
trình Việt Nam, giúp họ có những bước chuyển đổi dễ dàng hơn. Và một điều các
nhà phát triển ứng dụng thừa nhận là Android dễ tiếp cận. Một người chỉ cần có một
ít kiến thức cơ bản là có thể làm quen Android trong vài ngày và bắt đầu viết các
ứng dụng có tính thực tế chỉ sau một tuần.
Cho đến hiện nay, Android là hệ điều hành đầu tiên cho phép tải toàn bộ mã
nguồn của Android dựa trên giấy phép Apache. Do đó, các nhà phát triển có thể
xem cách thiết kế hệ thống của nền tảng này. Google hướng dẫn rất chi tiết cách
download mã nguồn tại . Sau khi tìm hiểu, họ có thể mua
các bo mạch và cho phép Android chạy trên các bo mạch tự tạo ấy.
Android khơng chỉ gói gọn là nền tảng dành cho diện thoại di động mà hiện
tại, Android cũng đã xuất hiện trên nhiều thiết bị khác như máy nghe nhạc, thiết bị
đọc sách điện tử, đầu thu kĩ thuật số,… Điều này giúp các nhà phát triển có được thị
trường rộng lớn hơn, đưa ứng dụng của mình đến tay được nhiều người dùng hơn.
Rõ ràng, điều này mang lại rất nhiều lợi ích về mặt kinh tế.
Nhân lực Android hiện nay đang là một trong những mục tiêu nóng trên thị
trường tuyển dụng. Theo thống kê, đến nay đã có hơn 15 cơng ty tại Việt Nam đang
có nhu cầu nhân lực về mảng này với mức đầu tư khá cao. Mảng việc cho Android

Lê Xuân Huy – 152122479


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android


ở các cơng ty khá nhiều vì bao gồm cả gia công phần mềm, làm sản phẩm hoặc làm
porting (đưa Android lên các phần cứng khác nhau).
Nhận thấy nhu cầu của con người trong lĩnh vực giải trí trên di động ngày
càng cao và Android chính là nền tảng ứng dụng có thể phát triển trong tương lai.
Chính vì vậy em chọn đề tài “Tìm hiểu thư viện OpenGLES và xây dựng game
Line3D trên Android” nhằm hiểu rõ về các kĩ thuật lập trình trên thiết bị di động,
đặc biệt là các kĩ thuật xây dựng đồ họa 3D trên di động để có thể tạo nên một game
3D hồn chỉnh.
2. Mục tiêu của đề tài
-

Tìm hiểu về thư viện OpenGLES và các công cụ liên quan.

-

Xây dựng game Line3D

3. Nội dung nghiên cứu
Sử dụng các công cụ trong OpenGLES để phát triển các ứng dụng 3D trên hệ
điều hành Android.
4. Đối tượng và phạm vi nghiên cứu
 Đối tượng nghiên cứu:
-

Thư viện OpenGLES trên Android.

 Phạm vi nghiên cứu:
-


HĐH Android và mơi trường phát triển ứng dụng.

- Tìm hiểu thư viện OpenGLES.
5. Phương pháp nghiên cứu
-

Nghiên cứu đọc hiểu tài liệu.

-

Cài đặt thực nghiệm.

Lê Xuân Huy – 152122479


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

CHƯƠNG I: TỔNG QUAN VỀ ỨNG DỤNG
TRÊN ANDROID

I. TỔNG QUAN VỀ ANDROID
1. Lược sử về Android
Android được phát hành phiên bản đầu tiên 11/11/2007, là một môi trường
hệ điều hành hoàn chỉnh dựa trên hệ điều hành nhân Linux V2.6. Lúc đầu, đích triển
khai đối với Android là lĩnh vực điện thoại di động, gồm các loại điện thoại thông
minh và các loại thiết bị điện thoại kiểu gập chi phí thấp. Tuy nhiên, phạm vi đầy đủ
các dịch vụ điện toán của Android và sự hỗ trợ chức năng phong phú của nó có
tiềm năng mở rộng ra ngồi thị trường điện thoại di động. Android cịn có thể hữu
ích đối với các nền tảng và ứng dụng khác.
Nền Android là sản phẩm của Open Handset Alliance (Liên minh thiết bị

cầm tay mở), một tập đoàn các tổ chức cùng hợp tác với nhau để xây dựng nên một
loại điện thoại di động tốt hơn. Tập đoàn do Google đứng đầu này gồm các nhà vận
hành (điện thoại) di động, các nhà sản xuất thiết bị cầm tay, sản xuất linh kiện, các
nhà cung cấp nền và giải pháp phần mềm và các công ty tiếp thị. Từ một quan điểm
phát triển phần mềm, Android trở thành trung tâm của thế giới mã nguồn mở và rất
có tiềm năng phát triển.
Thiết bị cầm tay có khả năng Android đầu tiên trên thị trường là thiết bị G1
do HTC sản xuất và được bán trên T-Mobile. Nó trở nên sẵn có sau gần một năm
đồn đại, khi mà các cơng cụ phát triển phần mềm sẵn có duy nhất chỉ là một số bản
phát hành Bộ công cụ phát triển phần mềm (SDK) được cải tiến dần từng bước. Khi
ngày phát hành G1 gần đến, nhóm Android đã phát hành SDK V1.0 và các ứng
dụng bắt đầu vượt lên nhằm hướng tới nền tảng mới này.
Để kích thích đổi mới và phát triển các ứng dụng của Android, Google đã tài
trợ hai vòng cuộc thi “Các thách thức nhà phát triển Android”, và hàng triệu đôla đã
được đổ vào các ứng dụng dự thi hàng đầu. Vài tháng sau G1, Android Market được
phát hành, cho phép người sử dụng duyệt và tải về các ứng dụng trực tiếp vào điện
thoại của họ. Trong vòng 18 tháng, một nền di động mới đã chính thức có mặt trên
thị trường và sẽ là đối thử cạnh tranh nặng ký của các nền di động phổ biến trước đó
như Symbian hay Window Mobile.
Lê Xuân Huy – 152122479

Trang 1


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

Android cung cấp khá đầy đủ các công cụ cơ bản và được thiết kế sao cho
các nhà phát triển có thể tận dụng tối đa lợi thế của thiết bị cầm tay để xây dựng nên
các ứng dụng thực sự thuyết phục. Họ có thể tạo một ứng dụng có thể gọi thực hiện
các chức năng lõi trong điện thoại như thực hiện cuộc gọi, gửi tin nhắn SMS, dùng

camera… hay chia sẻ thông tin cá nhân lên trang web chẳng hạn như thơng tin liên
lạc, vị trí địa lý, lịch biểu… Các nhà phát triển cịn có thể làm bất cứ việc gì trên
thiết bị Android bởi vì hệ thống Android giao tiếp thơng qua các Intens - nó đơn
giản là một chuỗi mơ tả một hành động nào đó. Android cịn cung cấp sẵn các dịch
vụ định vị (và đây là một thế mạnh của Google) cùng với một tập các ứng dụng về
“Map” với các tính năng rất ấn tượng như dị đường, tính khoảng cách địa điểm, tìm
bạn…Ngồi ra cịn có một số tính năng nổi bật khác như Animation và đồng thời
cũng hỗ trợ media-playback.
Android đã dần hoàn thiện qua các phiên bản, mà phiên bản mới nhất hiện
nay là Android 5.0.
2. 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
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 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ụ 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 gói

Lê Xuân Huy – 152122479


Trang 2


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

phần mềm Android, mặc dù không phải là tất cả các thiết bị Android được trang bị
với các phần cứng cần thiết. Ngồi ra cịn có cả hỗ trợ máy ảnh nữa (camera).
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
2D 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 SQLine mã nguồn mở phổ biến. Hình 1-1 cho
thấy một khung hình đơn giản hóa về các tầng phần mềm Android.

Hình 1 - 1: Cấu trúc Android
3. Kiến trúc ứng dụng Android
3.1 Máy ảo Dalvik
Các ứng dụng Android được viết bằng ngơn ngữ lập trình Java và chúng
chạy trong một máy ảo (VM). Điều quan trọng phải lưu ý rằng VM không phải là
một máy ảo Java mà là máy ảo Dalvik (Dalvik Virtual Machine), một công nghệ mã
nguồn mở. Chiếc máy ảo này dựa trên việc đăng kí (register-based) và được thiết kế
Lê Xuân Huy – 152122479

Trang 3


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

bởi Dan Bornstein và một vài kĩ sư của Google. Thuật ngữ “resister-based” đã nói
lên sự khác biệt giữa máy ảo Android với máy ảo JAVA thông thường. Tương tự

như máy ảo JAVA, đây cũng chỉ là một máy ảo thơng dịch, nhưng thơng dich các
file có định dạng .dex (Dalvik Execute) – một định dạng giúp tối ưu bộ nhớ và khả
năng lưu trữ của máy ảo – Các máy ảo JAVA ngày nay chủ yếu dựa trên ngăn xếp
(Stack-based ), với tính chất này cho phép rút ngắn thời gian thực thi chương trình.
Mỗi ứng dụng Android chạy trong một các thể của máy ảo Dalvik, khi đến lượt, cá
thể máy ảo này nằm trong một tiến trình do nhân Linux quản lý, như trình bày dưới
đây:

Hình 1 - 2: Máy ảo Dalvik
3.2 Các thành phần của một ứng dụng Android
Một ứng dụng Android gồm 4 thành phần chính sau:
 Hoạt động (Activity): một ứng dụng có một giao diện người dùng nhìn thấy
được, sẽ được thực hiện bằng một Activity. Activity dùng Views để tạo nên
giao diện đồ họa người dụng, để hiển thị thông tin và đáp lại các hành động
của người dùng. Khi người dùng chọn một ứng dụng từ màn hình chủ hoặc
trình khởi chạy ứng dụng thì một Activity được khởi động. Activity trong
Android cũng tương tự như một Form trong các ứng dụng desktop truyền
thống.

Lê Xuân Huy – 152122479

Trang 4


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

 Dịch vụ (Service): các service làm việc ẩn dưới ứng dụng, được sử dụng để
thực hiện các xử lý thơng thường khi cần và thậm chí ngày cả lúc các
Activity không hoạt động hoặc ẩn đi. Một dịch vụ nên được sử dụng đối với
bất kì ứng dụng nào cần tồn tại trong một thời gian dài, chẳng hạn như một

trình giám sát mạng hoặc ứng dụng kiểm tra cập nhật.
 Trình cung cấp nội dung (Content Providers): có thể coi như là một máy chủ
cơ sở dữ liệu.Cơng việc của nó là quản lý truy cập và chia sẻ dữ liệu đang tồn
tại, chẳng hạn như một cơ sở dữ liệu SQLite. Nó có thể được cấu hình để cho
phép các ứng dụng khác truy xuất và ngược lại. Nếu ứng dụng rất đơn giản
thì khơng nhất thiết phải tạo ta một trình cung cấp nội dung.
 Trình thu phát ( Broadcast Receivers): bằng cách tạo và đăng ký một
Broadcast Receiver, ứng dụng Android có thể lắng nghe toàn bộ các Intent
theo một chuẩn cụ thể được chỉ định. Các Broadcast Receiver sẽ chạy ứng
dụng một cách tự động để đáp ứng một sự kiện, chẳng hạn như nhận một văn
bản thông báo.
Việc tách rời sự phụ thuộc giữa các thành phần trong ứng dụng giúp việc
chia sẻ cũng như trao đổi giữa các ứng dụng khác trở nên dễ dàng hơn.
4. Vòng đời của ứng dụng Android
Không giống như các ứng dụng trên các nền tảng khác, các ứng dụng
Android khơng có một điều khiển đến vịng đời của chúng. Thay và đó, các thành
phần ứng dựng phải lắng nghe việc thay đổi trạng thái bên trong của ứng dụng đó
và tác động trở lại một các hợp lý. Mỗi ứng dụng Android ở trong chính tiến trình
của nó, chạy một thể hiện riêng biệt của Dalvik. Việc quản lý bộ nhớ và tiến trình
của mỗi ứng dụng Android được điều khiển một cách riêng trong lúc runtime.
Android quản lý tài nguyên một cách chặt chẽ, nó sẽ làm bất cứ việc gì để
đảm bảo cho thiết bị duy trì đáp ứng. Điều này có nghĩa là các tiến trình sẽ bị hủy đi
mà khơng có một cảnh báo nào nếu cần giải phóng tài nguyên cho các ứng dụng có
độ ưu tiên cao.
5. Các cơng cụ để tạo một ứng dụng Android
Để bắt đầu phát triển các ứng dụng Android, chúng ta cần có Bộ công cụ
phát triển phần mềm Android (SDK) và môi trường phát triển tich hợp Eclipse
Lê Xuân Huy – 152122479

Trang 5



Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

(Eclipse IDE). Việc phát triển Android có thể diễn ra trên Microsoft Window, Mac
OS X hoặc Linux.
5.1 Eclipse IDE
Các ứng dụng Android được viết bằng ngôn ngữ Java, nhưng biên dịch và thi
hành bằng máy ảo Dalvik. Viết mã bằng ngôn ngữ Java trong Eclipse là rất trực
quan. Eclipse cung cấp một môi trường Java phong phú, gồm cả việc trợ giúp theo
ngữ cảnh và các mách nước gợi ý về mã. Khi bộ mã Java được biên dịch thành
công, Android Developer Tools sẽ đảm bảo rằng ứng dụng đó được đóng gói một
cách đúng đắn, gồm cả tập tin AndroidMainifest.xml.
5.2 Android SDK
Bộ công cụ phát triển ứng dụng Android SDK là công cụ giả lập thiết bị ảo
trên máy tính để phát triển ứng dụng với các hàm API hỗ trợ cho những lập trình
viên lập trình trên các thiết bị di động sử dụng nền tảng Android thơng qua ngơn
ngữ lập trình Java. SDK gồm có:
 Android.jar: tập tin lưu trữ Java chứa toàn bộ các lớp SDK Android cần
thiết để xây dựng ứng dụng.
 Documention.html và thư mục docs: tài liệu SDK được cung cấp tại chỗ và
trên web, chủ yếu nó ở dạng JavaDocs, tạo điều kiện dễ dàng cho việc hướng
dẫn trong nhiều gói SDK. Tài liệu cũng gồm cả hướng dẫn phát triển mức
cao và các liên kết đến cộng đồng Android rộng rãi.
 Thư mục sample (các ví dụ mẫu): thư mục con samples chứa bộ mã nguồn
đầy đủ dùng cho một loạt các ứng dụng, gồm cả ApiDemo, nó sử dụng nhiều
API. Ứng dụng mẫu là một nơi khám phá tuyệt vời khi bắt đầu phát triển ứng
dụng Android.
 Thư mục tools (các cơng cụ): chứa tồn bộ các cơng cụ dịng lệnh để xây
dựng nên các ứng dụng Android. Cơng cụ được dùng phổ biến và hữu ích

nhất là tiện ích adb (Android Debug Bridge).
 Usb_driver: thư mục chứa các trình điều khiển cần thiết để kết nối mơi
trường phát triển với một thiết bị có khả năng chạy Android, chẳng hạn như
G1 hay điện thoại đã được phát triển Android Dev 1. Các tập tin này là đòi
hỏi duy nhất đối với các nhà phát triển đang sử dụng nền Windows.

Lê Xuân Huy – 152122479

Trang 6


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

5.3 Cài đặt công cụ
Chuẩn bị:
 Phần mềm Eclipse IDE 3.5, tải trực tiếp từ trang web
/> Bộ công cụ Android SDK phiên, tải từ trang web
/>Bắt đầu việc cài đặt:
 Giải nén chương trình Eclipse vào một thư mục nào đó ( ví dụ: D:\eclipse\)
 Giải nén bộ Android SDK vào một thư mục bất kỳ ( ví dụ:
D:\Android_SDK\)
 Chạy chương trình Eclipse.
 Vào menu Help – Software Updates …
 Chọn tab Available Software
 Chọn Add Site, nhập vào đường dẫn sau:
/> Chọn OK.
 Chờ cho chương trình được cài đặt.
 Sau khi cài xong, tiếp tục vào menu Window – Preferences
 Chọn tab Android, chỉ đường dẫn đến thư mục đã giải nén Android SDK ở
trên (ở đây là D:\Android_SDK)

 Hoàn tất.
Lưu ý: Cách cài đặt trên địi hỏi máy tính phải được kết nối Internet.
6. Thiết bị Android ảo (Android Virtual Device - AVD)
Các ứng dụng Android có thể được chạy trên một thiết bị thật sự hoặc trên
trình mơ phỏng Android (Android Emulator) kèm với SDK Android.

Lê Xuân Huy – 152122479

Trang 7


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

Từ phiên bản SDK 1.5, Google đã giới thiệu khái niệm về thiết bị Android
ảo. Một thiết bị Android ảo chỉ đơn giản là một tập các thuộc tính cấu hình được áp
dụng cho hình ảnh của một thiết bị mơ phỏng để hiển thị ứng dụng lên nó.
Cách tạo một thiết bị Android ảo như sau:
Trong Eclipse -> Window -> Android Virtual Device Manager.
Ở cửa sổ mới hiện ra, chọn mục New, hiện ra một cửa sổ mới như hình sau:

Hình 1 - 3: Tạo một AVD
1. AVD Name: đặt tên cho thiết bị (lưu ý: không chứa khoảng trắng và ký tự
đặc biệt).
2. Mục Target: chọn phiên bản hệ điều hành Android.
Lê Xuân Huy – 152122479

Trang 8


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android


3. Mục SD Card: điền kích thước bộ nhớ của thiết bị hoặc lấy một file SD Card
có sẵn.
4. Nhấn Create AVD.
7. Android Project
7.1 Tạo một Android Project mới
1. Trong Eclipse, chọn File -> New -> Android Application Project.
2. Một cửa sổ mới hiện ra, điền các thông tin tương ứng vào cửa sổ.
3. Application Name: tên ứng dụng
4. Project Name: tên Project.
5. Package Name: tên gói.
6. Chọn phiên bản Android.
7. Minimum Required SDK: API Level tối thiểu
8. Nhấn nút Finish để hồn thành.

Hình 1 - 4: Tạo một Android Project
Lê Xuân Huy – 152122479

Trang 9


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

7.2 Cấu trúc một Project
Một Android gồm các thư mục sau:


Thư mục src chứa source code ứng dụng: goomd các package và các class.




Thư mục gen chứa các file tự động phát sinh (mà thường gặp nhất là
R.class).



Thư mục res để chứa các resource dùng trong ứng dụng (thông qua ID).



Thư mục assets chứa các resource file mà ứng dụng cần dùng (dưới dạng
file).



File Mainfest là file khai báo thông tin về ứng dụng với hệ thống.



File thư viện.

II. CÁC THÀNH PHẦN CƠ BẢN CỦA MỘT ỨNG DỤNG TRÊN ANDROID
1. Hoạt động (Activity)
Mỗi một Activity đại diện cho một màn hình. Các ứng dụng phức tạp có thể
có nhiều hơn một Activity. Cần tạo một Activity cho mỗi màn hình cần hiển thị. Cụ
thể là ít nhất một màn hình chính điều khiển các chức năng của ứng dụng, các
Activity khác nhằm mục đích nhập thơng tin, cung cấp các khung nhìn khác nhau
trên dữ liệu hoặc hỗ trợ các chức năng khác.
Hầu hết các Activity được thiết kế để chiếm giữ tồn bộ màn hình, tuy
nhiên có thể tạo các Activity có một nữa độ trong suốt, các Activity nổi, hoặc các

dialog.
1.1 Tạo một Activity
Để tạo một Activity mới, cần thừa kế từ lớp Activity, sử dụng các View để
cung cấp các tương tác với người dùng, khai báo các thành phần giao diện và thực
thi các chức năng của ứng dụng.
package com.paad.myapplication;
import android.app.Activity;
import android.os.Bundle ;
public class MyActivity extends Activity{
@Override
Public void onCreate(Bundle icicle){
Super.onCreate(icicle);
Lê Xuân Huy – 152122479

Trang 10


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

}
}

Một lớp Activity cơ bản đưa ra một màn hình rỗng chứa cửa sổ hiển thị. Vì
vậy việc cần thực hiện đầu tiên là khai báo bố cục cho nó bằng cách sử dụng các
View và layout. Activity UI được tạo thành bởi các View. View là các điều khiển
giao diện người dụng, hiển thị dữ liệu và cung cấp tương tác đến người dùng.
Để gắn một giao diện cho một Activity, sử dụng phương thức
setContentView trong lớp Activity được kế thừa.
@Override
Public void onCreate(Bundle icicle){

Super.onCreate(icicle);
MyView myView = new MyView(this);
setContentView(myView);
}

Có 2 cách để thiết lập giao diện cho Activity: Bằng code hoặc thông qua file
định nghĩa layout. Ở trên là cách tạo giao diện bằng code, sau đây là cách tạo giao
diện người dùng thông qua layout, truyền tham số vào cho phương thức
setContenView là một resource ID.
@Override
Public void onCreate(Bundle icicle){
Super.onCreate(icicle);
setContentView(R.layout.main);
}

Để dùng một Activity cần khai báo bên trong file manifest. Thêm vào một
thẻ activity mới bên trong nút application. Thẻ activity này bao gồm các thuộc tính
cho siêu dữ liệu (lable,icon,…). Một Activity mà không được khai báo một thẻ
activity tương ứng sẽ không được khởi chạy.

Lê Xuân Huy – 152122479

Trang 11


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

1.2 Vịng đời của Activity

Hình 1 - 5: Vịng đời của Activity

1.3 Khởi động một Activity
Để khởi động một Activity, chúng ta dùng Intent:
 Khai báo tường minh: Cung cấp chính xác thơng tin của activity cần gọi .
Ví dụ:
Intent intent = new Intent(getApplicationContenxt(),TargetActivity.class);
startActivity(intent);

 Khai báo không tường minh: cung cấp thao tác cần làm gì, với loại dữ liệu
nào, thao tác thuộc nhóm nào… hệ thống sẽ tìm Activity tương ứng để khởi
động. Ví dụ:
Intent intent = new Intent(Intent.ACTION_VIEW);
Intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivity(intent);

Lê Xuân Huy – 152122479

Trang 12


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

1.4 Liên lạc giữa 2 Activity
Có thể khởi động một activity với một yêu cầu nào đó và activity kia khi làm
xong công việc sẽ trả lại kết quả cho activity trước. Ví dụ activity A yêu cầu một
activity làm giúp việc chụp ảnh, activity B đáp ứng được việc này, sau khi user
chụp ảnh xong sẽ trả lại file ảnh cho activity A. Để liên lạc 2 activity chúng ta làm
như sau:
 Khi khởi động một activity, ta có thể gửi kèm dữ liệu trong intent như ví dụ
sau:
intent.putExtra(“valuel1”,new String(“Hello”));

intent.putExtra(“value2”,new Long(100));

 Bên phía activity được khởi động, có thể lấy dữ liệu được gửi như sau:
getIntent().getExtras().getString(“value1”);
getIntent().getExtras().getLong(“value2”);

2. Trình thu phát (BroadcastReceiver)
BroadcastReceiver là một trong bốn loại thành phần trong ứng dụng
Android. Chức năng của nó là dùng để nhận các sự kiện mà các ứng dụng hoặc hệ
thông phát đi.
Có 2 cách phát – nhận đó là:
 Khơng có thứ tự: receiver nào đủ điều kiện thì nhận hết, khơng phân biệt và
chúng tách rời nhau.
 Có thứ tự: receiver nào đăng ký ưu tiên hơn thì nhận trước, và có thể truyền
thêm thơng tin xử lý cho các receiver sau.
2.1 Chu kỳ sống
BroadcastReceiver chỉ có duy nhất một phương thức onReceive().
 Khi có sự kiện mà BroadcastReceiver đã đăng ký nhận được phát đi, thì
phương thức onReceive() của BroadcastReceiver đó sẽ được gọi.
 Sau khi thực thi xong phương thức này, vòng đời của BroadcastReceiver kết
thúc.

Lê Xuân Huy – 152122479

Trang 13


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

2.2 Một số broadcast thông dụng

 Báo hệ thống khởi động xong.
 Báo sự có thay đổi.
 Báo có package mới cài vào hoặc xóa đi.
 Báo tắt máy.
 Báo cắm sạc, rút sạc.
 Thông báo tin nhắn mới.
 Thơng báo cắm, rút thẻ nhớ.
 Thơng báo có cuộc gọi đi.


Broadcast do người phát triển ứng dụng tự định nghĩa.
III. THIẾT KẾ GIAO DIỆN

1. Một số lớp hỗ trợ thiết kế giao diện cho ứng dụng Android
Android cung cấp một số công cụ thiết kế giao diện:
 Views: là lớp UI cơ bản cho các control giao diện. Tất cả các control giao
diện người dụng, các lớp layout đều được dẫn xuất từ lớp Views.
 ViewsGroups: được mở rộng từ lớp View và có thể chứa nhiều Views.
ViewGroups cũng được kế thừa để cung cấp các lớp quản lý bố cục như
LinearLayout. ViewGroup được dùng để xây dựng nên các component có thể
dùng lại (widget) hoặc để quản lý bố cục cho các control.
 Activity: dùng để hiển thị giao diện người dùng. Lớp này do người phát triển
ứng dụng viết.

Lê Xuân Huy – 152122479

Trang 14


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android


Hình 1 - 6: Quan hệ giữa các thành phần trên
2. Android Widget Toolbox
Android cung cấp bộ công cụ các View chuẩn để tạo các giao diện người
dùng đơn giản, giúp đơn giản hóa việc phát triển và tạo sự đồng nhất giữa các ứng
dụng.
 TextView: là một label chỉ có tác dụng hiển thị văn bản, nó hỗ trợ hiển thị
nhiều dòng, định dạng chuỗi.
 EditText: là một vùng nhập văn bản có thể chỉnh sữa, hỗ trợ nhập nhiều
dịng.
 ListView: tạo và quản lý một nhóm các View để hiển thị một danh sách các
phần tử. Một ListView chuẩn dùng để hiển thị chuỗi giá trị của một mảng
các TextView.
 Spinner: là một control kết hợp, hiển thị một TextView và một ListView kết
hợp dùng để chon một item từ danh sách. Nó được tạo thành từ một
TextView chứa giá trị hiện tại đang được chọn kết hợp với một nút mà khi
nhấn vào sẽ đưa ra một danh sách lựa chọn.
 Button
 Checkbox
 RadioButton
Lê Xuân Huy – 152122479

Trang 15


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

3. Các kiểu Layout
LayoutManager (thường được gọi là layout) là mở rộng của lớp ViewGroup,
được thiết kế để điều chỉnh vị trí của các control trên màn hình ứng dụng. Layout có

thể lồng nhau để tạo nên các giao diện phức tạp. Android có một số các layout đơn
giản giúp xây dựng UI. Để tạo nên một bố cục hợp lý thì nên kết hợp các layout với
nhau.
Các lớp layout cơ bản:
 Framelayout: là layout đơn giản nhất trong Layout Manager, FrameLayout
đặt mỗi View con vào góc trái trên của màn hình. Việc thêm nhiều control sẽ
chồng một các mới lên trên các trước đó.
 LinearLayout: thêm mỗi View theo một đường thẳng, theo chiều dọc hoặc
ngang. Một layout theo chiều dọc sẽ có một control trên một dịng, layout
theo chiều ngang chỉ có một dịng cho nhiều View. Nó cho phép chỉ định giá
trị “weight” cho mỗi View con để điều chỉnh kích thước bên trong khơng
gian cho phép.
 RelativeLayout: dùng để định vị trí cho các View cân xứng với các controk
khác cũng như với đường biên của màn hình.


TableLayout: giúp bố trí các View theo một lưới có các dịng và các cột. Các
cột có thể được thiết lập để co lại hoặc giãn ra.

4. Tạo các View
4.1 Chỉnh sửa các View có sẵn
Chỉnh sửa hoặc kế thừa một control sẵn có nếu cung cấp các chức năng cần
thiết, bằng cách ghi đè các handler và onDraw của nó. Để định nghĩa lại giao diện
cũng như các ứng xử của control mới tạo, cần phải ghi đè và thừa kế các điều khiển
sự kiện (event handler) kết hợp với các hành vi muốn thay đổi.
4.2 Tạo các điều khiển ghép (compound control)
Compound control là các widget có thể tái sử dụng, nó chứa nhiều control
được bố trí và có liên hệ với nhau, nó được tạo từ nhiều control cơ bản. Ví dụ như
tạo nên một dropdown combobox bằng cách kết hợp một TextView và một Button
mà khi được nhấn sẽ hiển thị một ListView.


Lê Xuân Huy – 152122479

Trang 16


Tìm hiểu thư viện OpenGLES và xây dựng game Line3D trên Android

Khi tạo một compound control cần định nghĩa lay out, hình thức và cách
thức tác động lẫn nhau giữa các View mà nó chứa. Compound control được tạo
thành từ việc dẫn xuất từ lớp ViewGroup.
4.3 Tạo các Control tùy chỉnh
Người phát triển có thể tạo ra các control theo ý của mình để tạo được một
giao diện mang tính duy nhất phù hợp với yêu cầu của người dùng. Các control mới
cần phải được thừa kế từ lớp View hoặc Surface View.
Lớp View cung cấp một đối tượng Canvas và một phương thức vẽ cũng như
các lớp Pain, để tạo một giao diện trực quan. Người thiết kế có thể định nghĩa lại
các sự kiện người dùng như cảm ứng trên màn hình, nhấn phím để tạo nên sự tương
tác. Trong những trường hợp mà khơng địi hổi việc vẽ lại cũng như đồ họa 3D thì
lớp cơ sở View có giải pháp hiệu quả.
Lớp SurfaceView cung cấp một đối tượng canvas hỗ trợ việc vẽ từ một luồng
xử lý nền và sử dụng OpenGL cho đồ họa 3D. Đây là lựa chọn tuyệt vời cho các
điều khiển đòi hỏi đồ họa cao, cần phải cập nhật liên tục hoặc hiển thị các đồ họa
phức tạp, như game 3D.
5. Tạo giao diện Activity với các View
Một Activity khi chưa thiết kế sẽ khởi động với một màn hình rỗng. Để thiết
lập giao diện cho màn hình rỗng này cần gọi phương thức setContenView khi
override lại phương thức onCreate. Phương thức setContentView có thể nhận một
tham số là resource ID hoặc một thể hiện của View. Do đó, có thể định nghĩa giao
diện ứng dụng bằng code hoặc tham chiếu đến resource (layout).

Nếu dùng layout resource thì sẽ tách riêng việc thiết kế giao diện mà không
thay đổi code bên trong.

Lê Xuân Huy – 152122479

Trang 17


×