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

Quản lý, giám sát và điều khiển thiết bị bằng phần mềm trên android thông qua mạng điện thoại di động

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 (3.25 MB, 94 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

BÙI THỊ LINH

QUẢN LÝ, GIÁM SÁT VÀ ĐIỀU KHIỂN THIẾT BỊ
BẰNG PHẦN MỀM TRÊN ANDROID THÔNG QUA
MẠNG ĐIỆN THOẠI DI ĐỘNG

LUẬN VĂN THẠC SĨ

Hà Nội - 2012


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

BÙI THỊ LINH

QUẢN LÝ, GIÁM SÁT VÀ ĐIỀU KHIỂN THIẾT BỊ
BẰNG PHẦN MỀM TRÊN ANDROID THÔNG QUA
MẠNG ĐIỆN THOẠI DI ĐỘNG
Ngành:

Công nghệ Điện Tử - Viễn Thông

Chuyên ngành:

Kỹ thuật Điện tử

Mã số:



60 52 70

LUẬN VĂN THẠC SĨ

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS NGÔ DIÊN TẬP

Hà Nội - 2012


5
MỤC LỤC

LỜI CAM ĐOAN ........................................................................................................ 3
LỜI CẢM ƠN ............................................................................................................. 4
CHỮ VIẾT TẮT .......................................................................................................... 7
DANH MỤC CÁC BẢNG ........................................................................................ 10
DANH MỤC CÁC HÌNH VẼ .................................................................................... 10
MỞ ĐẦU ................................................................................................................... 14
CHƢƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID ...................................... 16
1.1. Giới thiệu Android .......................................................................................... 16
1.2. Tính năng Android .......................................................................................... 16
1.3. Kiến trúc Android ........................................................................................... 17
1.3.1. Ứng dụng (Applications) .......................................................................... 17
1.3.2. Nền ứng dụng (Application Framework) .................................................. 18
1.3.3. Thƣ viện (Libraries) ................................................................................. 19
1.3.4. AndroidRuntime ....................................................................................... 20
1.3.5. Linux Kernel ............................................................................................ 21
1.4. Kiến trúcAndroid GUI .................................................................................... 23
1.5. Ứng dụng Android .......................................................................................... 24

1.5.1. Khởi động ứng dụng ................................................................................. 24
1.5.2. Activity Back-Stack ................................................................................. 25
1.5.3. Nhiệm vụ Tasks ....................................................................................... 26
1.5.4. Vòng đời của Activity .............................................................................. 26
1.5.5. Vòng đời của Process ............................................................................... 28
1.5.6. Service ..................................................................................................... 29
CHƢƠNG 2: CÁC GIAO THỨC SỬ DỤNG ............................................................ 30
2.1. Giao thức TCP/IP ............................................................................................ 30
2.1.1. Khái niệm................................................................................................. 30
2.1.2. Mục đích và nguồn gốc ............................................................................ 30
2.1.3. Đặc điểm .................................................................................................. 31
2.1.4. Cấu trúc phân tầng của TCP/IP................................................................. 31
2.1.5. Đóng gói dữ liệu trong TCP/IP ................................................................. 32
2.1.6. Các tầng trong mô hình TCP/IP ................................................................ 33
2.2. Bản tin nhắn ngắn SMS ................................................................................... 35
CHƢƠNG 3: TỔNG QUAN VỀ MẠNG THÔNG TIN DI ĐỘNG (VINAPHONE).. 39
3.1. Cấu trúc, các thành phần chức năng hệ thống GSM ......................................... 39
Bùi Thị Linh – K16D2


6
3.1.1. Cấu trúc hệ thống chuyển mạch ................................................................ 40
3.1.2. Hệ thống trạm gốc .................................................................................... 41
3.1.3. Hệ thống hỗ trợ giám sát OSS .................................................................. 42
3.2. Cấu trúc, các thành phần chức năng hệ thống GPRS/EDGE ............................ 43
3.3. Cấu trúc, các thành phần chức năng hệ thống 3G ............................................ 46
CHƢƠNG 4: GIẢI PHÁP.......................................................................................... 50
4.1. Mô hình giải pháp ........................................................................................... 50
4.1.1. Mô hình có sử dụng máy chủ IP tĩnh ........................................................ 50
4.1.2. Mô hình không sử dụng máy chủ ............................................................. 51

4.2. Lựa chọn mô hình giải pháp ............................................................................ 51
4.3. Thiết kế phần mềm trên Android ..................................................................... 52
4.3.1. Mô hình Usecase ...................................................................................... 52
4.3.2. Mô hình Package ...................................................................................... 53
4.3.3. Mô hình Class cùng mô hình hoạt động chi tiết của từng Modul .............. 54
4.4. Thiết kế phần cứng thiết bị .............................................................................. 90
4.4.1. Yêu cầu phần cứng ................................................................................... 90
4.4.2. Thiết bị sử dụng trong quá trình Demo và kiểm thử .................................. 91
4.5. Thiết kế phần mềm nhúng trên thiết bị. ........................................................... 93
CHƢƠNG 5: KẾT QUẢ VÀ HƢỚNG PHÁT TRIỂN ............................................... 95
5.1. Kết quả ........................................................................................................... 95
5.2. Hƣớng phát triển ............................................................................................. 95
TÀI LIỆU THAM KHẢO.......................................................................................... 96

Bùi Thị Linh – K16D2


7
CHỮ VIẾT TẮT
Chữ viết tắt trong lĩnh vực phần mềm
STT

Từ viết tắt

Thuật ngữ tiếng Anh

Thuật ngữ tiếng Việt

1


ADT

Android Development Tools

Công cụ phát triển phần mềm
Android tích hợp cho Eclipse

2

SDK

Software Development Kits

Bộ phát triển phần mềm

3

API

Application Programming Interface.

Giao diện ứng dụng trong chƣơng
trình phần mềm.

Chữ viết tắt trong lĩnh vực viễn thông
STT

Từ viết tắt

Thuật ngữ tiếng Anh


Thuật ngữ tiếng Việt

1

3GPP

3rd Generation Partnership Project

Dự án hợp tác về di động thế hệ
thứ 3

2

3GPP2

3rd Generation Partnership Project 2

Dự án 2 hợp tác về di động thế hệ
thứ 3

3

AC

Alternating Current

Xoay chiều

4


AMPS

Advance Mobile Phone System

Hệ thống điện thoại tin di động
tiên tiến

5

ATM

Asynchronous Transfer Mode

Chế độ truyền không đồng bộ

6

AUC

Authencation Centre

Trung tâm nhận thực

7

BBU

BaseBand Unit


Khối băng cơ bản

8

BCF

Base Station Control Function

Chức năng điều khiển trạm gốc

9

BG

Border Gateway

Tổng đài cổng giữa 2 giao diện

10

BICC

Bearer Independent Call Control

Điều khiển cuộc gọi độc lập kênh
mang

11

BSC


Base Station Controller

Thiết bị điều khiển trạm gốc

12

BSS

Base Station Subsystem

Hệ thống trạm gốc

13

BTS

Base Transceiver Station

Trạm thu phát gốc

14

CBO

Compact Base Station Outdoor

Trạm gốc đơn tiêu chuẩn ngoài trời

15


CDMA

Code Division Multiple Access

Đa truy nhập phân chia theo mã

16

CDR

charging data record

Bản ghi dữ liệu tính cƣớc

17

CN

Core Network

Mạng lõi

18

CS

Coding Scheme

Mô hình mã hóa


19

D-AMPS

Digital-Advance Mobile Phone
System

AMPS số

20

DBS

Distributed Base Station

Trạm gốc phân bố

21

DC

Discrete Current

Một chiều

Bùi Thị Linh – K16D2


8

22

DSSS

Direct Sequence Spectrum Spread

Trải phổ chuỗi trực tiếp

23

EDGE

Enhanced Data rates for GSM
Evolution

Mạng dữ liệu mở rộng cho hệ
thống GSM

24

EIR

Equipment Identification Register

Bộ ghi nhận dạng thiết bị

25

EMC


Electro-Magnetic Compatibility

Tƣơng thích điện từ trƣờng

26

ETSI

European Telecommunications
Standards Institute

Viện tiêu chuẩn viễn thông châu
Âu

27

FDMA

Frequency Division Multiple Access

Đa truy nhập phân chia theo tần số

28

GGSN

Gateway GPRS Support Node

Nút hỗ trợ GPRS cổng


29

GMSK

Gaussian minimum-shift keying

Khóa dịch pha tối thiểu Gauss

30

GPRS

General Packet Radio Service

Dịch vụ vô tuyến gói chung

31

GSM

Global System for Mobile
Communications

Hệ thống toàn cầu cho thông tin di
động

32

HDR


High Data Rate

Tốc độ số liệu cao

33

HLR

Home Location Register

Bộ ghi định vị thƣởng trú

34

HSDPA

High-Speed Downlink Packet Access

Truy nhập gói đƣờng lên tốc độ
cao

35

HSL

High Speed Link

Đƣờng truyền dẫn báo hiệu tốc độ
cao


36

HSPA

High-Speed Packet Access

Truy nhập gói tốc độ cao

37

HSS

Home subscriber server

Máy chủ quản lý thuê bao thƣờng
trú

38

IDU

Indoor Unit

Khối lắp đặt trong nhà

39

IETF

Internet Engineering Task Force


Ủy ban kỹ thuật Internet

40

IMEI

International Mobile Equipment
Identity

Nhận dạng thiết bị di động quốc tế

41

IN

Intelligent Network

Mạng thông minh

42

ITU

International Telecommunication
Union

Liên minh viễn thông quốc tế

43


LNA

Low Noise Amplifier

Khuyếch đại tạp âm thấp

44

LTE

Long Term Evolution

Mạng phát triển lâu dài trong
tƣơng lai

45

MAC

Medium Access Control

Điều khiển truy nhập phƣơng tiện

46

MBI

Multi-Standard Base Station Indoor


Trạm gốc đa tiêu chuẩn trong nhà

47

MBO

Multi-Standard Base Station Outdoor

Trạm gốc đa tiêu chuẩn ngoài trời

48

MCB

Main Circuit Breaker

Bộ ngắt mạch tự động

Bùi Thị Linh – K16D2


9
49

MCCDMA

Multi Carrier - CDMA

CDMA đa sóng mang


50

MCS

Modulation and coding scheme

Mô hình mã hóa và điều chế

51

ME

Mobile Equipment

Thiết bị di động

52

MGW

Media Gateway

Cổng các phƣơng tiện

53

MIMO

Muliple Input Multiple Output


Công nghệ sử dụng nhiều đầu vào
nhiều đầu ra

54

MMS

Multimedia Messaging Service

Dịch vụ nhắn tin đa phƣơng tiện

55

MS

Mobile Station

Thiết bị di động

56

MSC

Mobile Switching Center

Trung tâm chuyển mạch di động

57

MSS


Mobile SoftSwitch Solution

Giải pháp chuyển mạch mềm di
động

58

N-AMPS

Narrowband-Advance Mobile Phone
System

AMPS băng hẹp

59

ODU

Outdoor Unit

Khối lắp đặt ngoài trời

60

OFDMA

Orthogonal Frequency Division
Multiple Access


Đa truy nhập phân chia theo tần số
trực giao

61

OMC

Operation and Maintenance Center

Trung tâm vận hành và bảo dƣỡng

62

OMC - R

OMC Radio

OMC vô tuyến

63

OMC - S

OMC Switching

OMC chuyển mạch

64

OML


Operation and Maintenance Link

Đƣờng tín hiệu vận hành và bảo
dƣỡng

65

OSS

Operation Support System

Hệ thống hỗ trợ hoạt động

66

PCM

Pulse-code modulation

Điều chế xung mã

67

PCU

Packet Control Unit

Khối điều khiển gói


68

PDC

Personal Digital Cellular

Mạng di động số cá nhân

69

PDC

Personal Digital Cellular

Hệ thống di động số cá nhân

70

PE

Protective Earth

Dây đất bảo vệ

71

PLMN

Public Land Mobile Network


Mạng di động mặt đất công cộng

72

PPS

PrePaid Service

Dịch vụ trả trƣớc

73

PSTN

Public Switched Telephone Network

Mạng điện thoại chuyển mạch
kênh

74

QAM

Quadrature amplitude modulation

Điều chế biên độ cầu phƣơng

75

QPSK


Quadrature Phase Shift Keying

Điều chế dịch pha cầu phƣơng

76

RLC

Radio Link Control

Điều khiển kết nối vô tuyến

77

RNC

Radio Network Controller

Bộ điều khiển mạng vô tuyến

78

RPP

Regional Processor Platform

Nền tảng xử lý vùng

79


RRU

Remote Radio Unit

Khối vô tuyến từ xa

Bùi Thị Linh – K16D2


10
80

RTP

Real Time Transport Protocol

Giao thức truyền tải thời gian thực

81

SCP

Service Control Point

Nút điều khiển dịch vụ

82

SDP


Service Data Point

Nút dữ liệu dịch vụ

83

SGSN

Serving GPRS Support Node

Nút hỗ trợ GPRS phục vụ

84

SMS

Short Message Service

Dịch vụ bản tin ngắn

85

SMSC

Short Message Service Center

Trung tâm dịch vụ bản tin ngắn

86


SS

Switching System

Hệ thống chuyển mạch

87

STM (1)

Synchronous Transport Module

Khối truyền tải đồng bộ

88

STP

Signaling Transfer Point

Điểm chuyển đổi báo hiệu

89

TACS

Total Access Communication System

Hệ thống thông tin truy nhập toàn

bộ

90

TCH

Traffic Channel

Kênh lƣu lƣợng

91

TCP/IP

Transmission Control
Protocol/Internet Protocol

Giao thức điều khiển truyền/Giao
thức liên mạng

92

TDM

Time Division Multiplexing

Ghép kênh phần chia thời gian

93


TDMA

Time Division Multiple Access

Đa truy nhập phân chia theo thời
gian

94

TRAU

Transcoder and Rate Adaptation Unit

Khối chuyển đổi mã và thích ứng
tốc độ

95

TRX

Transceiver

Bộ thu phát

96

TSC

Transit Switching Center


Trung tâm chuyển mạch chuyển
tiếp

97

TSS

Telephony Softswitch Solution

Giải pháp chuyển mạch mềm điện
thoại

98

UE

User Equipment

Thiết bị ngƣời dùng

99

UMB

Ultra Mobile Broadband

Mạng băng rộng di động

100


UMTS

Universal Mobile
Telecommunications System

Hệ thống viễn thông di động toàn
cầu

101

USIM

UMTS Subscriber Identity Module

Mô-dun nhận dạng thuê bao
UMTS

102

UTRAN

UMTS Terrestrial Radio
AccessNetwork

Mạng truy nhập vô tuyến UMTS
mặt đất

103

VLR


Visitor Location Register

Bộ ghi định vị tạm trú

104

VMS

Voice Messaging Service

Dịch vụ nhắn tin thoại

105

VSWR

Voltage Standing Wave Ratio

Tỷ số sóng đứng điện áp

106

WAP

Wireless Application Protocol

Giao thức ứng dụng vô tuyến

107


WCDMA

Wideband Code Division Multiple
Access

Đa truy nhập theo mã băng rộng

108

WiMAX

Worldwide Interoperability for
Microwave Access

Mạng liên kêt toàn cầu với truy
nhập siêu cao tần

Bùi Thị Linh – K16D2


11
DANH MỤC CÁC BẢNG
Bảng 2-1: Bảng giao thức trên các tầng của TCP/IP. .................................................. 33
DANH MỤC CÁC HÌNH VẼ
Hình 1-1: Kiến trúc Android ...................................................................................... 18
Hình 1-2: Quản lý Surface ......................................................................................... 20
Hình 1-3: Quản lý Audio ........................................................................................... 20
Hình 1-4: Khởi tạo Platform ...................................................................................... 21
Hình 1-5: Quá trình IPC ............................................................................................. 22

Hình 1-6: Quản lý năng lƣợng ................................................................................... 23
Hình 1-7: Kiến trúc Android GUI .............................................................................. 23
Hình 1-8: Activity back stack .................................................................................... 25
Hình 1-9: Background và Foreground Task ............................................................... 26
Hình 1-10: Vòng đời của Activity .............................................................................. 27
Hình 1-11: Lƣu trạng thái Activity ............................................................................. 28
Hình 2-1: Giao thức TCP/IP ...................................................................................... 32
Hình 2-2: Cấu trúc gói Dữ liệu. .................................................................................. 32
Hình 2-3: Mô Hình TCP/IP. ....................................................................................... 33
Hình 2-4: Quan hệ giữa MS và SC ............................................................................. 36
Hình 2-5: Quá trình gửi tin MO trong mạng GSM ..................................................... 36
Hình 2-6: Quá trình gửi tin MT trong mạng GSM ...................................................... 37
Hình 2-7: Vòng đời của tin nhắn ................................................................................ 38
Hình 3-1: Cấu trúc hệ thống thông tin di động trong hệ thống GSM .......................... 39
Hình 3-2: Cấu trúc ghép nối TRAU tại BTS, BSC, MSC ........................................... 42
Hình 3-3: Sơ đồ kết nói các thành phần mạng lõi GSM/GPRS/EDGE của Vinaphone 43
Hình 3-4: Sơ đồ các khối chức năng hệ thống GPRS/EDGE kết hợp với GSM .......... 44
Hình 3-5: Sơ đồ kết nối mạng lõi 3G theo 3GPP Release 4 ........................................ 46
Hình 3-6: Sơ đồ kết nối mạng lõi Vinaphone khi triển khai 3G .................................. 49
Hình 4-1: Mô hình điều khiển có sử dụng Server ....................................................... 50
Hình 4-2: Mô hình điều khiển không sử dụng Server ................................................. 51
Bùi Thị Linh – K16D2


12
Hình 4-3: Mô hình Usecase của phần mềm điều khiển ............................................... 52
Hình 4-4: Mô hình Package của phần mềm điều khiển............................................... 53
Hình 4-5: Biểu đồ Main class và giao diện ................................................................. 54
Hình 4-6: Biểu đồ hoạt động hàm onCreate() trong Class MainActivity .................... 55
Hình 4-7: Biểu đồ ServiceManager class ................................................................... 55

Hình 4-8: Biểu đồ hoạt động hàm onCreate() trong ServcieManage class .................. 56
Hình 4-9: Intent xử lý sự kiện nhận SMS trong ServiceManager class ....................... 56
Hình 4-10: Biểu đồ hoạt động hàm processMessage() trong ServiceManage class ..... 57
Hình 4-11: Biểu đồ hoạt động hàm checkPhoneExist() của ServiceManager class ..... 57
Hình 4-12: Biểu đồ hoạt động hàm storeSMSContent của ServiceManager class ....... 58
Hình 4-13: Biểu đồ hoạt động hàm getPhoneOrDescription() .................................... 58
Hình 4-14: Biểu đồ SMSReceiver class ..................................................................... 59
Hình 4-15: Biểu đồ hoạt động hàm oReceive() của SMSReceiver class ..................... 59
Hình 4-16: Biểu đồ class của DeviceManager ............................................................ 60
Hình 4-17: Giao diện quản lý và thêm thiết bị ............................................................ 61
Hình 4-18: Màn hình ContextMenu và cập nhật mô tả thiết bị ................................... 61
Hình 4-19: Biểu đồ hoạt động hàm onCreate() của DeviceTabActivity class ............. 62
Hình 4-20: Biểu đồ hoạt động hàm onCreate() của AddDeviceActivity class ............. 62
Hình 4-21: Biểu đồ hoạt động hàm onCreateDialog của AddDeviceActivity class ..... 63
Hình 4-22: Biểu đồ hoạt động hàm loadPhoneInfoList() của AddDevieActivity class 63
Hình 4-23: Biểu đồ hoạt động hàm addPhoneNumber() của AddDeviceActivity class64
Hình 4-24: Biểu đồ hoạt động hàm removePhoneNumber ......................................... 64
Hình 4-25: Biểu đồ hoạt động hàm updatePhoneDescription() ................................... 65
Hình 4-26: Biểu đồ hoạt động hàm clearPhoneList() của AddDeviceActivity class.... 65
Hình 4-27: Biểu đồ hoạt động hàm importPhoneList() của AddDeviceActivity class . 66
Hình 4-28: Biểu đồ hoạt động hàm getPhoneOrDescription ....................................... 66
Hình 4-29: Biểu đồ hoạt động hàm clearPhoneData() của AddDeviceActivity class .. 67
Hình 4-30: Biểu đồ hoạt động hàm isMyServiceRunning() ........................................ 67
Hình 4-31: Hàm onCreateContextMenu() của AddDeviceActivity class .................... 68
Hình 4-32: Biểu đồ hoạt động hàm onContextItemSelected() .................................... 68
Bùi Thị Linh – K16D2


13
Hình 4-33: Biểu đồ hoạt động hàm onCreateOptionMenu() ....................................... 69

Hình 4-34: Biểu đồ hoạt động hàm onPrepareOptionsMenu() .................................... 69
Hình 4-35: Biểu đồ hoạt động hàm onOptionsItemSelected() .................................... 70
Hình 4-36: Biểu đồ hoạt động hàm isExistPhone() của AddDeviceActivity class....... 70
Hình 4-37: Biểu đồ hoạt động hàm inputPhoneInfo() của AddDeviceActivity class ... 71
Hình 4-38: Biểu đồ class của DeviceCommand ......................................................... 72
Hình 4-39: Giao diện của DeviceCommand và thêm một Command.......................... 72
Hình 4-40: Giao diện ContextMenu, cập nhật và xác nhận truyền một Command ...... 73
Hình 4-41: Biểu đồ hoạt động hàm onCreate của DeviceCommandActivity class ...... 73
Hình 4-42: Biểu đồ hoạt động hàmloadCommandInfoList() ...................................... 74
Hình 4-43: Biểu đồ hoạt động hàm addCommandName() .......................................... 74
Hình 4-44: Biểu đồ hoạt động hàm removeCommandName() .................................... 75
Hình 4-45: Biểu đồ hoạt động hàm updateCommandContent ..................................... 75
Hình 4-46: Biểu đồ hoạt động hàm clearCommandList() ........................................... 76
Hình 4-47: Biểu đồ hoạt động hàm onCreateContextMenu()...................................... 76
Hình 4-48: Biểu đồ hoạt động hàm onContextItemSelected() .................................... 77
Hình 4-49: Biểu đồ hoạt động hàm getCommandOrContent ...................................... 77
Hình 4-50: Biểu đồ hoạt động hàm isExistCommand() .............................................. 78
Hình 4-51: Biểu đồ hoạt động hàm inputCommand() ................................................. 78
Hình 4-52: Biểu đồ hoạt động hàm onCreateDialog() ................................................ 79
Hình 4-53: Biểu đồ hoạt động hàm sendCommandControl ........................................ 79
Hình 4-54: Biểu đồ hoạt động hàm sendSMS() của DeviceCommandActivity class .. 80
Hình 4-55: Biểu đồ class của DeviceContent ............................................................. 80
Hình 4-56: Giao diện quản lý nội dung các message của thiết bị (khi chƣa có dữ liệu)81
Hình 4-57: Biểu đồ hoạt động hàm getListValues() của DeviceContentActivity class 81
Hình 4-58: Biểu đồ hoạt động hàm onCreate() của DeviceContentActivity class ....... 82
Hình 4-59: Biểu đồ hoạt động hàm loadSMSContentList() ........................................ 82
Hình 4-60: Biểu đồ hoạt động hàm updateData() của DeviceContentActivity class.... 83
Hình 4-61: Biểu đồ hoạt động hàm loadSMSDateList() ............................................. 84
Hình 4-62: Biểu đồ class của DeviceReportActivity .................................................. 84
Bùi Thị Linh – K16D2



14
Hình 4-63: Giao diện báo cáo và các dạng biểu đồ thống kê ...................................... 85
Hình 4-64: Thêm các dạng biểu đồ thống kê .............................................................. 85
Hình 4-65: Biểu đồ hoạt động hàm onCreate() của DeviceReportActivity class ......... 86
Hình 4-66: Biểu đồ hoạt động hàm getListValue() của DeviceReportActivity class ... 86
Hình 4-67: Biểu đồ Connection class ......................................................................... 87
Hình 4-68: Biểu đồ hoạt động hàm khởi tạo của Connection class ............................. 87
Hình 4-69: Biểu đồ hoạt động hàm open() của Connection ........................................ 88
Hình 4-70: Biểu đồ hoạt động hàm sendCloseSignal() của Connection class ............. 88
Hình 4-71: Biểu đồ hoạt động hàm close() của Connection class ............................... 89
Hình 4-72: Biểu đồ hoạt động hàm write() của Connection class ............................... 89
Hình 4-73: Biểu đồ mô hình hóa thiết bị điều khiển tiêu chuẩn .................................. 90
Hình 4-74: Khối nguồn .............................................................................................. 91
Hình 4-75: Khối vi điều khiển trung tâm .................................................................... 92
Hình 4-76: Khối hiển thị ............................................................................................ 92
Hình 4-77: Khối nhập liệu ......................................................................................... 92
Hình 4-78: Khối giao tiếp .......................................................................................... 93
Hình 4-79: Biểu đồ tuần tự quá trình giao tiếp giữa thiết bị với phần mềm trên Android94

Bùi Thị Linh – K16D2


15
MỞ ĐẦU
Trong những năm gần đây, cùng với sự phong phú về chủng loại, cấu hình và giá
thành, điện thoại Android đã trở nên phổ biến và xâm nhập ngày càng sâu rộng tới
ngƣời sử dụng trên toàn thế giới. Có lẽ lý do giúp cho “dế” Android phát triển nhanh
chính là có một hệ điều hành đƣợc ngƣời dùng ƣa chuộng nhất. Sở dĩ hệ điều hành

Android thu hút đƣợc sự chú ý đó vì chúng đƣợc tạo nên từ nền tảng nguồn mở, cho
phép ngƣời dùng có thể tùy biến nhiều trên đó. Mặt khác, với Android thiết bị ngƣời
dùng không đòi hỏi phải có một cầu hình tối thiểu nào cả. Chúng có thể hoạt động trên
mọi cấu hình, máy có hỗ trợ cảm ứng hay không, cũng nhƣ tƣơng thích với mọi nhà
sản xuất thiết bị phần cứng [9].
Bên cạnh đó, các thiết bị trong công nghiệp, dân sự cũng nhƣ quốc phòng ngày
càng đa dạng, hiện đại, với sự trải rộng của không gian vận hành, cho nên việc quản
lý, giám sát và điều khiển chúng thông minh, linh hoạt là yêu cầu thiết yếu.
Thêm nữa, nền tảng di động trong xã hội hiện tại đã đạt tới mức phổ biết cũng
nhƣ những tiện ích, dịch vụ mà nó mang lại là vô cùng phong phú, đây chính là cơ sở
thuận lợi hƣớng tới một xã hội kết nối, khả năng đƣa con ngƣời có thể kiểm soát các
thiết bị, dịch vụ mình làm ra trong quy mô rộng lớn. Năng suất lao động cũng từ đó mà
có những bƣớc nhảy vọt.
Đó cũng là lý do tôi chọn đề tài: “Quản lý, giám sát và điều khiển thiết bị bằng
phần mềm trên Android qua mạng điện thoại di động”.
Đề tài đƣợc trình bày thành5 chƣơng:
Chƣơng 1: Tổng quan về hệ điều hành Android.
Chƣơng 2: Các giao thức sử dụng.
Chƣơng 3: Tổng quan về mạng thông tin di động (Vinaphone).
Chƣơng 4: Giải pháp.
Chƣơng 5: Kết quả và Hƣớng phát triển.

Bùi Thị Linh – K16D2


16

CHƢƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH ANDROID
Hệ điều hành Android đã đƣợc mô tả chi tiết trong các tài liệu tham khảo [5-7],
tuy nhiên, để có cái nhìn tổng quan về vấn đề này, dƣới đây là những trình bày tóm tắt.

1.1. Giới thiệu Android
Android làhệ điều hành dành cho điện thoại di động,đƣợc xây dựng dựa trên nền
Linux. Trƣớc đây hệ điều hành này thuộc sở hữu của Android Inc, Google đã mua lại
hệ điều hành này tại thời điểm phát triển ban đầu (năm 2005) và tiếp tục phát triển nó
nhƣ một phần của chiến lƣợc để bƣớc vào không gian di động.
Google Android là hệ điều hành mở, hoàn thiện và miễn phí đầu tiên. Sự ra đời
của nó gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78
công ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở
cho điện thoại di động trong tƣơng lai. Các nhà cung cấp (thƣờng là các nhà sản xuất
phần cứng) có thể thêm phần mở rộng cho Android và tùy biến Android để phân biệt
sản phẩm của họ với những ngƣời khác. Mô hình này phát triển đơn giản làm cho
Android rất hấp dẫn và do đó đã khơi dậy sự quan tâm của nhiều nhà cung cấp.
1.2. Tính năng Android
Androidlà mã nguồn mở và miễn phí cho các nhà sản xuất tuỳ biến, có nghĩa là
không có phần cứng cố định và cấu hình phần mềm. Tuy nhiên, Android tự bản thân
nó đã hỗ trợ các tính năng sau đây:
 Lƣu trữ - Sử dụng SQLite, một cơ sở dữ liệu quan hệ, trọng lƣợng nhẹ cho dữ
liệu lƣu trữ.
 Kết nối - Hỗ trợ GSM / EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth (bao
gồm A2DP và AVRCP), WiFi, LTE và WiMAX.
 Tin nhắn - Hỗ trợ cả SMS và MMS.
 Trình duyệt web - Dựa trên WebKit mã nguồn mở, cùng với V8 JavaScript của
Chrome.
 Truyền thông hỗ trợ - Bao gồm hỗ trợ cho các phƣơng tiện truyền thông sau
đây: H.263, H.264 (trong 3GP hoặc MP4 container), MPEG-4 SP, AMR,
AMR-WB, AAC, HE-AAC, MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG,
GIF và BMP.
 Hỗ trợ phần cứng - Accelerometer cảm biến, máy ảnh, kỹ thuật số Compass,
Cảm biến tiệm cận và GPS.
 Multi-touch - Hỗ trợ màn hình cảm ứng đa điểm.

 Đa chức năng - Hỗ trợ các ứng dụng đa tác vụ.
 Hỗ trợ Flash - Android 2.3 hỗ trợ Flash 10.1.
 Tethering - Hỗ trợ chia sẻ kết nối Internet là một điểm nóng không dây/có dây.
Bùi Thị Linh – K16D2


17
Tất cả các ứng dụng có sẵn đều đƣợc viết bằng ngôn ngữ Java và sử dụng
Android SDK (Software Development Kit).
Bộ SDK của Android bao gồm mọi thứ cần thiết giúp bạn có thể lập trình, debug
và test ứng dụng Android.
 Android API Cốt lõi của bộ SDK là thƣ viện các API và Google cũng chỉ sử
dụng bộ API này để xây dựng các ứng dụng có sẵn cho Android (native
application).
 Development Tool SDK bao gồm rất nhiều công cụ giúp biên dịch, sửa lỗi và
hỗ trợ trong việc lập trình ứng dụng.
 Android Emulator Trình giả lập một thiết bị chạy Android thực sự với nhiều
skin thay thế, cực kì tiện lợi cho việc test ứng dụng Android ngay trên máy
tính mà không cần phải thông qua một thiết bị chạy Android thực.
 Tài liệu SDK bao gồm bộ tài liệu rất chi tiết, giải thích cặn kẽ, chính xác những
gì bao gồm trong mỗi package, class cùng với cách sử dụng chúng. Ngoài tài
liệu về “code”, còn có những tài liệu dùng để “getting started” và giải thích
các nguyên tắc về cơ chế hoạt động của ứng dụng trong Android.
 Code mẫu SDK bao gồm các ứng dụng mẫu đơn giản minh họa cho các tính
năng nổi bật trên Android, cũng nhƣ các ứng dụng demo cách sử dụng những
tính năng của bộ API.
Đối với Eclipse IDE (Integrated Development Environment), Google cung cấp
một plug-in giúp kết hợp chặt chẽ giữa Eclipse với Android Emulator cũng nhƣ công
cụ debug. Điều này giúp cho việc phát triển ứng dụng cho Android bằng Eclipse thực
sự trở nên đơn giản.

1.3. Kiến trúc Android
Các lớp khác nhau tạo nên hệ điều hành Android đƣợc miêu tả ở hình 1-1.
1.3.1. Ứng dụng (Applications)
Các ứng dụng Android đƣợc viết bằng ngôn ngữ lập trình Java và chạy bên trong
một máy ảo (VM). Điều quan trọng cần lƣu ý rằng máy ảo không phải là một JVM
nhƣ chúng ta có thể mong đợi, nhƣng là Dalvik Virtual Machine, một công nghệ mã
nguồn mở. Mỗi ứng dụng Android chạy trong một thể hiện của các máy ảo Dalvik, là
nơi cƣ trú của một quá trình quản lý Linux kernel. Một số ứng dụng cơ bản bao gồm
lịch, ứng dụng email, chƣơng trình tin nhắn SMS, bản đồ, thực hiện cuộc gọi điện
thoại, truy cập trình duyệt Web, truy cập danh bạ điện thoại.

Bùi Thị Linh – K16D2


18

Hình 1-1: Kiến trúc Android
1.3.2. Nền ứng dụng (Application Framework)
Đây là lõi hay là nền tảng mà tất cả những nhà phát triển Android đều phải theo.
Các nhà phát triển có thể truy cập vào tất cả các framework API cơ bản của các chức
năng của một điện thoại nhƣ quản lý phân bổ tài nguyên, chuyển đổi giữa các quy
trình hoặc các chƣơng trình, các ứng dụng điện thoại và theo dõi lƣu giữ vị trí của điện
thoại. Về cơ bản tất cả các ứng dụng đều là một tập hợp các dịch vụ và các hệ thống,
bao gồm:
 Quản lý Activity.
 Quản lý cửa sổ (màn hình).
 Cung cấp nội dung.
 Hệ thống View.
 Quản lý gói tin.
 Quản lý điện thoại.

 Quản lý nguồn tài nguyên.
 Quản lý vị trí.
 Quản lý thông báo.
Trong đó:
 Một tập phong phú và đa dạng Views có thể đƣợc sử dụng để xây dựng một
ứng dụng, bao gồm lists, grids, text boxes, buttons và thậm chí một trình
duyệt web nhúng.
Bùi Thị Linh – K16D2


19
 Cung cấp nội dung cho phép các ứng dụng truy cập dữ liệu từ các ứng dụng
khác (nhƣ Contacts) hoặc để chia sẻ dữ liệu riêng của chúng.
 Quản lý nguồn tài nguyên, cung cấp quyền truy cập vào tài nguyên phi mã
nguồn nhƣ chuỗi, đồ họa và các lớp tập tin.
 Quản lý thông báo cho phép tất cả các ứng dụng để hiển thị thông báo tùy chỉnh
trong thanh trạng thái.
 Quản lý Activity, quản lý vòng đời của ứng dụng và cung cấp một stack (ngăn
xếp), back-stack.
Kiến trúc đƣợc thiết kế để đơn giản hóa việc tái sử dụng của các thành phần.
Hiểu cách khác framework ứng dụng nhƣ là một tập các công cụ cơ bản mà một nhà
phát triển có thể xây dựng các công cụ phức tạp hơn nhiều.
1.3.3. Thƣ viện (Libraries)
Lớp này bao gồm thƣ viện của Android đƣợc viết bằng C, C++ và đƣợc sử dụng
bởi các thành phần khác nhau của hệ thống Android. Các nhà phán triển truy cập
những tính năng cung cấp bởi các thƣ viện thông qua Framework ứng dụng Android.
Một số các thƣ viện này bao gồm các phƣơng thức truyền thông (media), đồ họa, 3D,
SQLite, thƣ viện trình duyệt web…
 Hệ thống thƣ viện C (Android Libc implementation): Kế thừa các hệ thống
thƣ viện chuẩn C (LIBC), tối ƣu hóa để sử dụng trong các thiết bị nhúng trên

nền Linux
 Theo giấy phép BSD.
 Kích thƣớc nhỏ và dẫn xuất mã nhanh.
 Tùy chỉnh nhanh thực hiện pthread.
 Đƣợc xây dựng - trong hỗ trợ cho Android-dịch vụ cụ thể (thuộc tính hệ
thống, khả năng đăng nhập).
 Không hỗ trợ một số tính năng POSIX.
 Lƣu trữ, dựng hình, đa phƣơng tiện (Media Library): Cung cấp các tính
năng chính trên nền tảng Android:
 SQLite, một hệ thống quản lý cơ sở dữ liệu quan hệ đơn giản (không
IPC, tập tin đơn giản).
 WebKit, một framwork ứng dụng cung cấp nền tảng cho việc xây dựng
một trình duyệt web.
 Media Framework, dựa trên nền tảng PacketVideo openCORE (codec).
 Tối ƣu hóa thƣ viện đồ họa 2D / 3D dựa trên OpenGL ES.
 Quản lý giao diện (Surface Manager): Cung cấp một hệ thống rộng các
surface để có thể tạo ra tất cả các surface trong một bộ khung đệm:
 Kết hợp surface 2D và 3D.

Bùi Thị Linh – K16D2


20
 Có thể sử dụng OpenGL ES và bộ tăng tốc phần cứng 2D cho các thành
phần của nó.

Hình 1-2: Quản lý Surface
 Quản lý âm thanh (Audio Manager): Quá trình nhiều dòng âm thanh trong
đƣờng âm ra PCM.
 Xử lý các loại khác nhau của các thiết bị (tai nghe, loa ngoài…).

 Chuyển hƣớng dòng âm với đầu ra quy định.

Hình 1-3: Quản lý Audio
 Thƣ viện trừu tƣợng phần cứng (Hardware Abstraction Libraries): Chỉ rõ
giao diện phần cứng mà Androidđòi hỏi để vận hành.
 Đặt tiêu chuẩn hóa APIs các nhà phát triển sẽ phải thực hiện.
 Có sẵn cho tất cả các thành phần một nhà sản xuất có thể tích hợp trên
nền tảng Android của nó.
1.3.4. AndroidRuntime
Lớp này bao gồm các thiết lập của các thƣ viện cơ sở đƣợc yêu cầu cho các thƣ
viện java. Mỗi ứng dụng Android đƣợc ví nhƣ của riêng máy ảo Dalvik. Dalvik đã
đƣợc viết để một thiết bị có thể chạy nhiều máy ảo hiệu quả và thực hiện các tập tin
thực thi (. Dex) tối ƣu hóa cho bộ nhớ tối thiểu.
Dalvik máy ảo: Một máy ảo chỉ thông dịch (không có JIT), thiết lập cơ bản.
 Tối ƣu hóa cho các yêu cầu bộ nhớ thấp.
 Đƣợc thiết kế để cho phép nhiều máy ảo để chạy một lúc.
 Dựa vào hệ điều hành cơ bản cho quá trình cách ly, quản lý bộ nhớ và hỗ trợ
luồng.

Bùi Thị Linh – K16D2


21
 Thực hiện chƣơng trình chạy Dalvik (DEX) các tập tin đƣợc nén vào một gói
Android (APK).
1.3.5. Linux Kernel
Lớp này bao gồm các chƣơng trình quản lý bộ nhớ của Android, thiết lập bảo
mật, phần mềm quản lý điện năng và một số trình điều khiển cho phần cứng, truy cập
tập tin hệ thống, mạng và các quá trình giao tiếp. Kernel cũng hoạt động nhƣ một lớp
trừu tƣợng giữa phần cứng và phần còn lại của stack phần mềm.

Linux 2.6.24phù hợp cho Android:
 Một số tính năng phổ biến đã đƣợc loại bỏ:
 Không có hỗ trợ GBLIC.
 Không có hệ thống cửa sổ gốc.
 Không bao gồm các thiết lập đầy đủ các tiện ích Linux.
 Android, thành phần cụ thể đã đƣợc thêm vào:
 Báo thức, chia sẻ bộ nhớ Android.
 Kernel Memory Killer, Kernel Debugger, Logger.
Khởi tạo Platform

Hình 1-4: Khởi tạo Platform
Bùi Thị Linh – K16D2


22
(A) Bootloader tải các phần cơ bản (Kernel) và bắt đầu quá trình "Init".
(B) "Daemons" xử lý các giao diện phần cứng mức thấp bắt đầu hoạt động (USB,
ADB, trình gỡ lỗi, phát thanh). Sau đó, "Zygote", khởi tạo quá trình thiết lập máy ảo
Dalvik và "Runtime" khởi tạo quá trình "Quản lý dịch vụ", một yếu tố quan trọng cho
"Binders" và IPC (Inter Process Communication).
(C) "Runtime": xử lý yêu cầu "Zygote" để bắt đầu một thể hiện mới của Dalvik
chạy "System Server".
(D) Hai quá trình đầu tiên có khả năng xử lý đồ họa và âm thanh đầu ra.
(E) Tất cả các thành phần khác của Android sau đó đƣợc khởi động.
(nhƣ hình 1-4)
Quá trình giao tiếp trong (Inter Process Communication IPC):
Process A

Process B


App A

Context

Binder Driver

Service B

get Service
Service
call foo (object)
Marshal proxy object

replay to IPC threads
call return

Hình 1-5: Quá trình IPC
Trong Android, ứng dụng và dịch vụ đƣợc tách biệt rõ ràng, do đó nó yêu cầu
một IPC thực sự nhỏ gọn. Cơ chế IPC trong Android đƣợc gọi là Binder và đƣợc dựa
trên bộ nhớ chia sẻ. Nhƣ ở trên đã đề cập, khi một quá trình bắt đầu, nó đăng ký bản
thân nó với “Quản lý dịch vụ”. Điều này xảy ra bên trong và về đăng ký, mỗi một quá
trình nhận đƣợc đối tƣợng Context - một tham chiếu tới “Quản lý dịch vụ”. Bây giờ,
khi ứng dụng A cần giao tiếp với dịch vụ B và hai quá trình này chạy trong hai quá
trình riêng biệt. Để làm đƣợc điều này, ứng dụng A yêu cầu Context cho dịch vụ B
bằng cách gửi tên các dịch vụ. Context trả về tham chiếu từ dịch vụ tới A, trên A có
thể gọi một phƣơng thức - gọi là foo. Gọi phƣơng thức này bị chặn bởi trình điều khiển
Binder. Trình điều khiển sắp xếp các đối tƣợng và cho qua các tham chiếu của nó tới
chỗ nhận B. Chú ý rằng ở đây cho qua tham chiếu chứ không phải giá trị, trong đó đối
Bùi Thị Linh – K16D2



23
tƣợng đƣợc sắp xếp. Về phía dịch vụ B, Binder duy trì một chủ đề chung (rõ ràng với
dịch vụ). Một trong các chủ đề trong nhóm chung là nhận cuộc gọi đến, xác định đƣợc
đối tƣợng thực tế trong dịch vụ B và thực hiện cuộc gọi. Giá trị trả về đƣợc gửi lại cho
ngƣời nhận tƣơng tự nhƣ vậy:
Quản lý năng lƣợng:
Căn cứ vào quản lý nguồn điện tiêu chuẩn của Linux, Androidvẫn có thành
phần riêng của mình.
 Ứng dụng sử dụng thƣ viện không gian ngƣời sử dụng để thông báo khuôn khổ
về hạn chế của nó.
 Hạn chế đƣợc thực hiện bằng cách sử dụng cơ chế khóa.

Hình 1-6: Quản lý năng lượng
1.4. Kiến trúcAndroid GUI
Android GUI là một luồng đơn, hƣớng sự kiện và xây dựng trên một thƣ viện của
các thành phần nestable. Nền tảng của Android GUI là đƣợc tổ chức theo mô hình phổ
biến Model-View-Controller.

Hình 1-7: Kiến trúc Android GUI
Model: Model đại diện cho dữ liệu hoặc chứa dữ liệu. Chúng ta có thể thấy nó
nhƣ là một cơ sở dữ liệu của hình ảnh trên thiết bị. Có thể ví dụ, khi ngƣời dùng nghe
một tập tin âm thanh, khi nhấp chuột vào button và nó kích hoạt sự kiện trong ứng
Bùi Thị Linh – K16D2


24
dụng, bây giờ các ứng dụng sẽ có đƣợc dữ liệu từ dữ liệu lƣu trữ hoặc cơ sở dữ liệu và
nhƣ mỗi đầu vào và tạo ra dữ liệu để đƣợc gửi trở lại cho ngƣời sử dụng. Đây chính là
chế độ Model.

View: View là một phần của các ứng dụng chịu trách nhiệm vẽ giao diện hiển thị
trên màn hình, gửi âm thanh tới loa, tạo ra thông tin phản hồi về xúc giác (cảm ứng)...
Theo ví dụ trên, phần hiển thị trong một chƣơng trình nghe nhạccó thể chứa một
thành phần hiển thị bìa album cho cho file âm thanh đang chạy. Ngƣời dùng sẽ luôn
luôn tƣơng tác với lớp này. Ngƣời sử dụng tác động tới lớp này sẽ kích hoạt sự kiện đó
và sẽ đi đến các chức năng tƣơng ứng của ứng dụng.
Controller: Controller là một phần của ứng dụng để đáp ứng hành động bên
ngoài: một sự kiện nhấn phím, một sự kiện chạm màn hình, cuộc gọi đến… đƣợc thực
hiện nhƣ một hàng đợi sự kiện. Hành động của ngƣời sử dụng, kiểm soát đƣợc thông
qua bộ điều khiển và điều này sẽ chăm sóc tất cả các logic cần đƣợc thực hiện và
chuẩn bị Model cần phải đƣợc gửi tới lớp View.
1.5. Ứng dụng Android
Một ứng dụng Android là tập hợp của các thành phần. Có 4 loại thành phần:
 Activity: Một Activity là một thành phần giao diện ngƣời dùng tƣơng ứng
với mỗi màn hình mà ngƣời dùng tƣơng tác để làm gì đó.
 Service: Một Service là một thành phần ứng dụng không có giao diện ngƣời
sử dụng để thực hiện các hoạt động lâu chạy ở chế độ nền (background).
 Broadcast Receiver: Một broadcast receiver là một thành phần để phản ứng
với những thông tin quảng bá trong toàn hệ thống. (ví dụ: tắt màn hình, pin
hết...)
 Content Provider: Một content provider là một thành phần dùng để lƣu trữ
và truy xuất dữ liệu và làm cho nó có sẵn với tất cả ứng dụng. Có nhiều loại
khác nhau của content provider: audio, video, danh bạ… và bạn có thể cũng
tạo ra provider cho riêng mình.
1.5.1. Khởi động ứng dụng
Mô hình Android khá độc đáo ở chỗ là không có điểm vào đơn cụ thể cho một
ứng dụng - không có hàm main(). Thay vào đó, do Android đƣa các ứng dụng và chu
kỳ sống nên một thành phần trong một ứng dụng có thể bắt đầu thành phần ứng dụng
khác. Giao tiếp giữa các ứng dụng xảy ra theo cơ chế IPC trình bày ở trên. Nhƣ vậy
trong khi một Activity của một ứng dụng này hoạt động, nó lại có khả năng cho phép

một ứng dụng khác bắt đầu nó (nếu ứng dụng sở hữu nó cho phép). Một ví dụ là nhấp
chuột vào một hyperlink trong một ứng dụng mở trên một Browser. Sự cho phép đó
không chỉ ở các Activity, mà còn ở các thành phần khác nữa. Để cho điều này xảy ra,
có hai bƣớc cần thiết:
Bùi Thị Linh – K16D2


25
 Trong trƣờng hợp ứng dụng chƣa sẵn sàng chạy, hệ thống Android sẽ mang
ứng dụng đó vào chu kỳ sống trong quá trình mới tách ra từ Zygote.
 Các thành phần bên trong ứng dụng cần đƣợc kích hoạt.
Chú ý rằng trong trƣờng hợp ứng dụng sẵn sàng chạy, thành phần mới đƣợc khởi
tạo mặc định trong cùng quá trình.
Nhƣ đề cập ở trên, IPC (giao tiếp giữa các thành phần) đƣợc thực hiện thông qua
một đối tƣợng Context. Nhƣ vậy, khi một thành phần A bên trong một ứng dụng cần
để kích hoạt thành phần B khác trong ứng dụng khác hoặc cung cấp cho nó một vài cái
mới để thực hiện, về cơ bản nó sử dụng đối tƣợng Context để gửi một bản tin tới thành
phần khác. Trong trƣờng hợp của một Activity, Service hoặc BroadcastReceiver, dạng
nhiệm vụ này đƣợc gọi là một Intent - một cấu trúc dữ liệu bị động..
Tuy nhiên Content Providers không kích hoạt thông qua Intens. Thay vào đó,
kích hoạt xảy ra trên yêu cầu từ một Content Resolver, hoạt động nhƣ một trung gian
giữa các thành phần yêu cầu và Content Provider.
1.5.2. Activity Back-Stack
Xem xét kịch bản sau (hình 1-8):

Hình 1-8: Activity back stack
 Ta có màn hình Home. Đây là Activity 1.
 Ta kích chuột trên biểu tƣợng ứng dụng Mail và thực hiện hành động chính
trong ứng dụng Mail. Đây là Activity 2.
 Bây giờ ta kích chuột trên Soạn Thƣ (Compose) và thực hiện hành động Soạn

thƣ trong ứng dụng Mail. Đây là Activity 3.
 Ta quyết định huỷ soạn tin mới và nhấn nút quay trở lại. Ta quay trở lại
Activity 2.
Đây là những gì đã xảy ra ở background:
 Khi một Activity bắt đầu một Activity khác, nó dừng và trạng thái của nó đƣợc
lƣu.
Bùi Thị Linh – K16D2


26
 Sau khi Activity 1 bắt đầu Activity 2, Activity 1 bị dừng và trạng thái của nó
đƣợc lƣu.
 Hệ thống ngăn xếp chính (back stack) với Activity mới nhất trên đầu và cũ nhất
ở dƣới cùng.
Khi ngƣời dùng nhấn phím back, Activity 3 bị dừng và Activity 2 đƣợc bắt đầu
từ trạng thái lƣu của nó.
Cách tiếp cận này cho phép Android chuyển đổi liên tục từ một ứng dụng sang
ứng dụng khác một cách nhất quán.
1.5.3. Nhiệm vụ Tasks
Trong kịch bản trên, giả sử rằng ngƣời dùng đã ở trong Soạn Thƣ, ngƣời đó lại
quyết định gọi một vài ngƣời và ấn phím Home. Điều này sẽ không ở back-stack,
nhƣng bắt đầu một stack mới. Để làm đƣợc điều này, bộ các Activity trong stack đầu
tiên cần vào trong background. Điều này đạt đƣợc thông qua khái niệm Task - một đơn
vị gắn kết của các Activity. Khi một task di chuyển vào background, tất cả các
Activity trong Task bị dừng nhƣng back-stack cho nhiệm vụ này vẫn còn nguyên vẹn,
nhƣ vậy, khi ngƣời dùng trở lại Task, họ có thể tiếp tục ở nơi kết thúc. Tuy nhiên, để
tiết kiệm bộ nhớ, back-stack cho Task ở background là không đƣợc giữ lại trong một
thời gian dài và nếu ngƣời dùng không quay trở lại Task, back stack sẽ bị xoá.

Hình 1-9: Background và Foreground Task

1.5.4. Vòng đời của Activity
Vòng đời của một Activity bị ảnh hƣởng bởi liên kết của nó với Activity khác,
Task của nó và back-stack của nó. Có 4 trạng thái cho một Activity:
 Hoạt động: Nếu Activity là trong foreground của màn hình.
 Tạm dừng: Activity có thể nhìn thấy, nhƣng có Activity khác trong
foreground và đƣợc ngƣời dùng sử dụng. Điều này xảy ra nếu Activity khác
ở đầu, nhƣng bị mờ hoặc vì nó không chiếm toàn bộ màn hình. Trong trạng
thái tạm dừng, đối tƣợng Activity đƣợc giữ trong bộ nhớ, duy trì tất cả các
trạng thái của nó, thông tin thành viên và vẫn đƣợc đính bởi quản lý
Window. Tuy nhiên nó có thể bị giết trong điều kiện bộ nhớ giảm xuống cực
kỳ thấp.
Bùi Thị Linh – K16D2


27
 Bị dừng: Activity bị che hoàn toàn bởi một Activity khác. Nó vẫn đƣợc lƣu
trữ trong bộ nhớ, duy trì tất cả các trạng thái, thông tin thành viên, tuy nhiên
ngƣời dùng không nhìn thấy vì cửa sổ của nó bị ẩn. Activity nhƣ vậy thƣờng
sẽ bịgiết bởi hệ thống khi bộ nhớ là cần thiết ở nơi khác.
 Bị hủy: Khi Activity tạm dừng hoặc bị dừng, hệ thống có thể hủy Activity
từ bộ nhớ bằng cách yêu cầu nó kết thúc hoặc kill process của nó. Khi hiển
thị lại nó phải khởi động lại hoàn toàn trạng thái trƣớc của nó nhờ vào cơ
chế lƣu trạng thái.

Hình 1-10: Vòng đời của Activity
Lƣu trạng thái Activity
Lƣu ý rằng hệ thống hoàn toàn có thể tiêu diệt một Activity, thậm chí cả tiến
trình mà Activity đang chạy, để lấy lại bộ nhớ. Tuy nhiên, khi ngƣời dùng trở lại
Activity (thông qua back stack), họ vẫn muốn tiếp tục tại thời điểm mà họ đã rời khỏi.
Để làm đƣợc điều này, một Activity phải lƣu trạng thái của nó. Điều đó xảy ra thông

qua phƣơng thức Activity.onSaveInstanceState().

Bùi Thị Linh – K16D2


×