1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu thiết kế chế tạo bộ điều khiển led ma trận bằng smartphone chạy hệ điều hành android

116 1,1K 0

Đ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 116
Dung lượng 4,08 MB

Nội dung

Sự thành công của hệđiều hành cũng khiến nó trở thành mục tiêu trong các vụ kiện liên quan đến bằngphát minh, góp mặt trong cái gọi là “cuộc chiến điện thoại thông minh” giữa cáccông ty

Trang 1

LỜI CẢM ƠN Trong quá trình thực hiện đề tài: “Nghiên cứu thiết kế chế tạo bộ điều khiển Led ma trận bằng Smartphone chạy hệ điều hành Android” em xin chân thành

cảm ơn đến quý Thầy, Cô giáo trong bộ môn, khoa Điện – Điện tử đã tận tình giảngdạy, cung cấp cho em nhiều kiến thức trong suốt quá trình học tập tại trường đại họcNha Trang

Xin gửi lời cảm ơn sâu sắc đến Thầy giáo Nhữ Khải Hoàn đã trực tiếp hướngdẫn đồ án cho em Cảm ơn Thầy đã tận tình chỉ bảo, hướng dẫn, cung cấp những tàiliệu, kinh nghiệm, bài học quý giá và tạo điều kiện thuận lợi cho em hoàn thành đồ

Xin chân thành cảm ơn!

Nha Trang, tháng 06 năm 2015.

Sinh viên

Nguyễn Khắc Huy

Trang 2

LỜI MỞ ĐẦU

Lý do chọn đề tài

Ngày nay với sự phát triển mạnh của khoa học – công nghệ, đời sống conngười ngày càng được nâng cao rõ rệt nhờ ứng dụng các thành tựu của khoa học –công nghệ Nó cũng thúc đẩy sự phát triển mạnh mẽ nhiều lĩnh vực trong đó có lĩnhvực Điện – Điện tử

Những chiếc điện thoại thông minh Smartphone ngày càng được cải tiếnkhông chỉ phục vụ nhu cầu nghe, gọi, xem phim… mà nó còn thay thế được cácchức năng của một chiếc máy tính (PC) Ưu điểm của những chiếc điện thoại này lànhỏ gọn, bộ vi xử lý tốc độ ngày càng cao, bộ nhớ trong lớn, tích hợp đầy đủ cácứng dụng cơ bản, kết nối không dây Bluetooth, Wifi, 3G, sử dụng được nhiều giờliên tục… Chính vì vậy, Smartphone rất được ưa chuộng và dần dần được thay thếcho máy tính phục vụ các ứng dụng cơ bản Hầu hết các thiết bị di động đều tíchhợp chuẩn truyền thông Bluetooth Nếu như USB giúp chuẩn hóa các kết nối giữacác thiết bị ngoại vi với máy tính (PC), thì Bluetooth có thể coi như chuẩn khôngdây tiêu chuẩn giúp kết nối hầu hết các thiết bị phụ trợ thông qua giao tiếp khôngdây như tai nghe, chuột, bàn phím, máy in, loa Sử dụng Bluetooth trong các thiết

bị nhúng có thể giúp chúng ta kết nối không dây dễ dàng với máy tính, điện thoại diđộng, máy tính bảng, laptop Từ đó mở ra rất nhiều ứng dụng điều khiển, giao tiếp,kết nối giữa các hệ thống nhúng và thiết bị di động

Trong đề tài này em sử dụng Smartphone chạy hệ điều hành Android để điềukhiển Led ma trận thông qua vi điều khiển AVR bằng Bluetooth Điều khiển Led

ma trận bằng Smartphone rất thuận tiện trong việc cập nhật dữ liệu, tiết kiệm đượcthời gian, tính thẩm mỹ cao, không cần sử dụng máy tính

Mục tiêu của đề tài

 Thiết kế được bảng quang báo Led ma trận qua Bluetooth

– Phải hiển thị được các thông tin cần thiết,

– Bảng quang báo Led ma trận cập nhật được nội dung mỗi khi truyền dữ liệu từSmartphone chạy hệ điều hành Android qua Bluetooth

Trang 3

 Xây dựng giao diện điều khiển Led ma trận trên Smartphone Androidtruyền dữ liệu cho vi điều khiển thông qua mô đun Bluetooth HC-06.

Đối tượng và phạm vi nghiên cứu

– Đối tượng nghiên cứu

Nghiên cứu mô đun Led ma trận P10 màu đỏ, mô đun Bluetooth HC-06, vi

điều khiển AVR, hệ điều hành Android

Phương pháp nghiên cứu

– Phương pháp lý thuyết: Cách cấp nguồn và nguyên lý hoạt động của mô

đun Led ma trận, kỹ thuật điều khển Led ma trận, kỹ thuật lập trình Android

– Phương pháp thực nghiệm: Thiết kế, chế tạo mạch điều khiển, bảng

quang báo Led ma trận, xây dựng giao diện trên Android cho Smartphone Kết nối,

chạy thử, kiểm tra, sửa chữa hoàn thiện

Nội dung nghiên cứu

– Nghiên cứu các mô đun Led ma trận, mô đun Bluetooth HC-06

– Tìm hiểu Smartphone, nghiên cứu ứng dụng hệ điều hành Android và viết giaodiện điều khiển Led ma trận dựa trên Android

– Thiết kế bảng quang báo bằng mô đun Led ma trận

– Thiết kế bộ điều khiển Led ma trận

– Đánh giá kết quả đạt được và phương hướng phát triển của đề tài

Sản phẩm này không chỉ phục vụ cho đào tạo mà còn được ứng dụng vào thựctiễn xã hội Vì hiện nay quang báo bằng Led rất phổ biến, nó đáp ứng được các nhucầu phát triển xã hội, bởi tính thẩm mỹ, độ bắt mắt cao, dễ dàng cập nhật nội dung,tiện ích mà Led mang lại

Bố cục đồ án

Trang 4

- Chương 1: Tổng quan về hệ điều hành Android và Led trong quang báo.

- Chương 2: Thiết kế phần cứng hệ thống

- Chương 3: Phần mềm lập trình hệ thống

- Kết luận và phương hướng phát triển đề tài

Mặc dù đã hết sức nỗ lực, cố gắng trong quá trình thực hiện đồ án nhưng vớitrình độ, kiến thức, kinh nghiệm thực tế còn hạn chế và thời gian có hạn nên khôngthể tránh khỏi những sai sót nhất định Do đó, em rất mong muốn nhận được sự góp

ý, chỉ bảo của quý Thầy, Cô và ý kiến đóng góp của bạn bè để đồ án được hoànthiện hơn

Em xin chân thành cảm ơn!

Trang 5

MỤC LỤC

LỜI CẢM ƠN i

LỜI MỞ ĐẦU ii

MỤC LỤC v

DANH SÁCH CÁC HÌNH VẼ viii

DANH SÁCH CÁC BẢNG BIỂU x

DANH SÁCH CÁC LƯU ĐỒ xi

DANH SÁCH CÁC TỪ VIẾT TẮT xii

CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID VÀ LED TRONG QUANG BÁO 1

1.1 Tổng quan về hệ điều hành Android 1

1.1.1 Giới thiệu về hệ điều hành Android 1

1.1.2 Đặc điểm của hệ điều hành Android 2

1.1.3 So sánh giữa các hệ điều hành Smartphone 4

1.2 Kiến trúc hệ điều hành Android 5

1.2.1 Lớp ứng dụng 6

1.2.2 Lớp khung tổ chức ứng dụng 6

1.2.3 Lớp thư viện 7

1.2.3.1 Library 7

1.2.3.2 Android runtime 8

1.2.4 Lớp nhân Linux phiên bản 2.6 8

1.3 Các thành phần của ứng dụng Android 9

1.3.1 Activity 10

1.3.1.1 Khái niệm Activity 10

1.3.1.2 Vòng đời của Activity 10

1.3.2 Service 13

1.3.2.1 Khái niệm Service 13

1.3.2.2 Vòng đời của một Service 13

1.3.3 Inten 15

Trang 6

1.3.4 Broadcast Receivers 16

1.3.5 Content Provider 17

1.3.6 Notification 18

1.4 Cấu trúc một Project Android 18

1.4.1 Cấu trúc một Project Android trong Eclipse 18

1.4.2 Một số tập tin quan trọng của Android 20

1.4.2.1 MainActivity.java 20

1.4.2.2 AndroidManifest.xml 21

1.4.2.3 Strings.xml 23

1.4.2.4 R.java 23

1.4.2.5 Activity_main.xml 25

1.5 Tổng quan về Led 26

1.5.1 Khái niệm về Led 26

1.5.2 Lịch sử hình thành Led 26

1.5.3 Cấu tạo và nguyên lý hoạt động của đèn Led 27

1.5.3.1 Cấu tạo của đèn Led 27

1.5.3.2 Nguyên lý hoạt động của đèn Led 27

1.5.4 Ưu nhược điểm và ứng dụng của đèn Led 28

1.5.4.1 Ưu nhược điểm của đèn Led 28

1.5.4.2 Ứng dụng của đèn Led 29

CHƯƠNG 2: THIẾT KẾ PHẦN CỨNG HỆ THỐNG 31

2.1 Tổng quát về phần cứng 31

2.1.1 Sơ đồ tổng quát phần cứng 31

2.1.2 Chức năng của các khối 31

2.2 Một số linh kiện sử dụng trong mạch 33

2.2.1 Vi điều khiển Atmega 32 33

2.2.1.1 Giới thiệu chung về Atmega 32 33

2.2.1.2 Cấu trúc Atmega 32 34

2.2.1.3 Cấu trúc bộ nhớ 36

Trang 7

2.2.1.4 Thanh ghi trạng thái của AVR 38

2.2.1.5 Các cổng vào ra 39

2.2.2 IC chốt dịch 74HC595 41

2.2.3 IC giải mã địa chỉ 74HC138 43

2.3 Phân tích hệ thống 45

2.3.1 Nguyên lý hoạt động của bảng quang báo Led ma trận 45

2.3.2 Phân tích hệ thống 45

2.4 Thiết kế phần cứng 46

2.4.1 Khối hiển thị 46

2.4.2 Khối điều khiển trung tâm 50

2.4.3 Khối giao tiếp giữa vi điều khiển và Smartphone 51

CHƯƠNG 3: PHẦN MỀM LẬP TRÌNH HỆ THỐNG 54

3.1 Các phần mềm lập trình sử dụng cho vi điều khiển 54

3.1.1 Phần mềm Proteus 8.0 54

3.1.2 Phần mềm Codevision AVR V2.05.0 55

3.2 Công cụ hỗ trợ lập trình Android 56

3.2.1 Java SE Development Kit 56

3.2.1.1 Tổng quát về Java SE Development Kit 56

3.2.1.2 Cài đặt Java SE Development Kit 56

3.2.2 Eclipse IDE 58

3.2.2.1 Tổng quát Eclipse IDE 58

3.2.2.2 Tích hợp Android SDK Manager vào Eclipse 59

3.2.3 Android Virtual Device 61

3.3 Lưu đồ thuật toán điều khiển bảng Led ma trận

65

3.4 Giao diện trên Smartphone Android giao tiếp với vi điều khiển 68

KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN ĐỀ TÀI 69

TÀI LIỆU THAM KHẢO 71

PHỤ LỤC 72

Trang 8

DANH SÁCH CÁC HÌNH VẼ

Hình 1.1: Mô hình kiến trúc nền tảng Android 5

Hình 1.2: Vòng đời của một Activity 12

Hình 1.3: Sơ đồ chuyển đổi trạng thái của Service 14

Hình 1.4: Chức năng của Intent 15

Hình 1.5: Ví dụ về Notification 18

Hình 1.6: Cấu trúc hình cây của Project Android 19

Hình 1.7: Hình ảnh Led thực tế 26

Hình 1.8: Cấu tạo và nguyên lý hoạt động của Led 27

Hình 1.9: Ứng dụng của đèn Led trong thực tế 29

Hình 2.1: Sơ đồ khối tổng quát hệ thống phần cứng 31

Hình 2.2: Atmega 32 loại chân cắm 33

Hình 2.3: Atmega 32 loại chân dán 33

Hình 2.4: Cấu trúc bên trong của vi điều khiển AVR 35

Hình 2.5: Cấu trúc bộ nhớ vi điều khiển Atmega 32 36

Hình 2.6: Thanh ghi 8 bit của vi điều khiển Atmega 32 37

Hình 2.7: Cấu trúc thanh ghi trạng thái của AVR 38

Hình 2.8: Hình ảnh thực tế IC 74HC595 41

Hình 2.9: Sơ đồ chân IC 74HC595 41

Hình 2.10: Ghép nối tiếp các IC 74HC595 43

Hình 2.11: Hình ảnh thực tế IC 74HC138 43

Hình 2.12: Sơ đồ chân IC 74HC138 43

Hình 2.13: Nguyên tắc tạo ảnh cho Led ma trận 45

Hình 2.14: Mô đun Led ma trận P10 47

Hình 2.15: Sơ đồ chân mô đun Led P10 47

Hình 2.16: Sơ đồ nguyên lý kết nối mô đun Led P10 với vi điều khiển Atmega32

48

Hình 2.17: Sơ đồ mạch in kết nối mô đun Led P10 với vi điều khiển Atmega32 48

Hình 2.18: Nguyên lý đưa dữ liệu vào IC 74HC595 của Led ma trận P10 48

Trang 9

Hình 2.19: Nguyên lý quét mô đun Led ma trận P10 49

Hình 2.20: Hình ảnh thực tế IC 74HC254 49

Hình 2.21: Sơ đồ chân IC 74HC254 49

Hình 2.22: Sơ đồ nguyên lý mạch điều khiển trung tâm Atmega 32 50

Hình 2.23: Sơ đồ mạch in khối điều khiển trung tâm Atmega 32 50

Hình 2.24: Mô đun Bluetooth HC06 51

Hình 2.25: Cấu trúc của một khung truyền phổ biến 52

Hình 2.26: Mô hình sản phẩm thực tế 53

Hình 3.1: Giao diện chính của phần mềm Proteus 8.0 54

Hình 3.2: Giao diện của phần mềm Codevision AVR V2.05.0 55

Hình 3.3: Lựa chọn Java Platform 57

Hình 3.4: Chọn phiên bản JDK phù hợp với Windowns 57

Hình 3.5: Chọn Workspace cho việc phát triển ứng dụng trên Android 58

Hình 3.6: Giao diện Eclipse 59

Hình 3.7: Tham chiếu đến Android SDK 60

Hình 3.8: Lựa chọn các gói Android SDK (API) 60

Hình 3.9: Cài đặt Android SDK Manager 61

Hình 3.10: Chọn cài đặt Android Virtual Device 61

Hình 3.11: Cài đặt thông số cho Android Virtual Device 62

Hình 3.12: Khởi động Android Virtual Device 62

Hình 3.13: Thiết lập kích thước màn hình cho Android Virtual Device 63

Hình 3.14: Android Virtual Device được khởi tạo 63

Hình 3.15: Giao diện trên Smartphone Android giao tiếp với vi điều khiển 68

Trang 10

DANH SÁCH CÁC BẢNG BIỂU

Bảng 1.1: So sánh giữa các hệ điều hành Smartphone 4Bảng 2.1: Chức năng hoạt động của 74HC595 41Bảng 2.2: Bảng giá trị logic của IC 74HC138 44

Trang 11

DANH SÁCH CÁC LƯU ĐỒ

Lưu đồ 3.1: Lưu đồ thuật toán tổng quát quét Led ma trận 65Lưu đồ 3.2: Lưu đồ thuật toán quét hàng và cột của Led ma trận 66Lưu đồ 3.3: Lưu đồ thuật toán dịch chữ từ trái sang phải 67

Trang 12

DANH SÁCH CÁC TỪ VIẾT TẮT

PC: Máy vi tính

JDK: Java Development Kit

OHA: Open Handset Alliance

Trang 13

CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID VÀ LED

TRONG QUANG BÁO 1.1 Tổng quan về hệ điều hành Android

1.1.1 Giới thiệu về hệ điều hành Android

Android là một hệ điều hành dành cho thiết bị di động như điện thoại, máytính bảng và netbooks Android được phát triển bởi Google, dựa trên nền tảng Linuxkernel và các phần mềm nguồn mở khác Ban đầu nó đuợc phát triển bởi AndroidInc sau đó được Google mua lại và gần đây nó trở thành một trong những phầnmềm đứng đầu của liên minh OHA (với khoảng 78 thành viên bao gồm cả nhà sảnxuất, nhà phát triển ứng dụng cho thiết bị di động mà dẫn đầu là Google).[7] Tháng 11 năm 2007, OHA – Liên minh thiết bị cầm tay mở rộng ra đời vớicác thành viên Texas Instruments, Tập đoàn Broadcom, Google, HTC, Intel, LG,Tập đoàn Marvell Technology, Motorola, Nvidia, Qualcomm, Samsung Electronics,Sprint Nextel và T-Mobile

Tháng 10 năm 2008, hệ điều hành Android đã chính thức trở thành phần mềm

mã nguồn mở

Tháng 12 năm 2008, có thêm 14 thành viên mới gia nhập dự án Android đượccông bố, gồm có ARM Holdings, Atheros Communications, Asustek Computer Inc,Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, và Vodafone Group Plc.Andorid được phát triển nhằm cạnh tranh với các hệ điều hành di động khácnhư iOS (Apple), BlackBerry OS, Windows Mobile (Microsoft), Symbian (Nokia),Samsung (Bada), WebOS (Palm) Android chiếm 75% thị phần điện thoại thôngminh trên toàn thế giới vào thời điểm quý 3 năm 2012,với tổng cộng 500 triệu thiết

bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày Sự thành công của hệđiều hành cũng khiến nó trở thành mục tiêu trong các vụ kiện liên quan đến bằngphát minh, góp mặt trong cái gọi là “cuộc chiến điện thoại thông minh” giữa cáccông ty công nghệ.[8],[9]

Android có một cộng đồng phát triển ứng dụng rất lớn, hiện có khoảng hơn70.000 ứng dụng có sẵn cho Android và đang liên tục đuợc cập nhật Ứng dụng

Trang 14

được phát triển bằng ngôn ngữ Java kết hợp với thư viện Java có sẵn của Google.Các nhà phát triển ứng dụng có thể sử dụng máy tính chạy hệ điều hành Windowshoặc MacOS hoặc Linux kết hợp với Android SDK để phát triển ứng dụng choAndroid Hệ điều hành Android bao gồm 12.000.000 dòng mã trong đó có3.000.000 dòng XML, 2.800.000 dòng C, 2.100.000 dòng Java, và 1.750.000 dòngC++

Ðể phát triển phần mềm trên Android, các lập trình viên có thể tải về bộ công

cụ phát triển (Android SDK) Bộ công cụ bao gồm các công cụ và các API cần thiết,

ưu hóa bộ nhớ và phần cứng với môi trường di động Android là một mã nguồn mở,

nó có thể được mở rộng để kết hợp tự do giữa các công nghệ nổi trội Nền tảng này

sẽ tiếp tục phát triển bởi cộng đồng phát triển để tạo ra các ứng dụng di động hoànhảo

Tính ngang hàng của các ứng dụng

Với Android, không có sự khác nhau giữa các ứng dụng điện thoại cơ bản vớiứng dụng của bên thứ ba Chúng được xây dựng để truy cập như nhau tới một loạtcác ứng dụng và dịch vụ của điện thoại Với các thiết bị được xây dựng trên nềntảng Android, người dùng có thể đáp ứng đầy đủ các nhu cầu mà họ thích Chúng ta

có thể đổi màn hình nền, kiểu gọi điện thoại, hay bất kể ứng dụng nào, thậm chí cóthể cài đặt điện thoại chỉ xem những hình ảnh mình thích

Phá vỡ rào cản phát triển ứng dụng

Trang 15

Android phá vỡ rào cản để tạo ứng dụng mới và cải tiến Một người phát triển

có thể kết hợp thông tin từ trang Web với dữ liệu trên điện thoại cá nhân Ví dụ nhưdanh bạ, lịch hay vị trí trên bản đồ để cung cấp chính xác hơn cho người khác VớiAndroid, người phát triển có thể xây dựng một ứng dụng mà cho phép người dùngxem vị trí của những người bạn và thông báo khi họ đang ở vị trí lân cận Tất cảđược lập trình dễ dàng thông qua sự hỗ trợ của MapView và dịch vụ định vị toàncầu GPS

Tất cả các ứng dụng có thể được tạo ra cho Android

Android không phân biệt giữa các ứng dụng lõi của điện thoại và các ứngdụng của bên thứ ba Họ tất cả có thể được xây dựng để có thể truy cập bằng khảnăng của một người cung cấp cho người sử dụng điện thoại với một dải rộng cácứng dụng và dịch vụ Với các thiết bị xây dựng trên hệ điều hành Android, ngườidùng có thể hoàn toàn thích ứng với điện thoại đến lợi ích của họ Họ có thể trao đổitrên màn hình của điện thoại, những phong cách của dialog hoặc bất kỳ ứng dụngnào Họ thậm chí có thể hướng dẫn điện thoại của họ để sử dụng hình ảnh ưa thíchcủa họ xem các ứng dụng để xử lý xem tất cả các hình ảnh

Dễ dàng và nhanh chóng xây dựng ứng dụng

Android cung cấp bộ thư viện giao diện lập trình ứng dụng đồ sộ và các công

cụ để viết các ứng dụng phức tạp Ví dụ Android có thể cho phép người phát triểnbiết được vị trí của thiết bị và cho phép các thiết bị giao tiếp với nhau để có thể tạonên mạng xã hội chia sẻ ngang hàng rộng khắp thế giới Thêm nữa, Android cònbao gồm một bộ công cụ đầy đủ giúp cho việc phát triển trở nên dễ dàng

Dễ dàng và nhanh chóng xây dựng ứng dụng

Rất nhiều nhà phát triển hệ điều hành Android đã vào cuộc và các Rom choAndroid độc đáo được ra đời với nhiều tích năng nổi trội được tích hợp và đầy sángtạo Danh sách các nhà phát triển Rom nổi bật:

- Ahmgsk.

- Amon_RA.

- Benbuchacher.

- BH_MAN.

Trang 16

1.1.3 So sánh giữa các hệ điều hành Smartphone

Bảng 1.1: So sánh giữa các hệ điều hành Smartphone.

Ưu điểm - Tùy biến màn hình

và cập nhật thời gian thực (real time)

- Hệ thống thông

báo nhanh

- Chia sẻ mạng với

các thiết bị tương thích khác

- Chức năng xem

Google Maps là tiêu chuẩn vàng của nhiều ứng dụng điều hướng

- Tích hợp một vài

mạng xã hội rất tốt

và phần cứng

- Hỗ trợ nhiều trang web thôngqua trình duyệt safari

- Thống nhất về giao diện người dùng ngay cả khi nâng cấp lêniOS 6

- Hỗ trợ truy cập email thông quanhiều tài khoản

- Tích hợp với mạng xã hội

- Thích hợp với nhiều API trên nhiều nền tảng khác

- Tùy biến màn hình

và cập nhật thời gian thực (real time)

- Tích hợp với các

ứng dụng kinh doanh phổ biến có trên Microsoft

- Phù hợp với giao

diện đồ họa người dùng (GUI) và nhiều API trên tất

cả các nền tảng di động

- Hiệu suất điện

năng tốt thông qua

hệ điều hành đa nền tảng

Trang 17

API trên nhiều nềntảng.

Nhược

điểm

- Tách rời hệ điều

hành và phần cứng

- Tốn chi phí phát

triển

- Dễ phát sinh các

vấn đề an ninh do nguồn mở

- Không hỗ trợ

Flash, có một vài trang web không xem được

- Phần cứng phân

mảnh

- Cảm ứng màn hình

có trực quan kém hơn so với iOS và Android

- Tích hợp mạng xã

hội không tốt

- Giao diện thay đổi

lớn so với trước đó

1.2 Kiến trúc hệ điều hành Android

Kiến trúc của hệ điều hành Android gồm 4 thành phần:

- Lớp ứng dụng (Applications)

- Lớp khung tổ chức ứng dụng (Applications Framework)

- Lớp thư viện (Librabries – Runtime)

- Lớp nhân Linux phiên bản 2.6 (Linux kernel)

Trang 18

Hình 1.1: Mô hình kiến trúc nền tảng Android.

1.2.1 Lớp ứng dụng

Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như:Các ứng dụng cơ bản được cài đặt đi liền với hệ điều hành như là gọi điện, quản lýdanh bạ, duyệt web, nhắn tin, lịch làm việc, Email, bản đồ, quay phim chụp ảnh(Camera) Các ứng dụng được cài thêm như các phần mềm chứng khoán (Stock),các trò chơi, từ điển, các ứng dụng của bên thứ ba…Các ứng dụng viết sẽ có nhữngđặc tính sau:

- Viết bằng Java, phần mở rộng là apk

- Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine (máy ảo)được dựng lên để phục vụ cho nó Nó có thể là một Active Program chương trình cógiao diện với người sử dụng hoặc là một Background chương trình chạy nền hay làdịch vụ

- Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thờiđiểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên với mỗi ứng dụngthì có duy nhất một thực thể (instance) được phép chạy mà thôi Điều đó có tácdụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn Các ứngdụng được phân quyền và tự hệ thống sẽ hủy nếu mức ưu tiên thấp

- Các ứng dụng được gán số ID của người sử dụng nhằm phân định quyền hạn

Trang 19

khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống.

Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di độngkhác, Android cho phép một ứng dụng của bên thứ ba được phép chạy nền Các ứngdụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dụng quá 5 ÷ 10%công suất CPU, điều đó nhằm để tránh độc quyền trong việc sử dụng CPU

1.2.2 Lớp khung tổ chức ứng dụng

Ở lớp này các nhà phát triển ứng dụng có thể truy cập vào phần cứng thiết bị,thông tin định vị vị trí, chạy các dịch vụ nền, đặt các cảnh báo, thông báo vào thanhtrạng thái, và quan trọng nhất đó là các API của framework

Phía duới tất cả các ứng dụng là một tập các dịch vụ của hệ thống bao gồm:

- View Manage: Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau

dùng để thiết kế phần giao diện ứng dụng như: Gridview, tableview, linearlayout,relative layout, table layout,

- Activity Manager: Quản lý các chu kỳ sống của một ứng dụng cũng như

cung cấp công cụ điều khiển các Activity

- Telephony Manager: Cung cấp công cụ để thực hiện việc liên lạc như gọi

điện thoại

- Location Manager: Cho phép xác định vị trí của điện thoại thoại dựa vào hệ

thống định vị toàn cầu GPS và Google Maps

- Window Manager: Quản lý việc xây dựng và hiển thị các giao diện người

dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng

- Notication Manager: Quản lý việc hiển thị các thông báo (như báo có tin

nhắn, có Email mới,…)

- Resource Manager: Quản lý tài nguyên tĩnh của các ứng dụng bao gồm các

tập tin hình ảnh, âm thanh, layout, string (những thành phần không được viết bởingôn ngữ lập trình)

- Content Provider: Cho phép các ứng dụng có thể truy xuất dữ liệu từ các ứng

dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các ứng dụng đó

Trang 20

- Surface Manage: Quản lý hiển thị 2D và 3D.

- SGL: Công nghệ 2D

- SQLite: Quản lý database của ứng dụng

- Free Type: Dùng cho hiển thị hình ảnh, font

- SSL(Secure Socket Layer): Tầng thiết lập giao dịch an toàn trên 2 ứng dụngtrên một cổng (socket)

- Open GL/EL: Hỗ trợ thư viện tùy chọn 3D tĩnh và động

1.2.3.2 Android runtime

Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java cóthể hoạt động Phần này gồm có 2 bộ phận tương tự như mô hình chạy Java trênmáy tính thông thường Thứ nhất là các thư viện lõi (Core Library), chứa các lớpnhư JAVA 10, Collections, File Access Thứ hai là một máy ảo Java (DalvikVirtual Machine)

Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệđiều hành Android không được chạy bằng JRE (Java Runtime Environment) củaSun (nay là Oracle) (JVM) mà chạy bằng máy ảo Dalvik (máy ảo Dalvik được đặttên sau khi một nhà phát triển phần mềm của Google tạo ra nó sau chuyến đi thăm

Trang 21

một ngôi làng ở nơi tổ tiên ông sinh sống), do Google phát triển Máy ảo Davikthực thi các tập tin davik (dex), khác với java là chuyển sang dạng bytecode Địnhdạng này được tối ưu hóa cho bộ nhớ tối thiểu.

1.2.4 Lớp nhân Linux phiên bản 2.6

Android sử dụng nhân Linux 2.6 làm nhân cho các dịch vụ hệ thống như bảomật, quản lý bộ nhớ, quản lý tiến trình (xử lý tiến trình, đa luồng, ), ngăn xếp mạng

và trình điều khiển thiết bị (giao tiếp USB, giao tiếp hồng ngoại, không dây,…).Nhân Linux này cũng có vai trò như một lớp trừu tượng giữa phần cứng và phầnmềm

Tất cả mọi hoạt động của điện thoại muốn thi hành được thì đều được thựchiện ở mức cấp thấp ở lớp này bao gồm quản lý bộ nhớ (Memory management), giaotiếp với phần cứng (Driver model), thực hiện bảo mật (Security), quản lý tiến trình(Process)

Tuy được phát triển dựa vào nhân Linux nhưng thực ra nhân Linux đã đượcnâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm taynhư hạn chế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cầu kếtnối mạng không dây,…

Các thành phần của nhân Linux:

- Display Driver: Điều khiển việc hiển thị lên màn hình cũng như thu nhận

những điều khiển của người dùng lên màn hình (di chuyển, cảm ứng, )

- Camera Driver: Điều khiển hoạt động của camera, nhận luồng dữ liệu từ

camera trả về

- Bluetooth Driver: Điều khiển thiết bị phát và thu sóng Bluetooth.

- USB driver: Quản lý hoạt động của các cổng giao tiếp USB.

- Keypad driver: Điều khiển bàn phím.

- Wifi Driver: Chịu trách nhiệm về việc thu phát sóng Wifi.

- Audio Driver: Điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu

dạng audio thành tín hiệu số và ngược lại

- Power Madagement: Giám sát việc tiêu thụ điện năng.

Trang 22

- M-System Driver: Quản lý việc đọc ghi lên các thiết bị nhớ như thẻ SD,

Flash

- Binder IPC Driver: Chịu trách nhiệm về việc kết nối và liên lạc với mạng vô

tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền thôngđược thực hiện

1.3.1.1 Khái niệm Activity

Một Activity là một giao diện đồ họa trực quan mà người dùng có thể thựchiện trên đó mỗi khi được kích hoạt Một ứng dụng có thể có nhiều Activity vàchúng có thể gọi qua lại lẫn nhau Mỗi Activity là một dẫn xuất của lớp

Android.app.activity.

Một ứng dụng gọi điện thoại có thể gồm các hoạt động như hiển thị một danhsách các liên hệ để gọi tới, hoạt động thứ hai là gọi tới số điện thoại liên hệ đượcchọn, ngoài ra còn có các hoạt động khác nữa như xem nhật ký cuộc gọi hay thay

Trang 23

đổi cài đặt Mặc dù, chúng làm việc cùng nhau để tạo thành một giao diện ngườidùng nhưng mỗi Activity độc lập với những cái khác Mỗi Activity là một lớp concủa lớp cơ sở Activity.

Một ứng dụng có thể gồm chỉ một Activity hay nhiều Activity tùy theo yêucầu của mỗi ứng dụng Thông thường, một trong số các Activity được đánh dấu làActivity đầu tiên phải được chạy đầu tiên khi ứng dụng được khởi động Để chuyển

từ một Activity hiện tại sang Activity khác bằng cách cho Activity hiện tại khởiđộng Activity kế tiếp

Mỗi Activity được đưa ra một cửa sổ mặc định để vẽ vào Thông thường, cửa

sổ này sẽ lấp đầy màn hình, nhưng ta có thể tùy chọn để nó nhỏ hơn màn hình vànằm trên các cửa sổ khác Ngoài ra nó cũng có thể có thêm các cửa sổ con khác như

là hộp thoại,… Nội dung của cửa sổ của hoạt động được cung cấp bởi một hệ thốngcấp bậc các View (là đối tượng của lớp Views)

Android có một số View đã xây dựng sẵn mà người dùng có thể sử dụng.Gồm có các: Buttons, text fields, scroll bars, menu items, check box, image view,image view button, video view, Một cây phân cấp View được đặt trong một cửa

sổ của Activity bằng phương thức Activity.setContentView() ContentView là đốitượng View ở gốc của cây phân cấp

1.3.1.2 Vòng đời của Activity

Các Activity trong hệ thống được quản lý bởi một cấu trúc dữ liệu ngăn xếp.Khi có một hoạt động được khởi tạo nó được đẩy vào trong ngăn xếp, chuyển sangtrạng thái thực thi và hoạt trộng trước đó sẽ chuyển sang trạng thái chờ Hoạt độngnày chỉ trở lại trạng thái kích hoạt khi mà hoạt động vừa khởi tạo kết thúc việc thựcthi

Một Activity có 3 trạng thái chính:

- Active hoặc running: Khi nó ở trên nhất màn hình và nhận tương tác với

người dùng

Trang 24

- Paused: Khi Activity không còn là trọng tâm trên màn hình nhưng vẫn hiện

thị trước người dùng

- Stopped: Khi một Activity hoàn toàn bị che khuất, nó sẽ rơi vào trạng thái

Stopped Tuy nhiên, nó vẫn còn lưu trữ toàn bộ thông tin trạng thái và nó thường bị

hệ thống đóng lại khi có tình trạng thiếu bộ nhớ

Khi chuyển giữa các trạng thái, ứng dụng sẽ gọi các hàm callback ứng với cácbước chuyển:

- OnCreate(): Được gọi khi hoạt động được tạo ra lần đầu tiên.

- OnStart(): Được gọi khi hoạt động trở nên hữu hình so với người dùng.

- OnResume(): Được gọi khi hoạt động bắt đầu tương tác với người sử dụng.

- OnPause(): Được gọi để dừng các hoạt động hiện tại và nối lại các hoạt động

trước đó

- OnStop(): Được gọi khi hoạt động không còn hiển thị với người dùng.

- OnDestroy(): Được gọi trước khi hoạt động bị phá hủy bởi hệ thống (bằng tay

Vòng đời của một Activity có thể được thể hiện trong những quá trình sau:

Trang 25

Hình 1.2: Vòng đời của một Activity.

Toàn bộ thời gian sống của một Activity bắt đầu từ lời gọi đầu tiên tới phương

thức onCreate() cho tới lời gọi phương thức onDestroy() Trong quá trình này, một

Activity sẽ khởi tạo lại tất cả các tài nguyên cần sử dụng trong phương thức

onCreate() và giải phóng chúng khi phương thức onDestroy() được thực thi.

Thời gian sống có thể nhìn thấy của một Activity bắt đầu từ lời gọi tới phương

thức onStart() cho tới khi phương thức onStop() của nó được thực thi Toàn bộ các

Trang 26

tài nguyên đang được sử dụng bởi Activity vẫn tiếp tục được lưu giữ, người dùng cóthể thấy giao diện nhưng không tương tác được với hoạt động do trong qua trìnhnày Activity không ở trạng thái chạy tiền cảnh.

Thời gian sống tiền cảnh của một Activity là quá trình bắt đầu từ khi có lời gọi

tới phương thức onResume() và kết thúc bằng lời gọi tới phương thức onPause().

Trong thời gian này, hoạt động chạy ở tiền cảnh và có thể tương tác với người dùng

1.3.2 Service

1.3.2.1 Khái niệm Service

Một Service (dịch vụ) là các đoạn mã được thực thi ngầm bởi hệ thống màngười sử dụng không thấy được Service sử dụng để cập nhật dữ liệu, đưa ra cáccảnh báo Mỗi Service đều được mở rộng từ lớp cơ sở là Service trong gói

Android.app.service Có thể kết nối tới hoặc kích hoạt một Service thông qua

Interface mà Service đưa ra

Ví dụ như một chương trình phát nhạc trên điện thoại, sẽ có vài hoạt động chophép người dùng duyệt danh sách các bài hát và lựa chọn bài hát nào để phát Tuynhiên, chức năng phát nhạc không được thiết kế như một Activity bởi chúng ta sẽmuốn chuyển qua cửa sổ khác, như khi soạn tin nhắn thì bài hát vẫn tiếp tục đượcphát Trong trường hợp này, ứng dụng phát nhạc sẽ khởi tạo một dịch vụ bằng cách

sử dụng phương thức Context.startservice().

Một ứng dụng có thể dễ dàng thực hiện liên kết tới một Service đang chạy

(thậm chí khởi động nếu nó chưa thực thi) bằng phương thức Context.bindservice().

Khi đó Service này sẽ cung cấp cho ứng dụng cơ chế để giao tiếp với chúng thông

qua giao diện gọi là IBinder (đối với dịch vụ phát nhạc có thể cho phép dừng hoặc

chuyển qua bài nhạc kế tiếp)

1.3.2.2 Vòng đời của một Service

Vòng đời của một Service được hiểu là quá trình hoạt động từ khi nó được tạo

ra cho tới khi bị loại khỏi hệ thống

Trang 27

Có hai cách thức để một dịch vụ có thể được chạy trong hệ thống:

Khi hệ thống có lời gọi tới phương thức Context.startService() Trong trường

hợp này, dịch vụ sẽ được thực hiện liên tục cho tới khi hệ thống gọi phương thức

Context.stopService().

Khi các ứng dụng gọi phương thức Context.bindService() để tạo kết nối với

dịch vụ (dịch vụ sẽ được khởi tạo nếu tại thời điểm đó nó đang không hoạt động)

Ứng dụng sẽ nhận được một đối tượng IBinder do dịch vụ trả lại để có thể gọi các

phương thức Callback phù hợp để truy cập tới các trạng thái của dịch vụ Nếu do lời

gọi Context.bindService() mà dịch vụ được khởi tạo thì nó sẽ được thực thi cho tới

khi nào kết nối trên (tức là đối tượng IBinder) vẫn còn tồn tại

Hình 1.3 cho ta thấy được hai phương thức để một dịch vụ có thể được khởi

Trang 28

Hình 1.3: Sơ đồ chuyển đổi trạng thái của Service.

1.3.3 Inten

Intent là nền tảng để truyền tải các thông báo Intent được sử dụng để gửi cácthô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 Ví dụ, khi mở một trang Web bạn gửi một Intent đi để tạo mộtActivity mới hiển thị trang Web đó

Intent 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 với nhau Ứng dụng Android thường bao gồm

Trang 29

nhiều Activity, 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ệu gọicũng như truyền các dữ liệu cần thiết tới một Activity khác Điều này cũng giốngnhư việc di chuyển qua lại giữa các Forms trong lập trình Windows Form.

Hình 1.4: Chức năng của Intent.

Content provider được kích hoạt khi chúng được gọi từ một ContentResolver

Ba thành phần khác (Activity, service và Broadcast Rreceiver) được kích hoạt bởithông điệp không đồng bộ từ các Intent Một Intent là một đối tượng có kiểu Intentchứa nội dung của thông điệp Với các hoạt động và dịch vụ, nó gọi tên hành độngđược yêu cầu và xác định URI của dữ liệu tác động tới ở giữa Ví dụ, nó có thểtruyền tải một yêu cầu cho một hoạt động hiển thị một hình ảnh cho người dùng haycho phép người dùng sửa văn bản Với bộ nhận quảng bá, đối tượng Intent gọi têncủa hành động được thông báo Ví dụ, bộ nhận quảng bá có thể thông báo các phần

nó quan tâm là nút chụp ảnh đã được bấm hay chưa

Có vài phương thức cho việc kích hoạt mỗi thành phần:

Một hoạt động được khởi động thông qua một đối tượng Intent

Context.startActivity() hay Activity.startActivityForResult() Hoạt động đáp lại có

thể theo dõi Intent được tạo ra đó bằng phương thức getIntent() và cập nhật thông

qua phương thức setIntent(Intent) Android gọi phương thức onNewIntent() để bỏ

qua các Intent đến trước nó

Một Activity (hoạt động) thường bắt đầu bằng một Activity khác Nếu nó

Trang 30

muốn trả lại kết quả của một Activity (hoạt động) nó đã khởi chạy, nó sẽ gọi

phương thức startActivityForResult() thay cho phương thức startActivity() Ví dụ,

nếu nó khởi chạy một hoạt động mà cho phép người dùng lấy một ảnh, nó có thểmuốn lấy kết quả của ảnh được chọn Kết quả được trả về trong một đối tượng

Intent thông qua phương thức onActivityResult().

Một Service (dịch vụ) được bắt đầu thông qua một đối tượng Intent là

Context.startService() Android gọi phương thức onStart() của dịch vụ và thông qua

đối tượng Intent của nó

Tương tự, một Intent có thể thông qua Context.bindService() để thiết lập một

kết nối liên tục giữa các thành phần và dịch vụ đích Dịch vụ nhận đối tượng Intent

qua lời gọi onBind(), nếu dịch vụ chưa được kích hoạt bindService() có thể chọn bắt

đầu nó Ví dụ, một hoạt động có thể thiết lập kết nối với dịch vụ phát nhạc đề cập ởphần trước để nó có thể cung cấp cho người dùng giao diện sử dụng để điều khiển

phát lại Hoạt động sẽ gọi bindService() để thiết lập kết nối và sau đó gọi phương

thức đã định nghĩa bởi dịch vụ để áp dụng phát lại ca khúc

Một ứng dụng có thể khởi tạo một quảng bá thông qua đối tượng Intent bằng

phương thức như Context.setBroadcast(), Context.setOrderedBroadcast() và Context.sendStickyBroadcast() Android chuyển những Intent tới tất cả các bộ nhận quảng bá nào quan tâm bằng việc gọi phương thức onReceive() của nó.

Trang 31

Một ứng dụng có thể có một số Broadcast Receiver để đáp lại bất cứ thôngbáo nào mà nó cho là quan trọng Tất cả các Receiver mở rộng từ lớp cơ sở

BroadcastReceiver.

Có hai bước quan trọng để cho Broadcast Receivers làm việc:

- Bước 1: Tạo Broadcast Receiver.

- Bước 2: Đăng ký Broadcast Receiver.

Có thêm một bước nữa trong trường hợp bạn implement các Intents tùy chỉnh

của bạn thì bạn sẽ phải tạo Broadcast các Intents đó

Broadcast Receiver không hiển thị một giao diện người dùng Tuy nhiênchúng có thể bắt đầu một Activity để đáp lại thông tin mà chúng nhận hay chúng có

thể sử dụng NotificationManager để cảnh báo người dùng Notifications có thể lấy

sự chú ý của người dùng bằng nhiều cách khác nhau như là: Sáng màn hình, hiển thịthông báo, rung thiết bị, bật âm thanh nào đấy,… Thông thường, chúng thường lấymột biểu tượng bền vững trong thanh trạng thái và đặt thông báo trên thanh trạngthái, nơi người dùng có thể nhận được thông báo

1.3.5 Content Provider

Content providers là thành phần cung cấp dữ liệu từ một ứng dụng đến một

ứng dụng khác dựa trên các Request Mỗi Request được xử lý bằng các phươngthức của class ContentResolver Một Content Provider có thể sử dụng các cách lưutrữ dữ liệu khác nhau, dữ liệu có thể được lưu trữ trong databases, file, thậm chíthông qua Network

Mỗi ứng dụng Android chạy trong các tiến trình riêng của chính mình và nó cócác điều khoản riêng của nó, điều mà giữ dữ liệu của ứng dụng ẩn với các ứng dụngkhác Tuy nhiên, thỉnh thoảng nó được yêu cầu chia sẻ dữ liệu đến các ứng dụngkhác sử dụng Content Provider trong việc này rất hữu ích

Content Providers cho phép bạn tập trung dữ liệu ở một nơi và các ứng dụngkhác nhau sẽ truy xuất vào nó khi cần thiết Content Provider hoạt động rất giốngvới một cơ sở dữ liệu và bạn có thể truy vấn nó, chỉnh sửa nội dung, cũng như là

Trang 32

thêm, xóa các nội dung sử dụng các phương thức: Insert(), update(), delete(),query() Trong nhiều trường hợp dữ liệu được lưu trữ trong SQLite.

Content Provider sẽ kế thừa class ContentProvider và phải implement mộtchuẩn tập các API để cho phép các ứng dụng khác thực hiện xử lý các giao dịch

1.3.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 Notification là một cơ chế cho phép tại một thời điểm nhất định trìnhbày một thông tin trên thanh trạng thái (Status bar) ở phía trên màn hình.Mỗi khi thanh trạng thái được mở ra thì một danh sách những Notification đượchiển thị, khi người dùng chọn vào một Notification thì có thể một Activity đượckích hoạt

 Một Nofication thông thường gồm các thành phần sau đây:

– Một Icon (xuất hiện trên Status bar và ở nội dung chi tiết củaNotification)

– Ticker text (xuất hiện trên status bar)

– Notification title text (xuất hiện ở nội dung chi tiết)

– Notification body text (xuất hiện ở nội dung chi tiết)

– Một Intent (Launch Activity khi ta kích vào nội dung chi tiết)

Hình 1.5: Ví dụ về Notification.

1.4 Cấu trúc một Project Android

1.4.1 Cấu trúc một Project Android trong Eclipse

Cấu trúc hình cây của một Project Android trong Eclipse như hình 1.6

Trang 33

Hình 1.6: Cấu trúc hình cây của Project Android.

Ta thấy rằng cấu trúc một Project Android gồm các thành phần chính như sau:

- Src: Chứa các Package gồm các lớp ứng dụng và xử lý liên quan đến Activity,

các xử lý

- Gen: Chứa các tập tin Java được phát sinh ra tự động Tốt nhất là không được

thêm hay sửa đổi bất kì giá trị gì của các tập tin nằm trong Gen Nếu không tất cảcác giá trị vừa thêm hay sửa đổi đó sẽ được phục hồi về giá trị ban đầu Trong tậptin R.java của thư mục Gen chứa các định danh (địa chỉ ID) cho tất các đối tượngtrên giao diện của tất cả màn hình, của tất cả các nguồn tài nguyên gồm hình ảnh,giá trị, layout, màu sắc, trong thư mục Res

- Google APIs: Nếu ta chọn Target name là Android 4.2.2 thì thư mục sẽ trở

thành Android 4.2.2 Trong đây chứa các tập tin có đuôi jar là toàn bộ các hàm APIcủa Android và Google là Android.jar và maps.jar Ngoài ra, nếu chương trình củachúng ta cần sự hỗ trợ các hàm do bên thứ 3 cung cấp thì ta có thể thêm tham chiếu

và chúng ta sẽ có thêm thư mục Referenced Libraries chứa các tập tin jar gồm các

bộ hàm hỗ trợ của bên thứ 3

Trang 34

- Bin: Nơi chứa tập tin cài đặt ứng dụng và có phần mở rộng là apk.

- Asset: Các tài nguyên trong thư mục này sẽ không được Android đánh định

danh ID cho nó

- Res: Chứa các nguồn tài nguyên có trong chương trình như thư mục drawable

chứa các hình ảnh hay hình nền của chương trình gồm các tập tin hình ảnhhoặc xml Thư mục layout chứa các khung giao diện chương trình và thư mục

values chứa các giá trị như chuỗi, màu sắc, Tập tin AndroidManifest.xml chứa các

thiết lập cho chương trình như các quyền cho phép truy cập vào phần cứng, thiết lậpmàn hình chính, các thuộc tính của chúng và còn rất nhiều thiết lập khác

1.4.2 Một số tập tin quan trọng của Android

1.4.2.1 MainActivity.java

Khi một ứng dụng được tạo ra thì thông thường sẽ có một Activity để khởichạy ứng dụng Ở đây ta hiểu rằng MainActivity.java chính là class chứa toàn bộsource code, còn activity_main.xml chính là phần giao diện Đối với Android khimột Activity tạo ra thì thường nó đi kèm với một Layout giao diện nào đó (tức là nóluôn được tách thành 2 phần: Phần source code riêng và phần giao diện riêng)

Đây là code mặc định của file MainActivity.java.

Trang 35

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// as you specify a parent Activity in AndroidManifest.xml

- Bất cứ thành phần nào được triển khai như một phần trong ứng dụng, phải

được khai báo trong tập tin AndroidManifest.xml Tệp tin này giống như một giao

diện để giao tiếp giữa hệ điều hành Android và ứng dụng của bạn Vì vậy, nếu thànhphần nào bạn dùng mà không khai báo trong tập tin này, thì hệ điều hành sẽ khôngxem xét đến chúng

- Đây là code mặc định của AndroidManifest.xml

<?xml version="1.0"encoding="utf-8"?>

Trang 36

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</Activity>

</application>

</manifest>

- <application>…</application>: Thẻ bao quanh các thành phần có liên quan

trong ứng dụng Thuộc tính Android:icon sẽ trỏ đến các Icon có sẵn trong thư mụcres/drawable-hdpi Ứng dụng này sẽ sử dụng hình ic_launcher làm Icon

- <Activity>…</Activity>: Thẻ này được sử dụng để nêu chi tiết về một

Activity Thuộc tính android:name được sử dụng để mô tả chi tiết về tên class củamột Activity Thuộc tính android:label xác định một chuỗi ký tự được sử dụng là

Trang 37

nhãn cho Activity đó Nếu trong ứng dụng của bạn có nhiều Activity thì bạn sẽ phảitạo nhiều thẻ <Activity>.

- <action />: Thuộc tính Android.intent.action.main để cho Android biết rằng

Activity này sẽ được khởi động lên đầu tiên khi chạy ứng dụng

- <category />: Thuộc tính Android.intent.category.launcher để cho Android

biết ứng dụng có thể được chạy từ một Icon trên thiết bị

- @string: Sẽ được chỉ định đến file strings.xml, @string/app_name sẽ được

dẫn đến chuỗi app_name nó là HelloWord

Sau đây là một số thẻ khác mà chúng ta có thể sử dụng trong tập tin

AndroidManifest.xml.

- <Activity> là thẻ dành cho các Activity.

- <Service> là thẻ dành cho các Services.

- <receiver> là thẻ dành cho các Broadcast Receivers.

- <provider> là thẻ dành cho các Content Providers.

1.4.2.3 Strings.xml

- Strings.xml đây là tập tin được đặt trong thư mục res/values chứa tất cả các

chuỗi kí tự mà ứng dụng của bạn sử dụng Ví dụ tên của các buttons, các labels, cáctext mặc định bạn nên để trong tập tin này

Code mặc định của tập tin Strings.xml:

<?xml version="1.0"encoding="utf-8"?>

<resources>

<string name="app_name">NGUYENHUY</string>

<string name="hello_world">Hello world!</string>

<string name="action_settings">Settings</string>

</resources>

Trang 38

1.4.2.4 R.java

R.java tạo ra mối liên kết giữa các tập tin Activity và các tập tin Resource (ví

dụ như giữa tập tin MainActivity.java và tập tin strings.xml) Tệp tin này được tạo

ra tự động và bạn không nên thay đổi nội dung trong tệp tin này

Sau đây là một ví dụ về nội dung của tệp tin R.java:

package com.example.radiobutton;

public final class R {

public static final class attr {

}

public static final class dimen {

public static final int Activity_horizontal_margin=0x7f040000;

public static final int Activity_vertical_margin=0x7f040001;

}

public static final class drawable {

public static final int ic_launcher=0x7f020000;

}

public static final class id {

public static final int TableLayout1=0x7f080000;

public static final int action_settings=0x7f080008;

public static final int rbBeDe=0x7f080005;

public static final int rbNam=0x7f080003;

public static final int rbNu=0x7f080004;

public static final int rbgGioiTinh=0x7f080002;

public static final int textView1=0x7f080001;

public static final int tvKetQua=0x7f080007;

}

public static final class layout {

public static final int Activity_main=0x7f030000;

}

Trang 39

public static final class menu {

public static final int main=0x7f070000;

}

public static final class string {

public static final int action_settings=0x7f050002;

public static final int app_name=0x7f050000;

public static final int hello_world=0x7f050001;

}

public static final class style {

public static final int AppBaseTheme=0x7f060000;

public static final int AppTheme=0x7f060001;

}

}

1.4.2.5 Activity_main.xml

Activity_main.xml là một tệp tin layout nằm trong thư mục res/layout Tệp tin

này sẽ được tham chiếu bởi ứng dụng khi tạo ra giao diện trên màn hình Bạn sẽphải thay đổi nội dung tệp tin này rất nhiều trong khi tạo giao diện cho ứng dụng

Đây code mặc định của tệp tin Activity_main.xml.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

Trang 40

android:layout_height="wrap_content"

android:text="@string/hello_world" />

</RelativeLayout>

- RelativeLayout: Là một trong số nhiều các layout của Android

- TextView: Là một trong nhiều thành phần của layout trong việc xây dựng giao

diện TextView có nhiều thuộc tính như:

 android:layout_width=”wrap_content”

 android:layout_height=”wrap_content”

Ngày đăng: 28/08/2017, 16:06

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w