GIÁO TRÌNH HỌC PHẦN: LẬP TRÌNH DI ĐỘNG II (MÃ HỌC PHẦN: CNC107315)


Tổng quan về giáo trình

Giáo trình Lập trình di động II (Mã học phần: CNC107315) được biên soạn bởi giảng viên Tiêu Kim Cương, do Khoa Công nghệ Thông tin – Trường Cao đẳng Công nghệ Thủ Đức (Ủy ban Nhân dân Thành phố Hồ Chí Minh) ban hành năm 2021. Tài liệu được thiết kế phục vụ công tác đào tạo và nghiên cứu học thuật cho hệ Cao đẳng ngành Công nghệ Thông tin.

+-----------------------------------------------------------------------+
| THÔNG TIN TỔNG QUAN HỌC PHẦN                                          |
+-------------------+---------------------------------------------------+
| Tên học phần      | Lập trình di động II                              |
| Mã học phần       | CNC107315                                         |
| Đơn vị ban hành   | Khoa CNTT - Trường Cao đẳng Công nghệ Thủ Đức     |
| Tác giả biên soạn | Tiêu Kim Cương                                    |
| Thời lượng        | 60 tiết                                           |
| Vị trí đào tạo    | Tự chọn chuyên ngành (Hướng Phát triển ứng dụng)   |
| Điều kiện tiên quyết| Lập trình di động I, Cơ sở dữ liệu, Lập trình Java|
+-------------------+---------------------------------------------------+

Học phần có thời lượng 60 tiết, thuộc khối kiến thức chuyên ngành tự chọn theo định hướng Phát triển ứng dụng trên thiết bị di động. Giáo trình nhằm trang bị cho sinh viên năng lực hoàn thiện và nghiên cứu chuyên sâu các chuyên đề nâng cao trên hệ điều hành Android, làm cơ sở xây dựng các ứng dụng quy mô vừa và nhỏ.

Chuẩn đầu ra của giáo trình được xây dựng theo mô hình chuẩn CDIO, bao gồm:

  • Nắm vững kỹ thuật thiết kế giao diện chuyên sâu và tùy biến hệ thống giao diện trong Android;
  • Làm chủ kỹ thuật kết nối tài nguyên Internet và điều phối tiến trình bất đồng bộ;
  • Triển khai các thành phần cốt lõi của Android OS gồm ContentProvider, BroadcastReceiver, Service, và kết nối Firebase;
  • Khai thác phần cứng thiết bị thông qua màn hình cảm ứng, SensorFramework, định vị và bản đồ số Google Maps;
  • Hình thành tác phong lập trình chuyên nghiệp, khả năng làm việc nhóm, kỹ năng viết báo cáo kỹ thuật và năng lực tự học.

Giáo trình tiếp cận theo phương pháp tích hợp và tái sử dụng mã nguồn từ các ứng dụng nền tảng đã thực hiện ở học phần trước, kết hợp mở rộng chức năng theo yêu cầu kỹ thuật từ doanh nghiệp phần mềm.


Nội dung kiến thức cốt lõi

Các chương và chủ đề chính

Giáo trình gồm 5 chương lý thuyết và thực hành, được phân bổ liền mạch theo mức độ phức tạp kỹ thuật:

+--------------------------------------------------------------------------+
| CẤU TRÚC CHƯƠNG TRÌNH ĐÀO TẠO                                            |
+----------+------------------------------------+--------------------------+
| Chương   | Nội dung trọng tâm                 | Thực hành & Ứng dụng mẫu |
+----------+------------------------------------+--------------------------+
| Chương 1 | Kỹ năng thiết kế giao diện nâng cao| TH 1 - 14                |
|          | (Theme, Style, Custom Widget,      | (Widget Player,          |
|          |  Multi-Screen, RecyclerView)       |  Quản lý nhân sự)        |
+----------+------------------------------------+--------------------------+
| Chương 2 | Làm việc với tài nguyên Internet   | TH 15 - 19               |
|          | (HttpURLConnection, Retrofit 2,    | (WeatherForecast,        |
|          |  GSON, DownloadManager)            |  Tải file chạy ngầm)     |
+----------+------------------------------------+--------------------------+
| Chương 3 | ContentProvider, BroadcastReceiver,| TH 20 - 35               |
|          | Service và Firebase                | (PersonPickerActivity,   |
|          | (Intent-filter, Background Service)|  ContactPicker, Music)   |
+----------+------------------------------------+--------------------------+
| Chương 4 | Màn hình tương tác và Cảm biến     | TH 36 - 39               |
|          | (Touchscreen, SensorFramework)     | (Ứng dụng Compass)       |
+----------+------------------------------------+--------------------------+
| Chương 5 | Bản đồ trực tuyến Map và Location  | TH 40 - 41               |
|          | (LocationManager, Google Maps API) | (Định vị & Bản đồ số)    |
+----------+------------------------------------+--------------------------+
  • Chương 1: Một số kỹ năng thiết kế giao diện nâng cao: Trình bày việc chuẩn hóa giao diện bằng Style và Theme trong res/values/styles.xml; phân loại và xây dựng Widget mới thông qua việc gom nhóm Compound View kế thừa từ LinearLayout (minh họa bằng bộ điều khiển Widget Player với các trạng thái normal, pressed, selected thông qua XML Selector và Java Interface PlayerDelegation); kỹ thuật hỗ trợ đa màn hình theo mật độ điểm ảnh (ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) và đa hướng (layout-land); cấu trúc danh sách tối ưu hiệu năng RecyclerView kết hợp CardView và các LayoutManager (LinearLayoutManager, GridLayoutManager, StaggeredGridLayoutManager); kỹ thuật tùy biến thanh ActionBar và tiêu đề ứng dụng.
  • Chương 2: Làm việc với tài nguyên trên mạng Internet: Phân loại hệ thống phân quyền Android (install-time permission, runtime permission, special permission); kỹ thuật kết nối mạng bằng HttpURLConnection; xử lý tiến trình ngầm và trích xuất dữ liệu Web Service thông qua thư viện Retrofit 2 kết hợp converter-gson (xây dựng dự án WeatherForecast kết nối API từ openweathermap.org); quản lý tệp tin tải về bằng DownloadManager, cấu hình thông báo và lưu trữ định danh tác vụ trong SharedPreferences.
  • Chương 3: Sử dụng Content Provider, Broadcast Receiver, Service và Firebase: Khai báo và xử lý Intent không tường minh kèm bộ lọc <intent-filter> (action, category, data); cơ chế nhận kết quả từ Sub-Activity qua startActivityForResult(); xây dựng BroadcastReceiver tiếp nhận sự kiện hệ thống bằng mã nguồn (hạn chế đăng ký tĩnh theo chuẩn Android 8.0); thiết lập ContentProvider chia sẻ cơ sở dữ liệu SQLite giữa các ứng dụng độc lập; quản lý tiến trình nền với Service và lập lịch tác vụ ngầm; tích hợp công cụ Firebase Assistant, Firebase Database và Firebase Cloud Messaging (FCM).
  • Chương 4: Điều khiển màn hình tương tác và cảm biến: Xử lý các dạng thao tác chạm trên màn hình cảm ứng (Touchscreen); cấu trúc SensorFramework, phân loại cảm biến phần cứng và đọc giá trị cảm biến thời gian thực (minh họa qua bài toán la bàn số Compass).
  • Chương 5: Bản đồ trực tuyến Map và Location: Kỹ thuật thu thập tọa độ người dùng thông qua dịch vụ vị trí; khởi tạo và cấu hình khóa API Key trên Google Cloud Console; hiển thị bản đồ và đánh dấu tọa độ trong ứng dụng Android.

Kiến thức nền tảng được xây dựng

Giáo trình củng cố các nguyên lý nền tảng của kỹ thuật phần mềm di động:

  • Mô hình kiến trúc Android: Quản trị vòng đời thành phần (Activity, Service, BroadcastReceiver, ContentProvider).
  • Cơ chế tái sử dụng và quản lý tài nguyên: Phân tách tài nguyên giao diện (res/values, res/drawable, res/layout) giúp mã nguồn linh hoạt khi chạy trên các thiết bị có tỷ lệ màn hình và mật độ điểm ảnh khác nhau.
  • Mô hình lập trình bất đồng bộ (Asynchronous Programming): Tách biệt luồng hiển thị giao diện (UI Thread) và luồng xử lý dữ liệu nặng (Background Thread) để ngăn chặn hiện tượng treo ứng dụng (Application Not Responding).
  • Mô hình trao đổi dữ liệu liên ứng dụng: Kiến trúc ủy quyền dữ liệu dựa trên URI và bộ phân giải nội dung (ContentResolver).

Kỹ năng phát triển

  • Kỹ năng kỹ thuật (Technical skills): Thiết kế giao diện động; tùy biến component; cấu hình mạng và phân tích cú pháp JSON; kết nối cơ sở dữ liệu cục bộ (SQLite) và đám mây (Firebase Realtime Database); lập trình tương tác phần cứng ngoại vi.
  • Kỹ năng phân tích (Analytical skills): Phân tích cấu trúc phản hồi Web Service; đánh giá hiệu năng giao diện (tối ưu hóa View Holder so với ListView truyền thống); lựa chọn cấu hình Permission và LayoutManager tương thích theo yêu cầu bài toán.
  • Kỹ năng nghề nghiệp thực tế (Practical competencies): Xây dựng giải pháp phần mềm theo quy trình phân tích – thiết kế – cài đặt – kiểm thử; tuân thủ quy chuẩn viết code có cấu trúc.

Phương pháp giảng dạy và học tập

Giáo trình triển khai phương pháp sư phạm thực hành theo chuẩn đầu ra CDIO, kết hợp chặt chẽ giữa lý thuyết hệ thống và bài tập lập trình dự án:

+--------------------------------------------------------------------------+
| MÔ HÌNH PHƯƠNG PHÁP ĐÀO TẠO VÀ THỰC HÀNH                                 |
+-------------------+------------------------------------------------------+
| Phương pháp       | Đào tạo tích hợp, học tập qua dự án (Project-based)  |
| Khối lượng bài tập| 41 bài tập thực hành (TH 1 đến TH 41)                |
| Dự án thực nghiệm | WeatherForecast, MusicPlayer, PersonPickerActivity,  |
|                   | Compass, Download Manager, Quản lý nhân sự           |
| Hình thức tự học  | Giải quyết bài tập làm thêm và bài tập nâng cao (*)  |
| Đánh giá kết quả  | Kiểm tra mã nguồn thực thi, xử lý lỗi và ngoại lệ    |
+-------------------+------------------------------------------------------+

Hệ thống bài tập và ca học thực nghiệm (Case Studies)

Tài liệu tích hợp 41 bài tập thực hành được đánh số chi tiết (từ Bài thực hành số 1 đến Bài thực hành số 41) gắn liền với các ví dụ cụ thể:

  • Bài tập TH 1 – TH 2: Tối ưu hóa layout bằng cách trích xuất thuộc tính sang Style và Theme.
  • Bài tập TH 3 – TH 7: Thiết kế Widget Player gồm 5 nút ImageView, xây dựng Selector trạng thái, viết lớp Java điều khiển kế thừa LinearLayout và thiết lập ủy quyền PlayerDelegation.
  • Bài tập TH 8 – TH 9: Tạo biến thể giao diện xoay ngang trong res/layout-land và phân chia kích thước theo mật độ điểm ảnh.
  • Bài tập TH 10 – TH 12: Chuyển đổi ứng dụng Quản lý nhân sự từ ListView sang RecyclerView kết hợp CardView và RecyclerViewAdapter.
  • Bài tập TH 15 – TH 18: Xây dựng ứng dụng dự báo thời tiết WeatherForecast bằng thư viện Retrofit 2, chuyển đổi đối tượng JSON qua lớp Data Model Weather.
  • Bài tập TH 20 – TH 21: Triển khai PersonPickerActivity và tương tác với ứng dụng Contact hệ thống thông qua startActivityForResult().
  • Bài tập TH 22: Ứng dụng chạy ngầm tệp tin với DownloadManager và lắng nghe sự kiện ACTION_DOWNLOAD_COMPLETE.
  • Bài tập TH 36 – TH 41: Đọc dữ liệu từ SensorFramework cho ứng dụng la bàn và tích hợp Google Maps API Key.

Phương pháp kiểm tra và hướng dẫn tự học

  • Đánh giá năng lực: Đánh giá dựa trên mức độ hoàn thiện của sản phẩm phần mềm, khả năng xử lý ngoại lệ mạng (MalformedURLException, NetworkOnMainThreadException) và khả năng cấu hình đúng tệp tin AndroidManifest.xml.
  • Hướng dẫn tự học: Cuối mỗi chương đều có danh mục câu hỏi lý thuyết và bài tập làm thêm có đánh dấu phân hóa (như viết trò chơi Snake, tùy biến EditText chứa ImageView, cấu hình RecyclerView chạy banner tự động), định hướng người học tự tra cứu tài liệu từ cổng developer.android.com.

Điểm nổi bật và cập nhật

Giáo trình ghi nhận những điểm cải tiến kỹ thuật theo tiến trình phát triển của hệ điều hành Android:

+--------------------------------------------------------------------------+
| NỘI DUNG NÂNG CẤP VÀ CHUẨN HÓA KỸ THUẬT                                   |
+-------------------+------------------------------------------------------+
| Thành phần        | Giải pháp kỹ thuật trong giáo trình                  |
+-------------------+------------------------------------------------------+
| Hiển thị danh sách| Thay thế ListView bằng RecyclerView + CardView       |
|                   | (Bắt buộc ViewHolder, hỗ trợ đa LayoutManager)       |
| Xử lý mạng ngầm   | Thay thế AsyncTask bằng Retrofit 2 + Gson Converter  |
| Cơ chế phân quyền | Cập nhật quy chuẩn Runtime Permission (Android 6.0+) |
| BroadcastReceiver | Hạn chế đăng ký tĩnh, chuyển sang code (Android 8.0+)|
| Công nghệ phụ trợ | Tích hợp Firebase, Google Maps API, Sensor Framework |
+-------------------+------------------------------------------------------+
  • Tối ưu hóa hiệu năng danh sách: Loại bỏ phương thức ListView truyền thống khi xử lý danh sách lớn; chuyển đổi sang RecyclerView kết hợp CardView (yêu cầu từ Android 5.0 – API 21 trở lên), bắt buộc mô hình ViewHolder để tái sử dụng view và giảm tần suất gọi lệnh findViewById().
  • Hiện đại hóa xử lý Web Service: Thay thế công cụ AsyncTask (vốn đã bị khuyến cáo ngừng sử dụng do quản lý luồng phức tạp) bằng thư viện Retrofit 2 và converter-gson, giúp tự động hóa quá trình phân tích dữ liệu JSON sang POJO (Plain Old Java Object).
  • Cập nhật quy chuẩn an ninh và hệ thống: Phân tích chi tiết quy trình xử lý Runtime Permission bắt đầu từ Android 6.0 (API level 23); cập nhật giới hạn đăng ký tĩnh BroadcastReceiver trong Manifest đối với các implicit intent từ Android 8.0 trở đi nhằm tiết kiệm năng lượng pin.
  • Tích hợp dịch vụ đám mây và phần cứng: Đưa các công nghệ thực tế vào chương trình gồm Firebase Assistant, dịch vụ thông báo đẩy FCM, cơ chế chia sẻ tệp FileProvider, khung cảm biến SensorFramework và Google Maps API.

Đối tượng sử dụng giáo trình

  • Sinh viên chuyên ngành: Dành cho sinh viên năm thứ hai hoặc năm thứ ba hệ Cao đẳng ngành Công nghệ Thông tin đã hoàn thành học phần Lập trình di động I và học phần Cơ sở dữ liệu.
  • Yêu cầu kiến thức tiên quyết:
    • Nắm chắc cú pháp lập trình Java hướng đối tượng (Kế thừa, Lớp trừu tượng, Giao diện Interface, Xử lý ngoại lệ Try...Catch);
    • Hiểu biết về cấu trúc Activity, View cơ bản và truy vấn SQLite căn bản;
    • Kỹ năng sử dụng môi trường phát triển tích hợp Android Studio.
  • Giảng viên chuyên ngành: Tài liệu làm khung giáo trình chuẩn cho học phần 60 tiết, cung cấp cấu trúc bài giảng, đề mục thực hành và hệ thống bài tập đánh giá năng lực người học.
  • Lập trình viên và người tự học: Sử dụng làm tài liệu tham khảo để chuẩn hóa kỹ thuật xây dựng ứng dụng Android native, tra cứu các mẫu triển khai Custom Widget, Retrofit 2, ContentProvider và BroadcastReceiver.

Câu hỏi thường gặp

+--------------------------------------------------------------------------+
| TỔNG HỢP GIẢI ĐÁP THẮC MẮC (FAQ)                                         |
+---+----------------------------------+-----------------------------------+
| # | Câu hỏi                          | Trọng tâm giải đáp                |
+---+----------------------------------+-----------------------------------+
| 1 | Giáo trình phù hợp với ai?       | Sinh viên CNTT Cao đẳng/Đại học   |
|   |                                  | và người học Android native       |
+---+----------------------------------+-----------------------------------+
| 2 | Cần kiến thức nền tảng nào?      | Lập trình Java OOP, SQLite,       |
|   |                                  | kiến thức Lập trình di động I     |
+---+----------------------------------+-----------------------------------+
| 3 | Điểm khác biệt của giáo trình?   | Tái sử dụng dự án có sẵn, dùng    |
|   |                                  | Retrofit 2 thay cho AsyncTask     |
+---+----------------------------------+-----------------------------------+
| 4 | Phương pháp tự học hiệu quả?     | Làm tuần tự 41 bài thực hành,     |
|   |                                  | giải bài tập dấu sao (*) mở rộng  |
+---+----------------------------------+-----------------------------------+
| 5 | Tài liệu bổ trợ đi kèm là gì?    | Trang Android Developers chính thức|
|   |                                  | và kho API OpenWeatherMap         |
+---+----------------------------------+-----------------------------------+

1. Giáo trình này phù hợp với ai?

Giáo trình được thiết kế chuẩn hóa cho sinh viên trình độ Cao đẳng và Đại học ngành Công nghệ Thông tin theo học chuyên ngành Phát triển phần mềm di động, đồng thời phù hợp với các kỹ sư phần mềm cần tài liệu hệ thống hóa kiến thức Android native.

2. Cần kiến thức nền nào để học?

Người học cần hoàn tất học phần Lập trình di động I, nắm vững kiến thức lập trình hướng đối tượng với Java (đặc biệt là cơ chế Interface, Generic, và kế thừa View), cùng kỹ năng thao tác cơ sở dữ liệu SQLite.

3. Điểm khác biệt với giáo trình khác?

Giáo trình chọn cách tiếp cận tích hợp: thay vì viết mới hoàn toàn, sinh viên tái sử dụng và nâng cấp các ứng dụng sẵn có (như máy tính bỏ túi, quản lý nhân sự). Về mặt công nghệ, tài liệu cập nhật trực tiếp Retrofit 2, RecyclerView + CardView, và Firebase Assistant thay cho các phương pháp cũ như AsyncTask hay ListView.

4. Làm sao để tự học hiệu quả?

Người học cần thực hiện tuần tự 41 bài thực hành trên Android Studio, tự tay viết và cấu hình các lớp XML/Java, phân tích lỗi tại cửa sổ Logcat, và chủ động hoàn thành các bài tập nâng cao có đánh dấu sao (*) ở mục câu hỏi cuối chương.

5. Có tài liệu bổ trợ nào kèm theo?

Tài liệu cung cấp hệ thống đường dẫn tham khảo trực tiếp đến tài liệu chính thức của Google (developer.android.com), tài liệu cấu hình API từ openweathermap.org, cùng các thư viện mã nguồn mở như Retrofit 2, GSON, CardView tích hợp qua Gradle.


Kết luận

Giáo trình Lập trình di động II (CNC107315) của Trường Cao đẳng Công nghệ Thủ Đức cung cấp hệ thống kiến thức hoàn chỉnh về phát triển ứng dụng di động nâng cao trên nền tảng Android. Giáo trình bám sát yêu cầu thực tiễn của doanh nghiệp thông qua việc kết hợp giữa lý thuyết nền tảng và 41 bài tập thực nghiệm chi tiết.

Lộ trình học tập đề xuất cho người học: $$\text{Tối ưu giao diện (Chương 1)} \longrightarrow \text{Xử trị mạng & Web Service (Chương 2)} \longrightarrow \text{Dịch vụ ngầm & Dữ liệu (Chương 3)} \longrightarrow \text{Phần cứng & Bản đồ (Chương 4, 5)}$$

Để đạt kết quả cao nhất, người học nên kết hợp nghiên cứu nội dung giáo trình cùng việc tra cứu tài liệu cập nhật tại cổng thông tin nhà phát triển Android (developer.android.com) và thực hành thường xuyên trên môi trường Android Studio.