Tổng quan về giáo trình
Giáo trình Lập trình Android cơ bản (Quyển 1) do ThS. Nguyễn Văn Hiệp và KS. Đinh Quang Hiệp (Khoa Điện – Điện tử, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh) biên soạn, được Nhà xuất bản Đại học Quốc gia Thành phố Hồ Chí Minh xuất bản năm 2015. Trong chương trình đào tạo đại học kỹ thuật, tài liệu này đóng vai trò là học liệu cơ sở chuyên ngành, cầu nối giữa kiến thức lập trình phần mềm và kỹ thuật phần cứng dành cho sinh viên thuộc các khối ngành kỹ thuật như Điện – Điện tử, Điện tử viễn thông và Điều khiển – Tự động hóa.
Mục tiêu học tập của giáo trình là trang bị cho người học hệ thống kiến thức nền tảng về cấu trúc hệ điều hành di động mã nguồn mở, kỹ năng cấu hình môi trường lập trình và khả năng xây dựng các ứng dụng Android hoàn chỉnh ở mức cơ bản. Thông qua các bài học, người học đạt được chuẩn đầu ra về việc thiết kế giao diện đồ họa (UI), xử lý tương tác người dùng, quản lý vòng đời ứng dụng, khai thác dịch vụ hệ thống (định vị, gửi tin nhắn, thư điện tử) và lưu trữ dữ liệu cục bộ.
Cấu trúc giáo trình gồm 13 chương và phần tài liệu tham khảo, được tổ chức theo phương pháp sư phạm tiếp cận từng bước: từ tổng quan lịch sử, phân tích kiến trúc tầng, hướng dẫn cài đặt công cụ, đến chi tiết kỹ thuật lập trình và hiện thực tính năng. Tác giả chủ động tách nội dung thành hai quyển độc lập: Quyển 1 tập trung hoàn toàn vào kỹ năng lập trình Android nền tảng; Quyển 2 mở rộng sang các bài toán điều khiển chuyên sâu và giám sát hệ thống nhúng.
Điểm đặc thù của giáo trình nằm ở việc định hướng nội dung trực tiếp cho sinh viên kỹ thuật phần cứng. Thay vì đào sâu vào các lý thuyết công nghệ phần mềm phức tạp, tài liệu tinh gọn các nguyên lý lý thuyết thông qua các ví dụ thực hành cụ thể, tạo tiền đề để người học kết hợp kiến thức điện tử và điều khiển tự động nhằm xây dựng các hệ thống giám sát qua thiết bị cầm tay.
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Nội dung 13 chương của giáo trình được tổ chức tuần tự theo tiến trình phát triển từ phần cứng, nền tảng hệ điều hành đến lập trình phần mềm ứng dụng:
- Chương 1: Lịch sử phát triển của thiết bị di động và hệ điều hành di động: Khái quát các mốc phát triển phần cứng viễn thông, khởi đầu từ phát minh điện thoại của Alexander Graham Bell (1867/1876), thiết bị Carry Phone (1967), Motorola DynaTAC của Martin Cooper (1973), Nokia 1011 (1992), Nokia 9000 Communicator (1996), Motorola StarTAC (1996), Nokia 7110 hỗ trợ WAP (1999) đến Motorola Razr V3 (2004). Đồng thời, chương này phân tích sự tiến hóa của các hệ điều hành di động tiêu biểu: Symbian (tiền thân là EPOC32 Release 5 trên Ericsson R380 năm 2000, Nokia N-Gage 2003), BlackBerry OS của RIM (từ thiết bị nhắn tin hai chiều 1999 đến BB 5810, 6710, 8700, Bold 9000, Touch 9800, Z10), Apple iOS (từ hợp tác trên Motorola Rokr 2005 đến iPhone 2G năm 2007, 3G, 3GS, iPhone 5 năm 2012) và Microsoft Windows Phone 7 với giao diện Metro (2010).
- Chương 2: Tổng quan về hệ điều hành Android: Giới thiệu quá trình hình thành công ty Android Inc. do Andy Rubin đồng sáng lập (10/2003), sự kiện Google mua lại (17/08/2005), việc thành lập Liên minh thiết bị cầm tay mở (Open Handset Alliance - OHA) ngày 05/11/2007 và mẫu máy thương mại đầu tiên HTC Dream (22/10/2008). Chương phân tích quá trình tiến hóa qua các phiên bản: Android 1.1 (hỗ trợ cập nhật Over-The-Air - OTA), 1.5 Cupcake, 1.6 Donut (hỗ trợ CDMA và đồ họa độc lập độ phân giải), 2.0/2.1 Eclair, 2.2 Froyo (hỗ trợ Adobe Flash và USB/Wi-Fi Tethering), 2.3 Gingerbread (hỗ trợ NFC), 3.0 Honeycomb (dành riêng cho máy tính bảng, ra mắt trên Motorola XOOM), 4.0 Ice Cream Sandwich, 4.1-4.3 Jelly Bean (tích hợp Google Now, Bluetooth 4.0 Low Energy), 4.4 KitKat (tối ưu hóa cho thiết bị RAM 512MB) và Android 5.0 Lollipop (ngôn ngữ Material Design). Phần cốt lõi của chương trình bày kiến trúc phân tầng hệ thống và so sánh trình thực thi máy ảo Dalvik (cơ chế Just-In-Time - JIT) với trình phiên dịch Android Runtime - ART (cơ chế Ahead-Of-Time - AOT).
- Chương 3: Phần mềm phát triển ứng dụng Android: Trình bày quy trình cài đặt môi trường lập trình trên hệ điều hành Windows: bộ công cụ Java Development Kit (JDK 7 Update 21 của Oracle), môi trường phát triển tích hợp Eclipse (phiên bản Galileo), tích hợp Android Plugin ADT (Android Development Tools), cấu hình Android SDK Manager để tải các gói API Level (từ API 14 đến 17/18) và khởi tạo thiết bị giả lập Android Virtual Devices (AVD Emulator).
- Chương 4: Các thành phần cơ bản trong Android Project: Khảo sát cấu trúc tệp tin của một dự án Android (thư mục
src, gen, res, tệp cấu hình AndroidManifest.xml), các khái niệm về lập trình hướng đối tượng bằng Java trong môi trường Eclipse và quy trình biên dịch tệp thực thi .apk thông qua các công cụ dx và aapt.
- Chương 5: Các thiết kế giao diện người dùng (UI Layouts): Trình bày nguyên lý xây dựng giao diện ứng dụng thông qua cấu trúc tệp XML, phân loại và cách áp dụng các bộ bố cục chuẩn gồm
LinearLayout, RelativeLayout, TableLayout, FrameLayout và AbsoluteLayout.
- Chương 6: Các điều khiển giao diện người dùng cơ bản (UI Controls): Khảo sát các thành phần điều khiển giao diện cơ bản trong lớp kế thừa View của Android như
TextView, EditText, Button, CheckBox, RadioButton, ToggleButton và Spinner.
- Chương 7: ListView: Trình bày kỹ thuật hiển thị dữ liệu danh sách thông qua thành phần
ListView, cơ chế ánh xạ dữ liệu bằng Adapter (ArrayAdapter, BaseAdapter) và tối ưu hóa hiển thị trên giao diện người dùng.
- Chương 8: Hiển thị hình ảnh và Menu: Kỹ thuật xử lý đồ họa thông qua các điều khiển
ImageView, Gallery và phương pháp tạo thanh điều hướng bằng OptionsMenu, ContextMenu.
- Chương 9: Xử lý sự kiện: Trình bày 3 cơ chế xử lý sự kiện tương tác (
EventListener):
- Đăng ký thông qua lớp lồng ẩn danh (anonymous inner class).
- Hiện thực giao diện Listener trực tiếp trong lớp
Activity.
- Khai báo thuộc tính sự kiện trực tiếp trong tệp cấu hình giao diện
activity_main.xml.
- Chương 10: Activity và Intent: Phân tích vòng đời của một màn hình ứng dụng (
ActivityLifecycle) và kỹ thuật liên kết, truyền nhận dữ liệu giữa các Activity thông qua cơ chế Intent (Explicit Intent và Implicit Intent).
- Chương 11: Dịch vụ xác định vị trí: Hướng dẫn tích hợp thư viện Google Maps API, hiển thị bản đồ số trên ứng dụng di động, điều khiển góc nhìn và sử dụng dịch vụ
LocationManager để lấy tọa độ địa lý.
- Chương 12: Lưu dữ liệu: Các phương thức lưu trữ dữ liệu cục bộ gồm: đọc dữ liệu tĩnh từ thư mục tài nguyên (
res/raw), đọc/ghi tệp tin trên bộ nhớ trong hoặc thẻ nhớ ngoài qua File I/O, và tạo lập, quản lý cơ sở dữ liệu có cấu trúc bằng hệ quản trị cơ sở dữ liệu quan hệ nhúng SQLite (SQLiteOpenHelper).
- Chương 13: Tin nhắn và Email: Hướng dẫn xây dựng chức năng gửi tin nhắn SMS tự động (
SmsManager) và kích hoạt giao thức gửi thư điện tử thông qua việc gọi các ứng dụng tích hợp sẵn của hệ thống.
Kiến thức nền tảng được xây dựng
Giáo trình thiết lập hệ thống lý thuyết về kiến trúc ngăn xếp (Stack Architecture) của Android gồm 4 tầng cốt lõi:
- Tầng hạt nhân Linux (Linux Kernel): Dựa trên nhân Linux 2.6 đã được tùy biến, quản lý trực tiếp phần cứng thông qua các trình điều khiển:
Display Driver, Camera Driver, Bluetooth Driver, USB Driver, Keypad Driver, Wifi Driver, Audio Driver, Binder (IPC) Driver (phục vụ liên lạc giữa các tiến trình), M-Systems Driver (quản lý bộ nhớ flash/SD) và hệ thống Power Management.
- Tầng thư viện và Android Runtime: Tập hợp các thư viện viết bằng C/C++ (
System C library, Media Framework trên nền PacketVideo OpenCore hỗ trợ MP3, H.264, MPEG4, Surface Manager, Webkit, SGL, OpenGL/ES 2D/3D, FreeType, SQLite). Phân hệ Android Runtime gồm các thư viện lõi Java (Core Libraries) và máy ảo Dalvik Virtual Machine (thực thi mã nhị phân .dex).
- Tầng khung ứng dụng (Application Framework): Cung cấp các giao diện lập trình ứng dụng (API) gồm
Activity Manager (quản lý vòng đời ứng dụng), Window Manager, View System (TextView, EditText, GridView...), Content Providers (chia sẻ dữ liệu giữa các ứng dụng), Resource Manager (quản lý tài nguyên không phải mã nguồn), Location Manager, Notification Manager, Telephony Manager và Package Manager.
- Tầng ứng dụng (Applications): Chạy trực tiếp trên máy tính ảo với định dạng
.apk, hoạt động đa nhiệm theo cơ chế cấp phát định danh người dùng (User ID) riêng biệt nhằm cô lập tài nguyên.
Kỹ năng phát triển
- Kỹ năng kỹ thuật: Cài đặt, cấu hình môi trường phát triển Eclipse kết hợp ADT Plugin và Android SDK. Lập trình bằng ngôn ngữ Java theo chuẩn SDK của Google. Sử dụng các công cụ SDK như
dx (biên dịch .class thành .dex), aapt (đóng gói tài nguyên), sqlite3 và mksdcard.
- Kỹ năng phân tích: Đọc hiểu sơ đồ kiến trúc hệ điều hành, phân tích sự khác biệt về hiệu năng giữa cơ chế thông dịch động JIT của Dalvik và tiền biên dịch AOT của ART. Lựa chọn cấu trúc giao diện XML và cấu trúc dữ liệu phù hợp với giới hạn bộ nhớ của thiết bị cầm tay.
- Kỹ năng thực hành: Xây dựng hoàn chỉnh các ứng dụng tương tác giao diện người dùng, cấu hình thiết bị máy ảo AVD để gỡ lỗi (debugging) và kiểm thử (testing), thao tác với hệ thống tệp và cơ sở dữ liệu SQLite cục bộ.
Phương pháp giảng dạy và học tập
Giáo trình áp dụng phương pháp sư phạm thực hành trực quan (hands-on approach). Các phần lý thuyết về hệ điều hành được tinh gọn và minh họa trực tiếp thông qua các hình ảnh chụp màn hình từ các bước thao tác thực tế trong môi trường Eclipse, SDK Manager và cấu hình máy ảo AVD.
Hệ thống bài tập và thực hành được thiết kế gắn liền với từng mô-đun chức năng:
- Thực hành cấu hình hệ thống: Hướng dẫn chi tiết quy trình tải và cài đặt JDK 7u21 64-bit, giải nén bộ gói
adt-bundle-windows, tích hợp đường dẫn SDK vào mục Preferences của Eclipse, tải các gói API qua giao diện SDK Manager và tạo lập hồ sơ máy ảo AVD với các thông số màn hình, bộ vi xử lý (ARM, Intel x86) tương ứng.
- Thực hành lập trình chức năng: Từng chương từ Chương 5 đến Chương 13 đều đưa ra các ca triển khai cụ thể: tạo giao diện bằng kéo thả hoặc viết mã XML, liên kết các đối tượng giao diện với mã nguồn Java thông qua hàm
findViewById(), hiện thực mã xử lý sự kiện nút bấm, truy vấn cơ sở dữ liệu SQLite và gọi dịch vụ hệ thống bằng Intent.
Về phương pháp đánh giá, giáo trình định hướng kiểm tra năng lực sinh viên thông qua các bài thực hành định kỳ tại phòng máy và đồ án môn học. Tiêu chí đánh giá tập trung vào mức độ hoàn thiện của sản phẩm ứng dụng: khả năng chạy ổn định trên bộ giả lập AVD, thiết kế giao diện đúng chuẩn bố cục và khả năng xử lý chính xác các tương tác sự kiện người dùng mà không gây lỗi dừng ứng dụng ngoài ý muốn.
Đối với việc tự học, tác giả khuyến nghị người học thực hiện theo quy trình:
- Tiếp cận tuần tự các chương để nắm vững cấu trúc thư mục của một dự án Android.
- Tự gõ lại toàn bộ các đoạn mã ví dụ thay vì sao chép nhằm ghi nhớ cú pháp và các phương thức trong API.
- Sử dụng công cụ theo dõi hệ thống LogCat và trình kiểm tra mã nguồn Android Lint được tích hợp trong Eclipse để chẩn đoán lỗi trong quá trình chạy thử nghiệm.
- Tra cứu thêm thông tin tại các tài liệu
Document (Javadoc) và mã nguồn mẫu Sample được tải về kèm theo các gói SDK Platform.
Điểm nổi bật và cập nhật
Giáo trình ghi nhận các chuyển dịch công nghệ của hệ sinh thái di động tại thời điểm xuất bản (cuối năm 2014, đầu năm 2015):
- Chuyển đổi từ Dalvik sang ART (Android Runtime): Tài liệu phân tích chuyên sâu về sự thay thế bộ máy ảo Dalvik tồn tại từ các phiên bản đầu bằng trình thực thi ART. Trong khi Dalvik sử dụng cơ chế Just-In-Time (JIT) – chỉ biên dịch mã bytecode sang mã máy khi ứng dụng được kích hoạt, dẫn đến độ trễ khi thực thi và tiêu tốn năng lượng – thì ART áp dụng cơ chế Ahead-Of-Time (AOT), biên dịch toàn bộ mã bytecode thành mã máy ngay tại thời điểm cài đặt. Giáo trình nêu rõ các dữ liệu thực nghiệm: ART giúp ứng dụng khởi chạy nhanh hơn gấp đôi, tối ưu hóa hoạt động đa nhân và giảm tải bộ nhớ RAM, dù dung lượng tệp thực thi sau cài đặt tăng khoảng 10-20%.
- Tích hợp chuẩn Bluetooth 4.0 Low Energy (BLE): Chương 2 cập nhật công nghệ Bluetooth trên Android 4.3 Jelly Bean, phân biệt rõ giữa hai loại thiết bị: Bluetooth Smart (thiết bị ngoại vi cảm biến tiêu thụ năng lượng thấp) và Bluetooth Smart Ready (thiết bị trung tâm như Nexus 4, Nexus 7 có khả năng giao tiếp đa chuẩn). Ngoài ra, tài liệu đề cập đến chuẩn profile AVRCP 1.3 cho phép truyền siêu dữ liệu bài hát qua kết nối không dây.
- Tối ưu hóa tài nguyên cho thiết bị phần cứng thấp: Phân tích cải tiến trên Android 4.4 KitKat, cho phép hệ điều hành hoạt động trên các dòng thiết bị chỉ có bộ nhớ RAM 512MB, mở rộng khả năng tiếp cận của phần mềm trên đa dạng phân khúc phần cứng.
- Định hướng ứng dụng vào kỹ thuật điều khiển: Điểm khác biệt lớn nhất của giáo trình là hướng viết nhắm tới sinh viên các ngành kỹ thuật Điện – Điện tử. Giáo trình không dừng lại ở lập trình ứng dụng văn phòng hay thương mại thuần túy mà chuẩn bị các nền tảng giao tiếp thiết bị (Bluetooth, SMS, định vị) để kết nối trực tiếp với các hệ thống đo lường và điều khiển công nghiệp trong các phần học tiếp theo.
Đối tượng sử dụng giáo trình
Giáo trình được biên soạn phục vụ các nhóm đối tượng cụ thể trong môi trường đại học:
- Sinh viên đại học khối ngành kỹ thuật: Tài liệu được thiết kế trực tiếp cho sinh viên từ năm thứ hai hoặc năm thứ ba thuộc các chuyên ngành: Kỹ thuật Điện – Điện tử, Kỹ thuật Điện tử viễn thông và Kỹ thuật Điều khiển và Tự động hóa. Sinh viên các ngành Công nghệ thông tin hoặc Hệ thống thông tin cũng có thể sử dụng làm tài liệu tiếp cận cơ bản.
- Điều kiện tiên quyết (Prerequisites): Người học cần trang bị kiến thức cơ bản về ngôn ngữ lập trình Java (cú pháp, các kiểu dữ liệu, lập trình hướng đối tượng cơ bản với lớp, kế thừa, giao diện Interface) và cấu trúc máy tính căn bản. Không bắt buộc phải có kiến thức chuyên sâu về công nghệ phần mềm trước khi tiếp cận.
- Giảng viên chuyên ngành: Sử dụng làm đề cương bài giảng và tài liệu hướng dẫn thực hành cho các môn học: Lập trình thiết bị di động, Hệ thống nhúng, hoặc các học phần thực tập đồ án chuyên ngành Điện tử – Tự động hóa. Giảng viên có thể sử dụng các ví dụ trong tài liệu để thiết kế các bài tập tình huống trên lớp.
- Người tự học và kỹ sư thực hành: Tài liệu đóng vai trò là sách hướng dẫn từng bước (step-by-step) dành cho các kỹ sư phần cứng muốn bổ sung kỹ năng lập trình giao diện trên điện thoại di động thông minh để điều khiển vi điều khiển, PLC hoặc thu thập dữ liệu cảm biến từ xa.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với ai?
Tài liệu hướng đến sinh viên chuyên ngành Điện – Điện tử, Viễn thông và Tự động hóa tại các trường đại học kỹ thuật, cũng như những người mới tiếp cận lập trình Android muốn nắm vững cấu trúc cơ bản mà không bị quá tải bởi các lý thuyết phần mềm trừu tượng.
2. Cần kiến thức nền tảng nào trước khi học?
Người học cần nắm được kiến thức nền về ngôn ngữ lập trình Java ở mức cơ bản (cú pháp câu lệnh, cấu trúc điều khiển, khái niệm lớp và phương thức) cùng kỹ năng thao tác trên máy tính (hệ điều hành Windows).
3. Điểm khác biệt của giáo trình so với các tài liệu lập trình Android khác là gì?
Giáo trình tinh gọn lý thuyết thuần túy, loại bỏ các kiến thức thuật toán phức tạp của ngành phần mềm, tập trung cung cấp các ví dụ mã nguồn mẫu trực tiếp và hướng dẫn từng bước bằng hình ảnh. Đồng thời, cấu trúc giáo trình được phân tách làm hai tập, trong đó tập này chuẩn bị toàn bộ kỹ năng nền tảng để phục vụ cho tập 2 chuyên về các ứng dụng điều khiển và giám sát thiết bị ngoại vi.
4. Làm sao để tự học hiệu quả với tài liệu này?
Người học cần thực hiện tuần tự việc cài đặt trọn vẹn bộ công cụ JDK 7, Eclipse và Android SDK theo đúng hướng dẫn tại Chương 3. Sau đó, tiến hành lập trình lại toàn bộ mã nguồn của từng chương từ Chương 5 đến Chương 13, kết hợp chạy thử nghiệm trên máy ảo AVD để quan sát kết quả và đọc bảng thông báo LogCat để tự phát hiện lỗi.
5. Có tài liệu bổ trợ nào kèm theo giáo trình không?
Giáo trình cung cấp liên kết tham khảo đến tài nguyên tài liệu chính thức của Google (trang nhà phát triển Android), các thư viện mã nguồn mẫu (Samples) và hệ thống Javadoc tích hợp sẵn trong bộ cài đặt Android SDK Manager. Ngoài ra, tác giả biên soạn tiếp tập 2 (Quyển 2) để hướng dẫn chi tiết các ứng dụng điều khiển chuyên sâu.
Kết luận
Giáo trình Lập trình Android cơ bản của nhóm tác giả ThS. Nguyễn Văn Hiệp và KS. Đinh Quang Hiệp là tài liệu học tập chuẩn hóa về mặt cấu trúc, hệ thống hóa toàn diện các kiến thức nền tảng về hệ điều hành di động và kỹ thuật xây dựng ứng dụng di động cho khối ngành kỹ thuật công nghệ. Tài liệu giải quyết hiệu quả bài toán tích hợp kiến thức phần mềm vào chương trình đào tạo của sinh viên khối ngành Điện – Điện tử và Tự động hóa.
Lộ trình học tập được thiết lập rõ ràng, đi từ việc làm chủ công cụ và các thành phần giao diện, xử lý sự kiện đến quản lý dịch vụ hệ thống và lưu trữ dữ liệu. Sau khi hoàn thành nội dung Quyển 1, người học có đầy đủ kỹ năng lập trình cơ sở để tiếp tục nghiên cứu Quyển 2 về ứng dụng điều khiển nhúng, hoặc tham khảo thêm các tài liệu chính thức từ trang nhà phát triển của Google để mở rộng năng lực phát triển ứng dụng di động trong thực tế.