1. Trang chủ
  2. » Luận Văn - Báo Cáo

Lập trình đa phương tiện (Multimedia) trên nền tảng Android

102 1,3K 6
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 102
Dung lượng 1,72 MB

Nội dung

KHÁI NIỆM, LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN ANDROID

Trang 1

MỤC LỤC

CÁC TỪ VIẾT TẮT 4

DANH MỤC HÌNH ẢNH 5

TÓM TẮT 7

ABSTRACT 8

CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN 9

1 GIỚI THIỆU 9

2 MỤC TIÊU CẦN ĐẠT ĐƯỢC 10

3 KHÓ KHĂN 12

4 HƯỚNG GIẢI QUYẾT 13

5 PHẠM VI ĐỀ TÀI 13

7 BỐ CỤC CỦA QUYỂN LUẬN VĂN 14

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 15

1 KHÁI NIỆM, LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN ANDROID .15 1.1 Khái niệm Android 15

1.2 Lịch sử hình thành và phát triển 15

1.3 Lịch sử cập nhật 17

2 MÁY ẢO DALVIK 18

3 KIẾN TRÚC CỦA ANDROID 19

3.1 Tầng ứng dụng 19

3.2 Application framework 20

3.3 Library 20

3.4 Android Runtime 21

3.5 Linux kernel 22

4 ANDROID EMULATOR 22

5 HƯỚNG DẪN CÀI ĐẶT ANDROID VỚI ECLIPSE 23

5.1 Download Android SDK 23

Trang 2

5.2 Tích hợp Android SDK vào Eclipse 25

5.3 Android Virtual Device (Emulator) 26

5.4 Một số chức năng cần biết khi lập trình Android với Eclipse 27

6 CÁC THÀNH PHẦN TẠO NÊN MỘT ỨNG DỤNG ANDROID 28

6.1 AndroidManifest.xml 36

6.2 File R.java 38

7 CHU KỲ ỨNG DỤNG ANDROID 43

7.1 Chu kỳ sống thành phần 43

7.2 Activity Stack 43

7.3 Các trạng thái của chu kỳ sống 44

7.4 Chu kỳ sống của ứng dụng 45

7.5 Các sự kiện trong chu kỳ sống của ứng dụng 45

7.6 Thời gian sống của ứng dụng 46

7.7 Thời gian hiển thị của activity 46

7.8 Các phương thức của chu kỳ sống 46

8 XML TRONG ANDROID 49

9 MULTIMEDIA 55

9.1 Giới thiệu gói android.media 59

9.2 Giới thiệu class android.media.MediaPlayer 60

9.3 Playing audio, video 65

9.4 Giới thiệu lớp android.media.MediaRecorder 71

10 GIỚI THIỆU VỀ ANDROID GRAPHICS 74

10.1 Các lựa chọn khi vẽ đồ họa 74

10.2 Vẽ với Canvas 75

CHƯƠNG 3 PHẦN ỨNG DỤNG 85

1 ĐẶC TẢ BÀI TÓAN 85

3 MỤC TIÊU CẦN ĐẠT ĐƯỢC 86

4 HƯỚNG GIẢI QUYẾT 86

Trang 3

5 SƠ ĐỒ USECASE, SƠ ĐỒ CLASS 86

5.1 Sơ đồ usecase, sơ đồ class giữa các thành phần giao diện 86

5.2 Thông tin các Class 87

6 ĐẶC TẢ CHỨC NĂNG 89

6.1 Chức năng đăng ký thông tin 89

6.2 Chức năng đăng nhập 89

6.3 Chức năng lấy lại mật khẩu đã mất 90

6.4 Chức năng thay đổi mật khẩu 90

6.5 Chức năng chơi cờ ca rô online 90

6.6 Chức năng chat 90

6.7 Chức năng xem thông tin người chơi 90

7 QUÁ TRÌNH ĐÁNH CỜ CA RÔ ONLINE CỦA HAI NGƯỜI CHƠI 91

8 VẼ BÀN CỜ 91

9 GIỚI THIỆU CON ROBOT (BOT) 94

10 GIAO DIỆN GAME ĐÁNH CỜ CA RÔ 95

PHẦN KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 99

1 Kết luận 99

1.1 Kết quả đạt được của nhóm 99

1.2 Kết quả đạt được của cá nhân 99

2 Hướng phát triển 100

TÀI LIỆU THAM KHẢO 101

Trang 4

CÁC TỪ VIẾT TẮT

API - Application programming interface

ROBOT hay BOT - Xem chương 3 mục 9

TCP/IP - Transmission Control Protocol/ Internet Protocol

Trang 5

DANH MỤC HÌNH ẢNHChương 2

Hình 2.2: Cấu trúc stack hệ thống Android Trang 19

Hình 2.11: Tích hợp Android SDK vào Eclipse Trang 26

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.16: Các Action đã được định nghĩa sẵn trong Intend Trang 36

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ụng Trang 47

Trang 6

Hình 2.25: RelativeLayout Trang 53

Hình 2.28: Sơ đồ lớp android.media.MediaPlayer Trang 61

Hình 2.30: sơ đồ lớp android.media.Mediarecorder Trang 72

Chương 3

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.4: Sơ đồ tuần tự vẽ bàn chơi game online Trang 92

Trang 7

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ọithô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 độngcần phải hỗ trợ được đa phương tiện để được coi là một thiết bị sử dụng đa phươngtiệ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 choAndroid 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ớiviệ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) Trongquyể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ọabằ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

Trang 8

ABSTRACT

Today people use their cell phones for almost everything but phone calls, fromchatting, to surfing the web, to listening to music, and even to watching livestreaming TV Nowadays cell phones need to support multimedia to even beconsidered a usable device In this book we are going to look how you can useAndroid 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 ishow much easier it is to develop Android applications than mobile applicationplatforms This really stands out in the creation of visually appealing UIs andmetaphors, but there is a limit of what can be done with typical Android UIelements (such as those discussed in chapter 2 head 10) In this chapter we aregoing 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 theGraphics API and how graphics work in Android familiar

Trang 9

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ốnghà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ìnhtrong 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ônggiớ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ụngdà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ụngphù hợp và tối ưu đặc biệt dành cho Android (Chẳng hạn như Gameloft bắt taycù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 ứngdụ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ìnhtrực tiếp với Android Market của Google, hoặc thông qua các trang chia sẻ ứngdụ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ảnhồ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ênnề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ộtnề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

Trang 10

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 ứngdụ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ìnhtruyền thống thì quá tốn kém nhất là chi phí để mua sắm một server và chi phí bảotrì 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 đổithô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ộcthả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ềuserver IRC mà không tốn chi phí cho server Vì vậy vấn đề đặt ra là ta phải xâydựng một giao thức dựa vào server IRC, mà nó có thể cho phép những người khácxây dựng game một cách dể dàng, nhanh chóng, và triệt để tài nguyên hệ thốngserver 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 ứngdụ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ảngAndroid 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:

Trang 11

Tên đề tài của từng thành viên trong nhóm:

 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ướiAndroid

 Trương Thiện Thành thực hiện đề tài - Xây dựng khung nền cho trò chơitrê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ảngAndroid

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

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 minhhọa cho trò chơi đối khánggiữa hai người trên hai máyđiện thoạ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áiThanh Tín

TrươngThiệnThành

2 tháng

Trang 12

code trong IRC, chi tiết chotừng message.

- Tìm hiểu cách thức xâydựng giao thức thông quawebsite, đề 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ứcvừ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 đaphương tiện dưới Android

Trong điều kiện thực tế thờigian nghiên cứu có hạn nêntôi chỉ nghiên cứu những thưviện lập trình Multimedia vàGraphics hỗ trợ trực tiếp choviệc thiết kế một ứng dụngđơn giản minh họa việc pháttậ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 onlinetrên thiết bị sử dụngAndroid

- Cài đặt các giao thức lên tròchơi ca rô

Lê An 2 tháng

Trang 13

- 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ớihạ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

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 đốikháng, nó là trò chơi diễn ra giữa hai đối thủ để giành chiến thắng Nói chung cáctrò 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 server Mô hình cần một server game để quản lý thông tin người dùng và hỗ trợ chogame, các client được cài đặt một chương trình chơi game hay còn gọi là gameclient, các game có thể là cờ tướng, cờ vây, cờ carô, …

client-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ườidù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:

Trang 14

- 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ênnề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

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, đồngthờ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

Trang 15

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.

Trang 16

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 Googlemua 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 ChrisWhite

Hình 2.1 Android timeline

Trang 17

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, MarvellTechnology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, SprintNextel, T-Mobile, ARM Holdings, Atheros Communications, Asustek ComputerInc, 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 nhucầ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ànhcho đ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ểnphầ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òngthiết bị này Bộ SDK được thiết kế để cho phép các nhà phát triển “mở rộng, thaythế, 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ừ Eclipse3.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-Mobilecũng công bố chiếc điện thoại Android đầu tiên đó là chiếc T-Mobile G1, chiếcsmartphone đầu tiên dựa trên nền tảng Android Một vài ngày sau đó, Google lạitiếp tục công bố sự ra mắt phiên bản Android SDK release Candidate 1.0 Trongtháng 10 năm 2008, Google được cấp giấy phép mã nguồn mở cho AndroidPlatform

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ácthà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 chocho 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à giaodiệ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àngbuộ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à

Trang 18

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àokhoảng cùng thời gian đó thì Google cũng cho phát hành một phiên vản vá lỗi 1.1củ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ínhnă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ậtnà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ềuhành

 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

Trang 19

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ó saukhi đế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 (JavaVirtual Machine) nhưng thực tế thì hoàn toàn khác Khi nhà phát triển viết một ứngdụng dành cho Android, anh ta thực hiện các đoạn mã trong môi trường Java Sau

Trang 20

đó, 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à dexbytecode "Dex" là từ viết tắt của "Dalvik executable" đóng vai trò như cơ chế ảothực thi các ứng dụ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

Trang 21

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 thanhtrạng thái.

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ởicá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ầngiao 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 ứngdụ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 customalerts trong status bar

Activity Manager được dùng để quản lý chu trình sống của ứng dụng và điềuhướ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ànhphần khác nhau trong hệ thống Android Điều này được thể hiện thông qua nềntảng ứng dụng Android Một số các thư viện cơ bản được liệt kê dưới đây:

Trang 22

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 staticimage files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG

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, highlyoptimized 3D software rasterizer

FreeType - bitmap and vector font rendering.

SQLite - a powerful and lightweight relational database engine available to all

Trang 23

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ònlại của phần mềm stack

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 DevelopmentEnveronment) 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ụngcommand 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 (http://bellard.org/qemu/) được phát triển bởiFabrice Bellard

Tháng 12 năm 2010 thì bản cập nhật Android 2.3 cũng chính thức được Googlegiớ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ươngtiệ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

Trang 24

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

Hình 2.8: Các phiên bản SDK

Trang 25

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ácphần mềm liên quan đến dịch vụ của Google (như Google Map nếu bạn muốn lậptrì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

Trang 26

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:

https://dl-ssl.google.com/android/eclipse/

hoặc

HTML Code:

http://dl-ssl.google.com/android/eclipse/

Trang 27

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 theolink http://dl.google.com/android/ADT-0.9.7.zip sau đó chọn Archive và browse tớifile này (lưu ý không giải nén)-> OK-> Check vào phần dưới ô Name (sẽ hiện radò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àoWindows -> 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ảngtrắng cũng ko đc) Target: Chọn phiên bản hệ điều hành bạn muốn (thường tôi tạo

Trang 28

một Android 1.6 và một Android 2.2 để test) SD Card: gõ vào Size SD card ảo choAVD, 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ầnquan 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ặcJ2ME 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ộtcửa sổ ghi lại toàn bộ hoạt động của hệ điều hành Để mở Logcat, trước tiên các

Trang 29

bạn chọn Window -> Open Perspective -> Debug Nếu ko thấy option Debug thìchọn Other và tìm Debug trong cửa sổ mới hiện ra Sau đó chọn tab Debug mớixuất hiện ở góc trên bên phải của Eclipse (xem hình) Theo kinh nghiệm của tôi thìtốt nhất là Maximize Logcat ra luôn cho dễ quan sát.Cảm nhận ngày xưa khi mới

sử dụng Logcat là rối và khó dùng Nhưng càng về sau tôi càng quen và thấy nótiện hơn Console nhiều, vì Console chỉ đưa ra thông báo do chúng ta gọi, cònLogcat thì đưa cả luôn những thông báo của hệ điều hành, giúp chúng ta nắm được

hệ điều hành đang làm gì, gọi đến cái gì, khởi chạy những gì

- File Explorer của Android:File Explorer là một chức năng hữu íchGoogle đưa vào giúp chúng ta quản lý file trong sd card và cả file system data (chỉquản lý được của emulator, không thể truy nhập system data của thiết bị thật) FEgiúp bạn dễ dàng đưa file vào / lấy file ra trong sdcard ảo của emulator, xóa cơ sở

dữ liệu của chương trình để khởi tạo lại (only emulator) Mở FE bằng cách vàoWindow -> Show View -> Others -> Android -> File Explorer Tôi để FE trong cửa

sổ Debug cho tiện quản lý

- Device của Android: Device cũng là một chức năng hữu ích nữatrong Android giúp bạn quản lý thiết bị ảo cũng như thật của tôi Mở Device bằngcách vào Window -> Show View -> Device hoặc vào Window -> Show View ->Others -> Android -> Device Chức năng tôi thường sử dụng nhất của device làScreen Capture, cực kỳ tiện để lấy ảnh minh họa làm thuyết trình

6 CÁC THÀNH PHẦN TẠO NÊN MỘT ỨNG DỤNG ANDROID

Việc hiểu được các thành phần (component) tạo nên một ứng dụng Android là rấtcần thiết cho việc lập trình Các thành phần này được chia làm 6 loại bao gồm:

1 Activity: hiểu một cách đơn giản thì Activity là nền của một ứng dụng Khi khởi

động một ứng dụng Android nào đó thì bao giờ cũng có một main Activity đượcgọi, hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác.Khởi động một Activity bằng cách dùng Intent có hai cách:

 Khai báo tường minh: cung cấp chính xác thông tin của activity cần gọi (nếucùng ứng dụng chỉ cần cung cấp tên class, nếu ứng dụng khác nhau thì cungcấp tên package, tên class)

VD:

Intent intent = new Intent(getApplicationContext(), TargetActivity.class);startActivity(intent);

Trang 30

 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ệunào, thao tác thuộc nhóm nào… hệ thống sẽ tìm activity tương ứng để khởiđộng.

 Với cách khởi động activity không tường minh, bạn cần biết một chút vềIntent-filter

 Intent-filter sẽ giúp một activity (chung hơn là một thành phần ứng dụng)đăng ký với hệ thống tôi có thể làm được thao tác gì, trong nhóm nào,với loại dữ liệu nào

 Như vậy khi intent và intent-filter khớp nhau, activity sẽ được hệ thốngkhởi động

VD: Đoạn code bên dưới sẽ khởi động một activity nào đó đăng có khả năng xemảnh

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);startActivity(intent);

Tính liên lạc giữa 2 activity

Khi chuyển sang một Activity khác ta có thể gửi kèm dữ liệu trong intent đó nhưsau:

Trang 31

2 Service: Service là 1 trong 4 thành phần chính trong 1 ứng dụng Android

(Activity, Service, BroadcastReceiver, ContentProvider) thành phần này chạy tronghậu trường và làm những công việc không cần tới giao diện như chơi nhạc,download, xử lí tính toán…

Một Service có thể được sử dụng theo 2 cách:

 Nó có thể được bắt đầu và được cho phép hoạt động cho đến khi một ngườinào đó dừng nó lại hoặc nó tự ngắt Ở chế độ này, nó được bắt đầu bằng cách gọiContext.startService() và dừng bằng lệnh Context.stopService() Nó có thể tự ngắtbằng lệnh Service.stopSelf() hoặc Service.stopSelfResult() Chỉ cần một lệnhstopService() để ngừng Service lại cho dù lệnh startService() được gọi ra bao nhiêulần

 Service có thể được vận hành theo như đã được lập trình việc sử dụng mộtInterface mà nó định nghĩa Các người dùng thiết lập một đường truyền tới đốitượng Service và sử dụng đường kết nối đó để thâm nhập vào Service Kết nối nàyđược thiết lập bằng cách gọi lệnh Context.bindService() và được đóng lại bằngcách gọi lệnh Context.unbindService() Nhiều người dùng có thể kết nối tới cùngmột thiết bị Nếu Service vẫn chưa được khởi chạy, lệnh bindService() có thể tùy ýkhởi chạy nó Hai chế độ này thì không tách biệt toàn bộ Bạn có thể kết nối vớimột Service mà nó đã được bắt đầu với lệnh startService() Ví dụ, một Service nghenhạc ở chế độ nền có thể được bắt đầu bằng cách gọi lệnh startService() cùng vớimột đối tượng Intent mà định dạng được âm nhạc để chơi Chỉ sau đó, có thể là khingười sử dụng muốn kiểm soát trình chơi nhạc hoặc biết thêm thông tin về bài háthiện tại đang chơi, thì sẽ có một Activity tạo lập một đường truyền tới Service bằngcách gọi bindService() Trong trường hợp như thế này, stopService() sẽ không thực

sự ngừng Service cho đến khi liên kết cuối cùng được đóng lại

Giống như một Activity, một Service cũng có các phương thức chu kỳ thời gian màbạn có thể cài đặt để kiểm soát những sự thay đổi trong trạng thái của nó Servicechỉ có 3 phương thức được gọi đến trong chu trình sống là:

Trang 32

một luồng và bắt đầu chơi nhạc onCreate(),và sau đó luồng chơi nhạc sẽ dừng lại ởonCreate(), Active lifetime của một Service bắt đầu bằng một lệnh tới onStart().Đâylà phương thức được chuyển giao đối tượng Intent mà đã được thông qua để tớistartService() Service âm nhạc sẽ mở đối tượng Intent để quyết định xem sẽ chơiloại nhạc nào và bắt đầu phát nhạc Không có callback tương đương nào cho thờiđiểm Service ngừng lại – không có phương thức onStop() Các phương thứconCreate() và onDestroy() được gọi cho tất cả các Service dù chúng có được bắtđầu bằng Context.startService() hoặc Context.bindService() hay không Tuy nhiên,onStart() chỉ được gọi ra đối với các Service bắt đầu bằng startService() Nếu mộtService cho phép những Service khác kết nối với nó thì sẽ có thêm các phươngthức callback dành cho Service đó để thực hiện.

IBinder onBind(Intent intent) boolean onUnbind(Intent intent) void onRebind(Intent intent)

Hàm callback onBind() thông qua đối tượng Intent đã đựoc truyền đến bindService

và onUnbind() được chuyển giao đối tượng mà đã được chuyển đến Nếu Serviceđang được chỉ định (binding), onBind() quay trở lại kênh thông tin mà người dùng

sử dụng để tương tác với Service Phương thức onUnbind() có thể yêu cầuonRebind() được gọi nếu một người dùng kết nối với Service

Biểu đồ dưới đây minh họa cho các phương thức callback giành cho một Service

Hình 2.13: Chu trình sống của một Service

Trang 33

Mặc dù, nó phân tách các Service được tạo ra thông qua startService với cácService mà được tạo ra bằng bindService() Hãy nhớ rằng bất kì Service nào, cho

dù nó được khởi tạo như thế nào thì nó vẫn có thể cho phép các người dùng kết nốitới nó một cách hiệu quả nhất, cho nên bất kì Service nào cũng có thể được chỉ địnhthông qua các các phương thức onBind()và onUnbind()

Để hiểu hơn về Service chúng ta hãy làm một ví dụ nhỏ sau:

Đầu tiên, mở file AndroidManifest.xml và tạo một tham chiếu đến class Service

<service android:name=".myservice.MyService"/>

Tiếp theo, tạo một file MyService.java kế thừa từ class Service:

Trong file MyService.java bắt buộc phải override phương thức:

public Ibinder onBinder(Intend intent);

Để có thể start và stop Service thì cũng cần override 2 phương thức là:

protected void onCreate();

protected void onDestroy();

Thêm một biến toàn cục: private Timer timer = new Timer();

Timer thực chất cũng là một Thread Việc bạn sử dụng Timer và Thread hoàn toànkhông có sự khác biệt gì Biến Timer này sẽ được cài đặt vào bên trong hàmonCreate như sau:

3 Content Provider và URI: Trong hệ thống Android tất cả các tài nguyên ngư

Contact, SMS,… đều được lưu trữ vào CSDL SQLite của hệ thống Cũng như các

Trang 34

CSDL khác, CSDL mà hệ thống Android sử dụng để lưu trữ thông tin cũng chophép chúng ta truy vấn dữ liệu như một CSDL MSSQL thông thường Tuy nhiên,trong hệ thống đó chúng ta không cần phải thao tác bằng lệnh SQL nhiều để truyxuất dữ liệu mà thay vào đó Android đã được trang bị một API cho phép người lậptrình có thể dễ dàng truy xuất dữ liệu Đó gọi là ContentProvider ContentProvidercung cấp cho chúng ta một đối tượng con trỏ giúp chúng ta có thể dễ dàng lấy đượcbất cứ dữ liệu lưu trữ nào chỉ cần cung cấp một đường dẫn đúng đến dữ liệu đó.Đường dẫn này còn được gọi là Uri.

 Tạo một Uri:

Uri uri = Uri.parse(“content://com.android.contacts/contacts”);

 Cấu trúc gồm có 4 phần chính như sau:

Phần A: Đây là tiền tố chỉ ra dữ liệu được điều khiển bởi Content Provider và nókhông bao giờ thay đổi

Phần B: Phần này chỉ đến nơi lưu trữ dữ liệu Cũng giống như cấu trúc của một sốđiện thoại thì cái này có thể hình dung nó như là mã quốc gia hoặc cũng có thể coi

nó như là tên của CSDL

Phần C: Phần này chỉ ra loại dữ liệu Chẳng hạn như, dữ liệu contact, dữ liệu SMS,

… Phần này có thể coi nó như là tên của một table

Phần D: Phần này chỉ đến đúng vị trí của dữ liệu, có thể coi phần này như là ID củarow trong table hoặc một dữ liệu nào đó dùng để truy vấn

VD: Uri chỉ đến contact thứ 0 trong CSDL là

content://contacts/people/0

Để có thể thực hiện truy vấn đến vùng dữ liệu được chỉ ra bởi một Uri ta cần có 2đối tượng con trỏ được cung cấp bởi Activity đó là: Cursor và ContentResolver

Để lấy được 2 đối tượng này thì trong Activity sử dụng hàm

getContentResolver() trả về đối tượng ContentResolver

getContentResolver().query(Uri uri); trả về đối tượng Cursor

Trang 35

4 Intent: nền tảng để truyền tải các thông báo Intent được sử dụng để gửi các

thông báo đi nhằm khởi tạo một Activity hay Service để thực hiện công việc bạnmong muốn

 Khái niệm Intend:

 Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của mộtActivity

 Là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiềuActivity, mỗi Activity hoạt động độc lập với nhau và thực hiện những côngviệc khác nhau Intent chính là người đưa thư, giúp các Activity có thể triệugọi cũng như truyền các dữ liệu cần thiết tới một Activity khác Điều nàycũng giống như việc di chuyển qua lại giữa các Forms trong lập trìnhWindows Form

Hình 2.14: Truyền dữ liệu giữa 2 Activity

 Dữ liệu của Intend:

 Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớpandroid.content.Intent

 Các thuộc tính của một đối tượng Intend:

Hình 2.15: Các thuộc tính của Intend

 Các Action được định nghĩa sẵn:

Trang 36

Dưới đây là những hằng String đã được định nghĩa sẵn trong lớp Intent.

Đi kèm với nó là các Activity hay Application được xây dựng sẵn sẽđược triệu gọi mỗi khi Intent tương ứng được gửi (tất nhiên khi đượccung cấp đúng data) VD: Gọi tới một số điện thoại:

Intent dialIntent =

new Intent(Intent.ACTION_DIAL,Uri.parse("tel:123456"));startActivity(dialIntent);

Hình 2.16: Các Action đã được định nghĩa sẵn trong Intend

5 Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới

VD: bạn viết một chương trình thay thế cho phần gọi điện mặc định của Android,khi đó bạn cần một BR để nhận biết các Intent là các cuộc gọi tới

6 Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng

hoạt động Activity, Service, Broadcast Receiver và Content Provider mới là nhữngthành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trongAndroidManifest

6.1 AndroidManifest.xml

Trong bất kì một project Android nào khi tạo ra đều có một fileAndroidManifest.xml, file này được dùng để định nghĩa các screen sử dụng, cácpermission cũng như các theme cho ứng dụng Đồng thời nó cũng chứa thông tin vềphiên bản SDK cũng như main activity sẽ chạy đầu tiên

File này được tự động sinh ra khi tạo một Android project Trong file manifest baogiờ cũng có ba thành phần chính đó là: application, permission và version

Dưới đây là nội dung của một file AndroidManifest.xml

Trang 37

android:icon = “drawable resource”  Ở đây đặt đường dẫn đến file

icon của ứng dụng khi cài đặt VD: android:icon = “@drawable/icon”

Trang 38

android:name = “string”  thuộc tính này để đặt tên cho ứng dụng

Android Tên này sẽ được hiển thị lên màn hình sau khi cài đặt ứngdụng

android:theme = “drawable theme”  thuộc tính này để đặt theme cho

ứng dụng Các theme là các cách để hiển thị giao diện ứng dụng

 Ngoài ra còn nhiều thuộc tính khác…

Permission

Bao gồm các thuộc tính chỉ định quyền truy xuất và sử dụng tài nguyên của ứngdụng Khi cần sử dụng một loại tài nguyên nào đó thì trong file manifest của ứngdụng cần phải khai báo các quyền truy xuất như sau:

File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được sử dụng

để quản lý các thuộc tính được khai báo trong file XML của ứng dụng và các tàinguyên hình ảnh

Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào xảy xalàm thay đổi các thuộc tính trong ứng dụng Chẳng hạn như, bạn kéo và thả một filehình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn đến file đócũng sẽ được hình thành trong file R.java hoặc xoá một file hình ảnh thì đường dẫntương ứng đến hình ảnh đó cũng tự động bị xoá

Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả quátrình xây dựng ứng dụng

Dưới đây là nội dung của một file R.java:

package lean.game.gomoku;

Trang 39

public final class R {

public static final class anim {

public static final int cycle_7=0x7f040000;

public static final int shake=0x7f040001;

}

public static final class array {

public static final int difficulty=0x7f060000;

}

public static final class attr {

}

public static final class color {

public static final int Blue=0x7f070008;

public static final int Red=0x7f070007;

public static final int background=0x7f070002;

public static final int background2=0x7f070000;

public static final int background3=0x7f070001;

public static final int dark=0x7f070005;

public static final int foreground=0x7f070006;

public static final int green=0x7f07000b;

public static final int hilite=0x7f070003;

public static final int light=0x7f070004;

public static final int selected=0x7f070009;

public static final int white=0x7f07000a;

public static final int yellow=0x7f07000c;

}

public static final class drawable {

Trang 40

public static final int a128=0x7f020000;

public static final int a16=0x7f020001;

public static final int a32=0x7f020002;

public static final int a64=0x7f020003;

public static final int cocaro100=0x7f020004;

public static final int hinhnen=0x7f020005;

public static final int icon=0x7f020006;

public static final int o16=0x7f020007;

public static final int o32=0x7f020008;

public static final int o64=0x7f020009;

public static final int osao=0x7f02000a;

public static final int users=0x7f02000b;

public static final int users2=0x7f02000c;

public static final int web=0x7f02000d;

public static final int x128=0x7f02000e;

public static final int x16=0x7f02000f;

public static final int x32=0x7f020010;

public static final int x64=0x7f020011;

}

public static final class id {

public static final int Imgwinner=0x7f090014;

public static final int TextView01=0x7f09000a;

public static final int about_button=0x7f090011;

public static final int about_content=0x7f090000;

public static final int btn_register=0x7f090009;

public static final int cmdlogin=0x7f09000d;

Ngày đăng: 27/04/2013, 08:10

HÌNH ẢNH LIÊN QUAN

1. KHÁI NIỆM, LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN ANDROID - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
1. KHÁI NIỆM, LỊCH SỬ HÌNH THÀNH VÀ PHÁT TRIỂN ANDROID (Trang 13)
Hình 2.1 Android timeline - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.1 Android timeline (Trang 13)
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. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
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 (Trang 17)
Hình 2.2: Cấu trúc stack hệ thống Android - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.2 Cấu trúc stack hệ thống Android (Trang 17)
Hình 2.4: Application Framework - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.4 Application Framework (Trang 18)
Hình 2.4: Application Framework - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.4 Application Framework (Trang 18)
Hình 2.5: Libraries - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.5 Libraries (Trang 19)
Hình 2.5: Libraries - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.5 Libraries (Trang 19)
Hình 2.7: Android emulator - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.7 Android emulator (Trang 21)
5. HƯỚNG DẪN CÀI ĐẶT ANDROID VỚI ECLIPSE - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
5. HƯỚNG DẪN CÀI ĐẶT ANDROID VỚI ECLIPSE (Trang 21)
Hình 2.7: Android emulator - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.7 Android emulator (Trang 21)
Hình 2.8: Các phiên bản SDK - 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 (Trang 22)
Hình 2.8: Các phiên bản SDK - 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 (Trang 22)
Hình 2.10: Instal SDK - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.10 Instal SDK (Trang 23)
Hình 2.10: Instal SDK - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.10 Instal SDK (Trang 23)
Hình 2.11: Tích hợp Android SDK vào Eclipse - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.11 Tích hợp Android SDK vào Eclipse (Trang 24)
Hình 2.11: Tích hợp Android SDK vào Eclipse - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.11 Tích hợp Android SDK vào Eclipse (Trang 24)
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...)-&gt;  Create AVD. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
kin 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...)-&gt; Create AVD (Trang 25)
Hình 2.12: Tạo một AVD mới - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.12 Tạo một AVD mới (Trang 25)
Hình 2.13: Chu trình sống của một Service - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.13 Chu trình sống của một Service (Trang 29)
Hình 2.13: Chu trình sống của một Service - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.13 Chu trình sống của một Service (Trang 29)
Hình 2.15: Các thuộc tính của Intend - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.15 Các thuộc tính của Intend (Trang 32)
Hình 2.15: Các thuộc tính của Intend - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.15 Các thuộc tính của Intend (Trang 32)
Hình 2.14: Truyền dữ liệu giữa 2 Activity - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.14 Truyền dữ liệu giữa 2 Activity (Trang 32)
Hình 2.16: Các Action đã được định nghĩa sẵn trong Intend 5. Broadcast Receiver : thành phần thu nhận các Intent bên ngoài gửi tới - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.16 Các Action đã được định nghĩa sẵn trong Intend 5. Broadcast Receiver : thành phần thu nhận các Intent bên ngoài gửi tới (Trang 33)
Hình 2.16: Các Action đã được định nghĩa sẵn trong Intend 5. Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.16 Các Action đã được định nghĩa sẵn trong Intend 5. Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới (Trang 33)
Hình 2.18: Activity stack - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.18 Activity stack (Trang 41)
Hình 2.19: Các trạng thái của chu kỳ sống - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.19 Các trạng thái của chu kỳ sống (Trang 42)
Hình 2.19: Các trạng thái của chu kỳ sống - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.19 Các trạng thái của chu kỳ sống (Trang 42)
Hình 2.21: Các phương thức chu kỳ sống của ứng dụng - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.21 Các phương thức chu kỳ sống của ứng dụng (Trang 44)
Hình 2.21: Các phương thức chu kỳ sống của ứng dụng - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.21 Các phương thức chu kỳ sống của ứng dụng (Trang 44)
Hình 2.22: FrameLayout - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.22 FrameLayout (Trang 48)
Hình 2.23: LinearLayout - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.23 LinearLayout (Trang 49)
Hình 2.24: RelativeLayout - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.24 RelativeLayout (Trang 49)
Hình 2.25: RelativeLayout - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.25 RelativeLayout (Trang 50)
 Ghi lại video, hình ảnh với các định dạng: 3GPP, MPEG-4, JPEG. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
hi lại video, hình ảnh với các định dạng: 3GPP, MPEG-4, JPEG (Trang 53)
CamcorderProfile Được sử dụng để thiết lập cấu hình cho camera, cho các ứng dụng máy ảnh. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
amcorder Profile Được sử dụng để thiết lập cấu hình cho camera, cho các ứng dụng máy ảnh (Trang 56)
Hình 2.28: Sơ đồ lớp android.media.MediaPlayer - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.28 Sơ đồ lớp android.media.MediaPlayer (Trang 58)
Hình 2.28: Sơ đồ lớp android.media.MediaPlayer - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.28 Sơ đồ lớp android.media.MediaPlayer (Trang 58)
Hình 2.29: new android project - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.29 new android project (Trang 63)
Hình 2.29: new android project - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.29 new android project (Trang 63)
Hình 2.30: sơ đồ lớp android.media.Mediarecorder - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.30 sơ đồ lớp android.media.Mediarecorder (Trang 69)
Hình 2.30: sơ đồ lớp android.media.Mediarecorder - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 2.30 sơ đồ lớp android.media.Mediarecorder (Trang 69)
Trả về cấu hình của kênh âm thanh. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
r ả về cấu hình của kênh âm thanh (Trang 70)
Vẽ một hình vòng cung, vòng cung này sẽ nằm bên trong một hình bầu dục. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
m ột hình vòng cung, vòng cung này sẽ nằm bên trong một hình bầu dục (Trang 77)
Vẽ hình bầu dục mang các đặc tính của Paint - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
h ình bầu dục mang các đặc tính của Paint (Trang 78)
Vẽ hình chử nhật với các bóc được làm tròn. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
h ình chử nhật với các bóc được làm tròn (Trang 79)
Trả về giá trị chiều ngang của màn hình thiết bị. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
r ả về giá trị chiều ngang của màn hình thiết bị (Trang 80)
Hình 3.1: Sơ đồ usecase của hệ thống - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 3.1 Sơ đồ usecase của hệ thống (Trang 83)
5. SƠ ĐỒ USECASE, SƠ ĐỒ CLASS - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
5. SƠ ĐỒ USECASE, SƠ ĐỒ CLASS (Trang 83)
Hình 3.2: Sơ đồ class mức khái niệm mối quan hệ giữa các Activity - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 3.2 Sơ đồ class mức khái niệm mối quan hệ giữa các Activity (Trang 84)
Hình 3.2: Sơ đồ class mức khái niệm mối quan hệ giữa các Activity - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 3.2 Sơ đồ class mức khái niệm mối quan hệ giữa các Activity (Trang 84)
4 Gởi tọa độ quân cờ cho you Nhận quân cờ, hiển thị lên màn hình. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
4 Gởi tọa độ quân cờ cho you Nhận quân cờ, hiển thị lên màn hình (Trang 88)
Hình 3.3: Sơ đồ tuần tự vẽ bàn chơi game online - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 3.3 Sơ đồ tuần tự vẽ bàn chơi game online (Trang 89)
Hình 3.3: Sơ đồ tuần tự vẽ bàn chơi game online - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
Hình 3.3 Sơ đồ tuần tự vẽ bàn chơi game online (Trang 89)
hình ảnh của các quân cờ tương ứng. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
h ình ảnh của các quân cờ tương ứng (Trang 90)
Hình ảnh của các quân cờ tương ứng. - Lập trình đa phương tiện (Multimedia) trên nền tảng Android
nh ảnh của các quân cờ tương ứng (Trang 90)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w