Lập trình đa phương tiện (Multimedia) trên nền tảng Android
MỤC LỤC
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 1
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
CÁC TỪ VIẾT TẮT
ĐTDĐ - Điện thoại di động
SDK - Software development kit
API - Application programming interface
ADT - Android Deverloper Tool
ROBOT hay BOT - Xem chương 3 mục 9
TCP/IP - Transmission Control Protocol/ Internet Protocol
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 2
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
DANH MỤC HÌNH ẢNH
Chương 2
Hình 2.1
Android
timeline Trang 15
Hình 2.2: Cấu trúc stack hệ thống Android Trang 19
Hình 2.3: Applications Trang 19
Hình 2.4: Application Framework Trang 20
Hình 2.5: Libraries Trang 21
Hình 2.6: Android Runtime Trang 22
Hình 2.7: Android emulator Trang 23
Hình 2.8: Các phiên bản SDK Trang 23
Hình 2.9: SDK và AVD Manager Trang 24
Hình 2.10: Instal SDK Trang 25
Hình 2.11: Tích hợp Android SDK vào Eclipse Trang 26
Hình 2.12: Tạo một AVD mới Trang 27
Hình 2.13: Chu trình sống của một Service Trang 32
Hình 2.14: Truyền dữ liệu giữa 2 Activity Trang 35
Hình 2.15: Các thuộc tính của Intend Trang 35
Hình 2.16: Các Action đã được định nghĩa sẵn trong Intend Trang 36
Hình 2.17: Chu kỳ sống thành phần Trang 43
Hình 2.18: Activity stack Trang 44
Hình 2.19: Các trạng thái của chu kỳ sống Trang 45
Hình 2.20: Các sự kiện của một ứng dụng Trang 46
Hình 2.21: Các phương thức chu kỳ sống của ứng dụngTrang 47
Hình 2.22: FrameLayout Trang 51
Hình 2.23: LinearLayout Trang 52
Hình 2.24: RelativeLayout Trang 52
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 3
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.25: RelativeLayout Trang 53
Hình 2.26: TableLayout Trang 54
Hình 2.27: TableLayout Trang 55
Hình 2.28: Sơ đồ lớp android.media.MediaPlayer Trang 61
Hình 2.29: new android project Trang 66
Hình 2.30: sơ đồ lớp android.media.Mediarecorder Trang 72
Chương 3
Hình 3.1: Sơ đồ usecase của hệ thống Trang 86
Hình 3.2: Sơ đồ class mức khái niệm mối quan hệ giữa các Activity Trang 87
Hình 3.3: Class GoMoKuGame Trang 88
Hình 3.4: Sơ đồ tuần tự vẽ bàn chơi game online Trang 92
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 4
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
TÓM TẮT
Ngày nay, người sử dụng điện thọai di động không chỉ để thực hiện những cuộc gọi
thông thường mà còn sử dụng cho nhiều mục đích khác như: tán gẫu, duyệt web,
nghe nhạc, và xem truyền hình trực tiếp qua mạng. Ngày nay, điện thọai di động cần
phải hỗ trợ được đa phương tiện để được coi là một thiết bị sử dụng đa phương tiện.
Trong quyển báo cáo này chúng ta sẽ nghiên cứu làm cách nào để làm cho Android
có thể phát tập tin âm thanh, xem video, và ghi lại âm thanh.
Một trong những tính năng chính của Android là bạn có thể dễ dàng phát triển các
ứng dụng android trên nền tảng ứng dụng di động. Điều này thực sự nổi bật với việc
tạo ra các giao diện trực quan hấp dẫn (chẳng hạn như trong chương 3). Trong quyển
báo cáo này chúng ta sẽ nghiên cứu làm cách nào để tạo ra giao diện đồ họa bằng
cách sử dụng Android’d Graphic API.
Nếu bạn đã từng làm việc với đồ họa trong JAVA, bạn có thể sẽ tìm thấy các API đồ
họa và cách làm việc với đồ họa trong Android cũng rất quen thuộc.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 5
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
ABSTRACT
Today people use their cell phones for almost everything but phone calls, from
chatting, to surfing the web, to listening to music, and even to watching live
streaming TV. Nowadays cell phones need to support multimedia to even be
considered a usable device. In this book we are going to look how you can use
Android to play audio files, watch video, and even record sound.
One of the main features of Android that you should have picked up on by now is
how much easier it is to develop Android applications than mobile application
platforms. This really stands out in the creation of visually appealing UIs and
metaphors, but there is a limit of what can be done with typical Android UI elements
(such as those discussed in chapter 2 head 10). In this chapter we are going to look at
how to create graphics using Android’s Graphic API.
If you have ever worked with graphics in Java, you will most likely find the Graphics
API and how graphics work in Android familiar.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 6
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
CHƯƠNG 1
GIỚI THIỆU TỔNG QUAN
1. GIỚI THIỆU
Nói về ý nghĩa và tầm quan trọng của điện thoại di động (ĐTDĐ), chúng ta có thể
tóm gọn rằng đây là phương tiện liên lạc cá nhân không thể thiếu trong cuộc sống
hàng ngày. Vì quá hiện đại, quá nhiều tính năng mà người ta có thể tích hợp vào
ĐTDĐ. Ngày nay, ĐTDĐ đang ngày càng khẳng định vai trò sống còn của mình
trong xã hội phát triển đặc biệt với thế hệ những người trẻ tuổi, năng động. Nó gắn
bó với cuộc sống đến mức ngoài chức năng của một phương tiện liên lạc, ĐTDĐ đã
trở thành phương tiện để giải trí với nhiều chức năng hấp dẫn, phương tiện lưu giữ
những thông tin cá nhân một cách an toàn dù chỉ tương đối.
Hệ điều hành Android nổi bật với khả năng hoạt động ổn định và linh hoạt, có thể
chạy nhiều ứng dụng một lúc linh hoạt, mượt mà. Android còn hỗ trợ cài đặt không
giới hạn số lượng tài khoản email. Bạn có thể cài cả account mail cá nhân như Gmail
hoặc các mail outlook phục vụ cho công việc.
Với một bộ công cụ phát triển phần mềm (SDK) linh động, số lượng các ứng dụng
dành cho Android đang tăng từng ngày. Ngoài ra, các nhà phát triển ứng dụng còn có
thể làm việc với các hãng sản xuất linh kiện để có thể xây dựng các ứng dụng phù
hợp và tối ưu đặc biệt dành cho Android. (Chẳng hạn như Gameloft bắt tay cùng
Qualcomm để cho ra mắt những tựa game tối ưu cho thế hệ vi xử lý Snapdragon).
Có một bộ công cụ phát triển phần mềm (SDK) miễn phí và mã nguồn mở cũng là
một điềm mạnh của Android. Mọi người có thể download SDK và tạo các ứng dụng
cho riêng mình. Sau đó, các nhà phát triển có thể đăng tải ứng dụng của mình trực
tiếp với Android Market của Google, hoặc thông qua các trang chia sẻ ứng dụng thứ
ba.
Ngoài ra, các nhà phát triển ứng dụng trên Android còn cho phép người dùng phản
hồi các ý kiến đóng góp về các sản phẩm của mình, dựa vào đó giúp các sản phẩm
được trở nên hoàn thiện và phù hợp với yêu cầu người sử dụng hơn.
Đây được xem là điểm mạnh để Android có thể phát triển ứng dụng và game trên
nền tảng của riêng mình, giúp vượt lên đối thủ chính là iOS của Apple, vốn có một
nền tảng lập trình ứng dụng không được mở và linh hoạt như Android.
Android là “mỏ vàng” cho các nhà phát triển ứng dụng
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 7
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Với số lượng các ứng dụng miễn phí lớn, cùng với lượng người dùng các ứng dụng
đông đảo hơn so với các nền tảng, các nhà phát triển ứng dụng của Android dễ dàng
nhận được các khoản đầu tư lớn.
Hiện nay, Android đang là sự lựa chọn hàng đầu cho những nhà phát triển ứng dụng
mới, và với xu thế này, số lượng ứng dụng và game trên Android sẽ tăng lên đáng kể
trong tương lai.
Ngày nay, việc chơi game online không còn là nhu cầu giải trí đơn thuần mà nó đã
dần trở thành một xu hướng. Nhưng việc xây dựng một game online theo mô hình
truyền thống thì quá tốn kém nhất là chi phí để mua sắm một server và chi phí bảo trì
server game là rất lớn.
IRC là dịch vụ cho phép mọi người trên khắp hành tinh có thể gặp gỡ, trao đổi thông
tin với nhau mà không cần phải gặp trực tiếp. Dịch vụ này rất phát triển, có đến hàng
triệu người trên khắp thế giới sử dụng dịch vụ này.
IRC được xây dựng trên họ giao thức mạng phổ biến nhất là TCP/IP lý do việc sử
dụng họ giao thức này là tính chính xác, tin cậy, phổ biến, thích hợp cho các cuộc
thảo luận từ xa và nó hoàn toàn miễn phí.
Với những tính năng đó của IRC thì chúng ta có thể xây dựng một server game mà ít
tốn chi phí hơn, và có thể phục vụ cho nhiều game với cùng một hoặc nhiều server
IRC mà không tốn chi phí cho server. Vì vậy vấn đề đặt ra là ta phải xây dựng một
giao thức dựa vào server IRC, mà nó có thể cho phép những người khác xây dựng
game một cách dể dàng, nhanh chóng, và triệt để tài nguyên hệ thống server IRC
bằng cách dựa vào giao thức chúng tôi đã đề ra.
Với những ưu điểm trên về cả phần cứng, phần mềm lẫn khả năng phát triển ứng
dụng, Android sẽ là hệ điều hành di động dành cho game thủ trong tương lai, trong
đề tài này, chúng tôi sẽ xây dựng trò chơi đánh cờ ca rô online trên nền tảng Android
và tận dụng sức mạnh của hệ thống server với các vấn đề giải quyết như sau:
- Một giao thức hỗ trợ xây dựng trò chơi đối kháng dựa trên giao thức IRC, giao thức
này sẽ tận dụng tối đa sức mạnh mà server IRC mang lại.
- Tìm hiểu lập trình mạng trên hệ điều hành Android.
- Xây dựng trò chơi đánh cờ ca rô hỗ trợ chơi online trên hệ điều hành Android.
2. MỤC TIÊU CẦN ĐẠT ĐƯỢC
Mỗi thành viên trong nhóm cần tìm hiểu và thực hiện đề tài riêng cũa mỗi người, sau
đó cả nhóm sẽ cùng nhau thực hiện một đề tài chung. Nội dung công việc sẽ được
nêu rõ sau đây:
• Tên đề tài của từng thành viên trong nhóm:
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 8
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Thái Thành Tín thực hiện đề tài - Tìm hiểu cơ chế lập trình mạng dưới
Android
Trương Thiện Thành thực hiện đề tài - Xây dựng khung nền cho trò chơi trên
Android dựa trên giao thức IRC.
Lê An thực hiện đề tài - Lập trình đa phương tiện (Multimedia) trên nền tảng
Android.
• Mục tiêu của cả nhóm:
Các đề tài sẽ làm việc cộng tác với nhau để xây dựng chương trình minh họa là
một trò chơi đối kháng giữa hai người trên hai máy điện thọai di động Android.
Cả nhóm chúng tôi quyết định thực hiện trò chơi đánh cờ ca rô online trên thiết bị
sử dụng Android.
Đây là một đề tài lớn cần có sự phối hợp giữa các thành viên trong nhóm. Nội dung
công việc được phân thành những phân hệ cụ thể như sau:
Mã
phân hệ
Tên phân hệ Nội dung cần thực hiện
Người thực
hiện
Thời
gian
PH00 Xây dựng chương
trình minh họa cho
trò chơi đối kháng
giữa hai người trên
hai máy điện thoại
Android
Xây dựng chương trình minh
họa cho trò chơi đối kháng
giữa hai người trên hai máy
điện thoại Android
Cả nhóm 3 tháng
PH01 Tìm hiểu cơ chế lập
trình mạng dưới
Android
- Tìm hiểu cơ chế lập trình
mạng dưới Android
- Cài đặt các giao thức lên trò
chơi đánh cờ ca rô online.
- Xây dựng BOT quản lý
người dùng.
Thái
Thanh Tín
2 tháng
PH02 Xây dựng khung nền
trò chơi đối kháng
dựa trên giao thức
IRC
- Tìm hiểu về giao thức IRC,
các khái niệm về server,
client, channel, channel
operator, các khái niệm
truyền thông, những quy định
về message, quy định về code
trong IRC, chi tiết cho từng
Trương
Thiện
Thành
2 tháng
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 9
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
message.
- Tìm hiểu cách thức xây
dựng giao thức thông qua
website, đề tài luận văn về
IRC.
- Bắt đầu xây dựng giao thức
từ những bước cơ bản nhất và
hoàn thiện dần dần.
- Cài đặt con bot, dùng xchat,
icechat để kiểm tra giao thức
vừa cài đặt.
PH03 Lập trình đa phương
tiện trên nền tảng
Android
- Tìm hiểu lập trình đa
phương tiện dưới Android.
Trong điều kiện thực tế thời
gian nghiên cứu có hạn nên
tôi chỉ nghiên cứu những thư
viện lập trình Multimedia và
Graphics hỗ trợ trực tiếp cho
việc thiết kế một ứng dụng
đơn giản minh họa việc phát
tập tin media trên thiết bị
Android.
- Xây dựng trò chơi đánh cờ
ca rô trên nền tảng Android
hỗ trợ hai người chơi online
trên thiết bị sử dụng Android.
- Cài đặt các giao thức lên trò
chơi ca rô.
Lê An 2 tháng
3. KHÓ KHĂN
- Việc lập trình đa phương tiện và lập trình game trên nền tảng Android còn quá
mới mẻ.
- Bộ giả lập SDK hỗ trợ tốt cho việc lập trình nhưng còn quá chậm và không hỗ
trợ tốt việc lập trình đa phương tiện cho lắm vì một số phần cứng bị giới hạn.
- Server IRC không hỗ trợ việc quản lý người dùng trên đó nên đó cũng là một
khó khăn lớn đối với chúng tôi.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 10
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
4. HƯỚNG GIẢI QUYẾT
• Tìm hiểu “trò chơi đối kháng giữa hai người” là gì?
Các trò chơi như cờ ca rô, cờ tướng, cờ vua, cờ vây… được gọi là trò chơi đối
kháng, nó là trò chơi diễn ra giữa hai đối thủ để giành chiến thắng. Nói chung các trò
chơi này đều có một đặc điểm chung là mỗi đối thủ phải tìm đường đi ngắn nhất để
giành chiến thắng.
Đặc điểm của các trò chơi này như sau:
- Có hai đối thủ, mỗi đối thủ chỉ đi một nước khi tới lượt.
- Các đối thủ đều biết thông tin về tình trạng trận đấu.
- Trận đấu không kéo dài vô tận, mà phải có thắng, thua hoặc hòa.
• Tìm hiểu cách thức xây dựng trò chơi đối kháng truyền thống.
Một mô hình trò chơi đối kháng online truyền thống là một mô hình dạng client-
server. Mô hình cần một server game để quản lý thông tin người dùng và hỗ trợ cho
game, các client được cài đặt một chương trình chơi game hay còn gọi là game
client, các game có thể là cờ tướng, cờ vây, cờ carô, ….
• Xây dựng kịch bản trò chơi.
• Nghiên cứu lập trình đa phương tiện trên Android.
• Xây dựng con robot (bot – xem chương 3 phần 9) để quản lý thông tin người
dùng và hỗ trợ game.
• Thiết kế giao diện, xây dựng game đánh cờ ca rô.
• Nghiên cứu lập trình mạng trên android.
• Cài đặt các giao thức vào game, hòan thiện con robot.
• Viết báo cáo.
5. PHẠM VI ĐỀ TÀI
Nội dụng quyển báo cáo này sẽ tập trung chủ yếu vào phần phát triển các ứng dụng
đa phương tiện (Multimedia) trên nền tảng Android, đề tài được thực hiện với một số
mục tiêu:
- Nghiên cứu qua kiến trúc của Android.
- Tìm hiểu bộ phát triển ứng dụng Android SDK.
- Nghiên cứu lập trình đa phương tiện (Multimedia), lập trình Graphics trên nền
tảng Android.
- Xây dựng chương trình minh hoạ là một trò chơi đối kháng (trò chơi đánh cờ
ca rô) giữa hai người trên thiết bị sử dụng hệ điều hành Android.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 11
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
6. BỐ CỤC CỦA QUYỂN LUẬN VĂN
Nội dung quyển luận văn được chia làm 3 chương:
• Chương 1: Giới thiệu tổng quan
Giới thiệu tổng quan về đề tài và sự cần thiết của việc nghiên cứu đề tài này, đồng
thời cũng nêu lên mục tiêu và hướng tiếp cận. Cuối cùng là nêu lên tổng quan về nội
dung của từng chương trong quyển luận văn này.
Chương 2: Phần lý thuyết
Trình bày các khái niệm chính trong đề tài cụ thể là:
Khái niệm, lịch sử hình thành và phát triển của Android.
Tìm hiểu máy ảo Dalvik.
Tìm hiểu kiến trúc của Android.
Android Emulator.
Hướng dẫn cài đặt bộ SDK hỗ trợ lập trình Android với eclipse.
Các thành phần tạo nên một ứng dụng của Android.
Chu kỳ ứng dụng Android.
Tìm hiểu XML trong Android.
Tìm hiểu gói Android.media.
Tìm hiểu lớp android.media.MediaPlayer và lớp
android.media.MediaRecorder làm một ví dụ đơn giản minh họa.
Giới thiệu về Android Graphics.
Tìm hiểu sử dụng các đối tượng trong gói android.graphics để vẽ.
Chương 3 Phần ứng dụng
Đặc tả việc xây dựng trò chơi.
Các hình ảnh minh họa.
Phần thảo luận kết quả, nêu những vấn đề chưa được giải quyết hướng phát triển.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 12
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
CHƯƠNG 2
CƠ SỞ LÝ THUYẾT
1. KHÁI NIỆM, LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN ANDROID
1.1. Khái niệm Android
Android là hệ điều hành trên các thiết bị di động như: điện thọai di động, máy tính
bảng. Android được phát triển bởi Google và dựa trên nền tảng Linux phiên bản 2.6
cho hệ thống dịch vụ cốt lõi như security, memory management, process
management, network stack, and driver model. Android có một cộng đồng những
nhà phát triển rất lớn viết các ứng dụng cho hệ điều hành của mình. Hiện tại có
khoảng 200.000 ứng dụng cho Android os và vào khoảng 100.000 ứng dụng đã được
đệ trình, điều này khiến Android trở thành hệ điều hành di động có môi trường phát
triển lớn thứ 2. Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ
Java.
Google công bố hầu hết các mã nguồn của Android theo bản cấp phép Apache. Hệ
điều hành Android bao gồm 12 triệu dòng mã; 3 triệu dòng XML, 2.8 triệu dòng mã
C, 2.1 triệu mã Java và 1.75 triệu dòng mã C++.
1.2. Lịch sử hình thành và phát triển
Ban đầu, Android là hệ điều hành cho các thiết bị cầm tay dựa trên nền tảng Linux
do công ty Android Inc. (California, Mỹ) thiết kế. Công ty này sau đó được Google
mua lại vào năm 2005 và bắt đầu xây dựng Android Platform. Các thành viên chủ
chốt tại ở Android Inc. gồm có: Andy
Rubin, Rich
Miner,
Nick Sears, and Chris
White.
Hình 2.1
Android
timeline
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 13
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Và sau tiếp, vào cuối năm 2007, thuộc về Liên minh Thiết bị Cầm tay Mã Nguồn mở
(Open Handset Alliance) gồm các thành viên nổi bật trong ngành viễn thông và thiết
bị cầm tay như:
Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, Marvell
Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint
Nextel, T-Mobile, ARM Holdings, Atheros Communications, Asustek Computer Inc,
Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, and Vodafone Group,…
Mục tiêu của Liên minh này là nhanh chóng đổi mới để đáp ứng tốt hơn cho nhu cầu
người tiêu dùng và kết quả đầu tiên của nó chính là nền tảng Android. Android được
thiết kế để phục vụ nhu cầu của các nhà sản xuất thiết, các nhà khai thác và các lập
trình viên thiết bị cầm tay. Android là hệ thống nền tảng phần mềm dành cho điện
thoại di động bao gồm hệ điều hành, các phần tử giao tiếp trung gian (midleware) và
các ứng dụng chính (key applications).
Nền tảng di động Android của Goolge ngày càng trở nên hiện thực và đang là một
đối thủ nặng ký cho những gã khổng lồ như Microsoft, Apple, RIM,... Cuộc chiến đã
rõ ràng hơn khi mà Google tung ra bộ công cụ phát triển phần mềm SDK (Software
Development Kits) cho Android. Bộ SDK sẽ giúp các nhà phát triển phần mềm hiểu
rõ hơn về Android và tạo nên các sản phẩm phần mềm cho dòng thiết bị này. Bộ
SDK được thiết kế để cho phép các nhà phát triển “mở rộng, thay thế, tái sử dụng”
các thành phần phần mềm, có nhiều công cụ debug, thư viện, dự án mẫu. Có một
plug-in tích hợp SDK với nền tảng phát triển Eclipse (từ Eclipse 3.2 trở về sau).
Phiên bản SDK lần đầu tiên phát hành vào tháng 11 năm 2007, hãng T-Mobile cũng
công bố chiếc điện thoại Android đầu tiên đó là chiếc T-Mobile G1, chiếc
smartphone đầu tiên dựa trên nền tảng Android. Một vài ngày sau đó, Google lại tiếp
tục công bố sự ra mắt phiên bản Android SDK release Candidate 1.0. Trong tháng
10 năm 2008, Google được cấp giấy phép mã nguồn mở cho Android Platform.
Khi Android được phát hành thì một trong số các mục tiêu trong kiến trúc của nó là
cho phép các ứng dụng có thể tương tác được với nhau và có thể sử dụng lại các
thành phần từ những ứng dụng khác. Việc tái sử dụng không chỉ được áp dụng cho
cho các dịch vụ mà nó còn được áp dụng cho cả các thành phần dữ liệu và giao diện
người dùng.
Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay được gọi là Android
Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị ràng buộc vào các
nhà cung cấp mạng điện thoại di động. Mục tiêu của thiết bị này là cho phép các nhà
phát triển thực hiện các cuộc thí nghiệm trên một thiết bị thực có thể chạy hệ điều
hành Android mà không phải ký một bản hợp đồng nào. Vào khoảng cùng thời gian
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 14
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
đó thì Google cũng cho phát hành một phiên vản vá lỗi 1.1 của hệ điều hành này. Ở
cả hai phiên bản 1.0 và 1.1 Android chưa hỗ trợ soft-keyboard mà đòi hỏi các thiết bị
phải sử dụng bàn phím vật lý. Android cố định vấn đề này bằng cách phát hành SDK
1.5 vào tháng Tư năm 2009, cùng với một số tính năng khác. Chẳng hạn như nâng
cao khả năng ghi âm truyền thông, vật dụng, và các live folder.
1.3. Lịch sử cập nhật
Android đã trải qua một số các cấp nhật kể từ lần đầu phát hành. Những cập nhật này
nhìn chung có nhiệm vụ vá các lỗ hổng và thêm các tính năng mới vào hệ điều hành.
Tên
phiên bản
Thông tin phiên bản
1.5(Cupcake)
Trên nền tảng
Linux Kernel
2.6,27
- Ngày 30 tháng 4 năm 2009, bản cập nhật 1.5 chính thức
(Cupcake) cho Android được phát hành. Trong đó bao gồm một
số tính năng mới và các cập nhật về giao diện người dùng (UI):
• Khả năng ghi lại và xem video thông qua chế độ máy ghi
hình (camcorder).
• Tải video lên YouTube và ảnh lên Picasa trực tiếp từ điện
thoại.
• Bàn phím ảo mới với khả năng đoán trước văn bản.
• Hỗ trợ bluetooth A2DP và AVRCP.
• Khả năng tự động kết nối với một thiết bị Bluetooth
trong một khoảng cách nhất định.
• Các widget và thư mục (folder) mới có thể chuyển đến
The Home screens.
• Chuyển tiếp màn hình động.
1.6 (Donut)
Trên nền tảng
Linux Kernel
2.6.29
- Ngày 15 tháng 9 năm 2009, bản cập nhật 1.6 (Donut) SDK
được phát hành.
2.0/2.1 (Eclair)
Trên nền tảng
Linux Kernel
2.6.29
- Ngày 26 tháng 10 năm 2009, bản cập nhật 2.0 (Eclair) được
phát hành.
- Phiên bản cập nhật 2.0.1 được phát hành vào ngày 3 tháng 12
năm 2009.
- Phiên bản cập nhật 2.1 được phát hành vào ngày 12 tháng 1
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 15
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
năm 2010.
2.2 (Froyo)
Trên nền tảng
Linux Kernel
2.6.32
- Ngày 20 tháng 5 năm 2010, bản SDK 2.2 (Froyo) đã được phát
hành. Có sự thay đổi quan trọng là tối ưu hóa toàn bộ hệ điều
hành Android về tốc độ, bộ nhớ và hiệu năng.
2.3
(Gingerbread),
Trên nền tảng
Linux Kernel
2.6.35
- Ngày 6 tháng 12 năm 2010 , phiên bản 2.3 (Gingerbread) đã
được phát hành.
Phiên bản cập nhật 2.3.3 được phát hành vào Tháng 2 năm 2011.
3.0
(Honeycomb)
Trên nền tảng
Linux Kernel
2.6.36
- Ngày 22 tháng 2 năm 2011, phiên bản Android 3.0 chỉ dành
riêng cho máy tính bản đã được Google phát hành.
2. MÁY ẢO DALVIK
Dalvik là máy ảo giúp các ứng dụng java chạy được trên các thiết bị động Android.
Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex). Định
dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc độ xử lý.
Dalvik đã được thiết kế và viết bởi Dan Bornstein, người đã đặt tên cho nó sau khi
đến thăm một ngôi làng đánh cá nhỏ có tên là Dalvík ở đảo Eyjafjörður, nơi mà một
số tổ tiên của ông sinh sống.
Từ góc nhìn của một nhà phát triển, Dalvik trông giống như máy ảo Java (Java
Virtual Machine) nhưng thực tế thì hoàn toàn khác. Khi nhà phát triển viết một ứng
dụng dành cho Android, anh ta thực hiện các đoạn mã trong môi trường Java. Sau đó,
nó sẽ được biên dịch sang các bytecode của Java, tuy nhiên để thực thi được ứng
dụng này trên Android thì nhà phát triển phải thực thi một công cụ có tên là “dex”.
Đây là công cụ dùng để chuyển đổi bytecode sang một dạng gọi là dex bytecode.
"Dex" là từ viết tắt của "Dalvik executable" đóng vai trò như cơ chế ảo thực thi các
ứng dụng Android.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 16
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
3. KIẾN TRÚC CỦA ANDROID
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều hành Android.
Mỗi một phần sẽ được đặc tả một cách chi tiết dưới đây.
Hình 2.2: Cấu trúc stack hệ thống Android
3.1. Tầng ứng dụng
Hình 2.3: Applications
Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: contacts, browser,
camera, Phone,… Tất cả các ứng dụng chạy trên hệ điều hành Android đều được viết
bằng Java.
3.2. Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà phát
triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo. Nhà phát triển
được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập, các dịch vụ
chạy nền, thiết lập hệ thống báo động, thêm các thông báo để các thanh trạng thái.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 17
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được sử dụng bởi
các ứng dụng lõi. Các kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử dụng
lại các thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình và ứng dụng
nào khác sau đó có thể sử dụng những khả năng (có thể hạn chế bảo mật được thực
thi bởi khuôn khổ). Cơ chế này cho phép các thành phần tương tự sẽ được thay thế
bởi người sử dụng.
Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm:
Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để thiết kế phần
giao diện ứng dụng như: gridview, tableview, linearlayout,…
Một “Content Provider” cho phép các ứng dụng có thể truy xuất dữ liệu từ các ứng
dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các ứng dụng đó.
Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không phải là mã
nguồn, chẳng hạn như: localized strings, graphics, và layout files.
Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các custom alerts
trong status bar.
Activity Manager được dùng để quản lý chu trình sống của ứng dụng và điều hướng
các activity.
Hình 2.4: Application Framework
3.3. Library
Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều thành
phần khác nhau trong hệ thống Android. Điều này được thể hiện thông qua nền tảng
ứng dụng Android. Một số các thư viện cơ bản được liệt kê dưới đây:
System C library: a BSD-derived implementation of the standard C system library
(libc), tuned for embedded Linux-based devices.
Media Libraries - trên nền tảngPacketVideo's OpenCORE; the libraries support
playback and recording of many popular audio and video formats, as well as static
image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 18
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Surface Manager – Quản lý việc truy xuất vào hệ thống hiển thị.
LibWebCore - a modern web browser engine which powers both the Android
browser and an embeddable web view.
SGL - the underlying 2D graphics engine.
3D libraries - an implementation trên nền tảngOpenGL ES 1.0 APIs; the libraries use
either hardware 3D acceleration (where available) or the included, highly optimized
3D software rasterizer.
FreeType - bitmap and vector font rendering.
SQLite - a powerful and lightweight relational database engine available to all
applications.
Hình 2.5: Libraries
3.4. Android Runtime
Android bao gồm một tập hợp các thư viện cơ bản mà cung cấp hầu hết các chức
năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java. Tất cả các ứng dụng
Android đều chạy trong tiến trình riêng. Máy ảo Dalvik đã được viết để cho một thiết
bị có thể chạy nhiều máy ảo hiệu quả. Các VM Dalvik thực thi các tập tin thực thi
Dalvik (dex). Định dạng được tối ưu hóa cho bộ nhớ tối thiểu. VM là dựa trên
register-based, và chạy các lớp đã được biên dịch bởi một trình biên dịch Java để
chuyển đổi thành các định dạng dex. Các VM Dalvik dựa vào nhân Linux cho các
chức năng cơ bản như luồng và quản lý bộ nhớ thấp.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 19
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.6: Android Runtime
3.5. Linux kernel
Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi như security,
memory management, process management, network stack, and driver model. Kernel
Linux hoạt động như một lớp trừu tượng hóa giữa phần cứng và phần còn lại của
phần mềm stack.
4. ANDROID EMULATOR
Android SDK và Plugin Eclipse được gọi là một Android Deverloper Tool (ADT).
Các Android coder sẽ cần phải sử dụng công cụ IDE (Integrated Development
Enveronment) này để phát triển, debugging và testing cho ứng dụng. Tuy nhiên, các
coder cũng có thể không cần phải sử dụng IDE mà thay vào đó là sử dụng command
line để biên dịch và tất nhiên là vẫn có Emulator như thường.
Android Emulator được trang bị đầy đủ hầu hết các tính năng của một thiết bị thật.
Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB, camera và video,
nghe phone, nguồn điện giả lập và bluetooth.
Android Emulator thực hiện các công việc thông qua một bộ xử lý mã nguồn mở,
công nghệ này được gọi là QEMU ( được phát triển bởi
Fabrice Bellard.
Tháng 12 năm 2010 thì bản cập nhật Android 2.3 cũng chính thức được Google giới
thiệu với nhiều tính năng mới, tập trung vào việc phát triển game, đa phương tiện và
phương thức truyền thông mới. Android 2.3 có tên mã là Gingerbread, hiện bộ SDK
Android 2.3 dành cho các nhà phát triển cũng đã được Google phát hành.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 20
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.7: Android emulator
Mới đây nhất vào ngày 22 tháng 2 năm 2011, phiên bản Android 3.0 mới mã là
Honeycomb chỉ dành riêng cho máy tính bản được Google phát hành. Và thiết bị đầu
tiên chạy hệ điều hành này là Motorola Xoom.
5. HƯỚNG DẪN CÀI ĐẶT ANDROID VỚI ECLIPSE
5.1. Download Android SDK
Android SDK thực chất là tập hợp các công cụ và thư viện để phát triển các ứng
dụng trên nền tảng hệ điều hành Android.
Bước1: Vào trang để tải Android SDK
Starter. Tùy thuộc vào hệ điều hành mà bạn chọn bản Mac, Linux hay Window. Ở
đây tôi chọn tải bản cho Window.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 21
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.8: Các phiên bản SDK
Bước 2: Giải nén file zip bạn vừa tải về. Chạy SDK Setup.exe. Tiếp theo cửa sổ
Choose Packages to Install xuất hiện. Nếu cửa sổ này trống rỗng -> Cancel.-> Quay
về cửa sổ Android SDK and AVD manager -> Chọn Setting, đánh dấu vào ô Force
https://...-> Chọn Available Packages
Hình 2.9: SDK và AVD Manager
Bước 3: Đánh dấu các Packages bạn muốn tải: Documents chính là phần Javadoc
mô tả hoạt động của các phương thức và các lớp (phần này chắc chắn không thể
thiếu rồi), Sample là các đoạn code mẫu, SDK Platform ứng với các phiên bản hệ
điều hành (2.2 - API level 8, 2.1 - API level 7,...), và Google API để phát triển các
phần mềm liên quan đến dịch vụ của Google (như Google Map nếu bạn muốn lập
trình liên quan đến GPS).Các bạn có thể tải hết nếu thích, còn muốn tối ưu thì có thể
đánh dấu như tôi (lưu ý USB drivers chỉ dành cho người sử dụng Windows và muốn
phát triển ứng dụng test bằng điện thoại thật).-> Install Selected-> Install-> Cửa sổ
Install hiện ra.
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 22
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.10: Instal SDK
5.2. Tích hợp Android SDK vào Eclipse
Bước 1: Tải Eclipse nếu bạn chưa có. Mọi người có thể phân vân không biết tải bản
nào cho phù hợp, nhưng theo ý kiến của tôi thì có thể dùng 1 trong 2 bản sau: Eclipse
for Java Developers, hoặc Eclipse for Java and Report Developers.
Bước 2: Khởi chạy Eclipse, vào Help -> Install new softwares.
Chọn Add, gõ vào ô Name tên bạn muốn và Location gõ vào địa chỉ để tải về ADT:
HTML Code:
/>hoặc
HTML Code:
/>SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 23
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
nếu https không hoạt động. Ngoài ra bạn cũng có thể tải thẳng ADT về máy theo link
sau đó chọn Archive và browse tới file
này (lưu ý không giải nén)-> OK-> Check vào phần dưới ô Name (sẽ hiện ra dòng
Developer Tools).
Bước 3: Next, next, Accept, next,...Finish (như Install mọi chương trình bình
thường).
Bước 4: Eclipse -> Windows -> Preferences -> AndroidNhấn nút Browse và chỉnh
đường dẫn tới thư mục của Android SDK bạn tải lúc trước.-> Apply-> OK.
Hình 2.11: Tích hợp Android SDK vào Eclipse
5.3. Android Virtual Device (Emulator)
AVD là máy ảo cho developer phát triển ứng dụng. Để tạo 1 AVD bạn vào Windows
-> Android SDK and AVD Manager -> Virtual Devices chọn New.-> Cửa sổ Create
new AVD hiện ra, bạn điền thông tin cho AVD bạn muốn: Name: Tùy ý (nhưng chỉ
được sử dụng các ký tự "a-z", "A-Z", ".-_", nghĩa là cả khoảng trắng cũng ko đc).
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 24
Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Target: Chọn phiên bản hệ điều hành bạn muốn (thường tôi tạo một Android 1.6 và
một Android 2.2 để test). SD Card: gõ vào Size SD card ảo cho AVD, hoặc chỉnh tới
file đã có sẵn. Nhiều AVD có thể dùng chung 1 Sdcard (chỉ cần tạo lần đầu, các lần
sau chỉnh đường dẫn tới file đó).
Skin: có thể để Default (HVGA) hoặc chọn kích cỡ màn hình bạn muốn. Chỉ cần
quan tâm tới 3 option: HVGA (phân giải 320-480 như G1, G2, i5700...), QVGA
(240-320 như HTC Wildfire...), WVGA854 (480-854 như Milestone, NexusOne...)->
Create AVD.
Hình 2.12: Tạo một AVD mới
5.4. Một số chức năng cần biết khi lập trình Android với Eclipse
- Debug cho ứng dụng Android: Nhiều người chuyển từ J2SE hoặc J2ME sang
Android sẽ ngạc nhiên vì câu lệnh debug kinh điển System.out.println() không còn in
ra trên cửa sổ Console nữa. Google đã thay thế nó bằng Logcat, một cửa sổ ghi lại
SVTH: Lê An GVHD: TS. Ngô Bá Hùng Trang 25