Bối cảnh và vấn đề nghiên cứu

Sự phát triển nhanh chóng của công nghệ di động và hệ điều hành mã nguồn mở Android đã đưa điện thoại thông minh trở thành thiết bị phổ biến toàn cầu. Đi kèm với sự gia tăng của các ứng dụng di động là nhu cầu cấp thiết về các giải pháp lưu trữ, đồng bộ hóa dữ liệu thời gian thực (real-time) mà không đòi hỏi xây dựng hệ thống máy chủ phụ trợ (backend) phức tạp. Trong bối cảnh đó, nền tảng đám mây Firebase do Google cung cấp nổi lên như một giải pháp Backend-as-a-Service (BaaS) giúp tối ưu hóa quá trình phát triển ứng dụng di động.

Đề tài khóa luận tốt nghiệp "Tìm hiểu lập trình cơ sở với Android Firebase và ứng dụng" được thực hiện bởi sinh viên Hoàng Việt Anh, ngành Công nghệ Thông tin, Trường Đại học Dân lập Hải Phòng (nay là Trường Đại học Quản lý và Công nghệ Hải Phòng), dưới sự hướng dẫn của ThS. Phùng Anh Tuấn trong khoảng thời gian từ ngày 01/07/2019 đến ngày 21/09/2019.

Nhiệm vụ nghiên cứu và yêu cầu kỹ thuật được xác định cụ thể trong văn bản giao đề tài gồm:

  1. Nội dung nghiên cứu:

    • Tìm hiểu tổng quan kiến trúc và cơ chế hoạt động của hệ điều hành Android.
    • Khảo sát môi trường và công cụ lập trình Android Studio.
    • Nghiên cứu nền tảng Firebase và kỹ thuật lập trình tương tác cơ sở dữ liệu thời gian thực (Firebase Realtime Database).
    • Xây dựng chương trình ứng dụng thực nghiệm dựa trên các kiến thức đã tìm hiểu.
  2. Yêu cầu kỹ thuật cần giải quyết:

    • Nắm vững các thao tác xử lý dữ liệu cơ bản (CRUD - Create, Read, Update, Delete) với cơ sở dữ liệu Firebase trên nền tảng Android.
    • Sử dụng thành thạo môi trường Android Studio để lập trình ứng dụng di động.
    • Xây dựng hoàn chỉnh chương trình ứng dụng quản lý danh bạ điện thoại, đóng gói thành tệp tin cài đặt định dạng *.apk để triển khai và chạy thử nghiệm trên thiết bị Android vật lý.
    • Ứng dụng tập dữ liệu thực tế từ danh bạ điện thoại của Trường Đại học Dân lập Hải Phòng (HPU).
  • Đối tượng nghiên cứu: Hệ điều hành Android, môi trường phát triển tích hợp Android Studio, nền tảng dịch vụ đám mây Google Firebase và dịch vụ cơ sở dữ liệu Firebase Realtime Database.
  • Phạm vi nghiên cứu: Lập trình ứng dụng phía máy khách (client-side) trên hệ điều hành Android bằng ngôn ngữ Java, giao tiếp trực tiếp với cơ sở dữ liệu đám mây Firebase NoSQL JSON; triển khai thực nghiệm giới hạn trong bài toán quản lý danh bạ nội bộ HPU.

Cơ sở lý thuyết và phương pháp

Khóa luận được xây dựng dựa trên các nền tảng lý thuyết và công nghệ chuyên ngành kỹ thuật phần mềm di động:

  • Khung lý thuyết và công nghệ:

    • Kiến trúc hệ điều hành Android: Nền tảng Linux kernel (phiên bản 2.6 và 3.x), máy ảo Dalvik (Dalvik Executable - .dex) với trình biên dịch động, hệ thống thư viện trung gian (middleware), bộ công cụ phát triển phần mềm Android SDK và mô hình cấp phép mã nguồn mở (Apache 2.0 và GNU GPL v2).
    • Mô hình cơ sở dữ liệu thời gian thực (Firebase Realtime Database): Cơ sở dữ liệu NoSQL lưu trữ dưới cấu trúc cây JSON (JSON tree), phi bảng (non-relational), hỗ trợ cơ chế đồng bộ hóa dữ liệu hai chiều tự động thông qua giao thức WebSockets và các bộ lắng nghe sự kiện (event listeners).
    • Mô hình quản lý sự kiện Android UI: Hệ thống giao diện lập trình hướng sự kiện gồm Event Listeners (View.OnClickListener, View.OnLongClickListener, View.OnKeyListener, View.OnTouchListener) và Event Handlers (onKeyDown, onTouchEvent, onFocusChanged, dispatchTouchEvent).
  • Phương pháp nghiên cứu:

    • Phương pháp nghiên cứu tài liệu kỹ thuật: Thu thập, phân tích tài liệu chuẩn từ Android Developers, tài liệu kỹ thuật Firebase của Google, các báo cáo thị trường công nghệ (Canalys, Gartner, IDC) và các tài liệu liên quan đến an toàn thông tin trên thiết bị di động.
    • Phương pháp thiết kế và xây dựng phần mềm: Phân tích yêu cầu chức năng, thiết kế cấu trúc giao diện XML, thiết kế mô hình dữ liệu JSON, cài đặt logic xử lý bằng ngôn ngữ Java trên IDE Android Studio.
    • Phương pháp thực nghiệm kiểm thử: Chạy thử nghiệm hệ thống trên thiết bị giả lập Android Virtual Device (AVD Manager - cấu hình mẫu Nexus 5) và cài đặt trực tiếp gói *.apk trên điện thoại Android thực tế để kiểm tra khả năng đồng bộ dữ liệu thời gian thực.
  • Nguồn dữ liệu: Dữ liệu danh bạ điện thoại thực tế của cán bộ, giảng viên và các phòng ban thuộc Trường Đại học Dân lập Hải Phòng (HPU).


Thiết kế và triển khai

Khóa luận là đồ án xây dựng phần mềm ứng dụng, bao gồm thiết kế kiến trúc, công nghệ và quy trình cài đặt thực nghiệm được mô tả chi tiết:

1. Kiến trúc hệ thống và công nghệ sử dụng

Hệ thống vận hành theo mô hình Client-BaaS (Backend-as-a-Service):

  • Phía người dùng (Client): Ứng dụng chạy trên thiết bị Android, viết bằng ngôn ngữ Java trên công cụ Android Studio, quản lý vòng đời ứng dụng thông qua AndroidManifest.xml và tổ chức giao diện thông qua các tệp tin XML (layout, values, drawable).
  • Phía dịch vụ nền tảng (Backend): Sử dụng Firebase Realtime Database làm cơ sở dữ liệu đám mây chính. Ứng dụng kết nối trực tiếp đến máy chủ Firebase thông qua thư viện FirebaseDatabase mà không cần xây dựng máy chủ trung gian hay viết mã nguồn backend như PHP hay Node.js.

2. Thiết kế cơ sở dữ liệu

Cơ sở dữ liệu được tổ chức theo cấu trúc cây JSON (parent-children):

  • Nút gốc (Root): Quản lý các nút con đại diện cho từng bảng thực thể.
  • Nút users / contacts: Chứa danh sách các bản ghi dữ liệu. Mỗi bản ghi được định danh bằng một khóa duy nhất (Unique Key) sinh ra từ hàm push().
  • Thuộc tính của đối tượng liên hệ: Bao gồm các trường dữ liệu định dạng chuẩn như name (String), email (String), số điện thoại và các thông tin liên lạc liên quan.
// Cấu trúc mô hình đối tượng dữ liệu được định nghĩa trong ứng dụng
public class User {
    public String name;
    public String email;

    public User() {
        // Constructor mặc định cho DataSnapshot.class
    }

    public User(String name, String email) {
        this.name = name;
        this.email = email;
    }
}

3. Quy trình xử lý dữ liệu với Firebase SDK

Ứng dụng sử dụng các phương thức cốt lõi của Firebase SDK để thao tác dữ liệu:

  • Khởi tạo kết nối: FirebaseDatabase.getInstance().getReference("users").
  • Thêm mới và cập nhật dữ liệu: Sử dụng setValue() trên tham chiếu nút hoặc dùng updateChildren() để cập nhật cục bộ một trường dữ liệu (ví dụ thay đổi email) mà không ghi đè toàn bộ nút.
  • Truy vấn và lắng nghe dữ liệu thời gian thực: Đăng ký bộ lắng nghe ValueEventListener với phương thức callback onDataChange(DataSnapshot dataSnapshot) để tự động cập nhật dữ liệu lên giao diện ngay khi có thay đổi trên máy chủ Firebase.

4. Danh mục màn hình và chức năng ứng dụng

Ứng dụng quản lý danh bạ HPU được thiết kế với các module màn hình cụ thể:

STT Tên màn hình / Chức năng Mô tả chi tiết
1 Màn hình chính (Main Activity) Điểm khởi đầu của ứng dụng, hiển thị tổng quan và điều hướng.
2 Màn hình Menu Cung cấp danh mục các chức năng quản lý danh bạ cho người dùng.
3 Màn hình Thêm contact Giao diện nhập liệu thông tin liên hệ mới (tên, số điện thoại, email) và đẩy lên Firebase.
4 Màn hình Xem Danh sách Contact Sử dụng ListView để hiển thị toàn bộ danh bạ lấy từ cơ sở dữ liệu đám mây.
5 Chức năng tìm kiếm Cho phép lọc và tra cứu nhanh thông tin cán bộ, phòng ban trong danh bạ HPU.
6 Màn hình giới thiệu Hiển thị thông tin đồ án, tác giả và đơn vị đào tạo.
7 Thoát ứng dụng Chức năng đóng tiến trình và giải phóng tài nguyên.

Nội dung chính theo từng chương

Chương 1: Giới thiệu về hệ điều hành Android

Chương này tập trung trình bày tổng quan lịch sử hình thành, kiến trúc kỹ thuật và thực trạng phát triển của hệ điều hành Android từ khi ra đời đến năm 2019:

  • Lịch sử và kiến trúc: Android ban đầu do Tổng công ty Android phát triển, được Google mua lại năm 2005 và chính thức ra mắt năm 2007 cùng Liên minh thiết bị cầm tay mở (OHA). Thiết bị thương mại đầu tiên xuất hiện năm 2008. Hệ điều hành xây dựng trên nhân Linux (2.6 và 3.x), ứng dụng viết bằng Java chạy trên máy ảo Dalvik qua mã .dex.
  • Cơ chế quản lý bộ nhớ và bảo mật: Hệ thống quản lý RAM tự động đóng băng các ứng dụng không hoạt động và tự động diệt (kill) các tiến trình cũ nhất khi bộ nhớ xuống thấp. Cơ chế bảo mật dựa trên mô hình "hộp cát" (sandbox), yêu cầu quyền truy cập rõ ràng từ người dùng và kiểm duyệt ứng dụng qua công cụ Google Bouncer.
  • Thị phần và các vấn đề pháp lý: Văn bản tổng hợp các số liệu phát triển vượt bậc của Android qua các thời kỳ, cùng các cuộc chiến bằng sáng chế tiêu biểu (vụ kiện giữa Oracle và Google đòi bồi thường 6,1 tỷ USD năm 2010; thương vụ Google mua Motorola Mobility giá 12,5 tỷ USD để sở hữu 17.000 bằng sáng chế; các thỏa thuận cấp phép bản quyền với Microsoft).

Số liệu phát triển thị trường của hệ điều hành Android:

Mốc thời gian Tỷ lệ thị phần / Quy mô thiết bị Nguồn dữ liệu thống kê
Quý 2/2009 2,8% thị phần điện thoại thông minh toàn cầu Canalys
Quý 4/2010 33,0% thị phần (vượt Symbian OS để dẫn đầu) Canalys
Quý 3/2011 52,5% thị phần điện thoại thông minh toàn cầu Gartner
Quý 3/2012 75,0% thị phần điện thoại thông minh toàn cầu IDC
Tháng 9/2012 500 triệu thiết bị kích hoạt; 1,3 triệu lượt/ngày; >675.000 ứng dụng Google
Quý 2/2017 87,7% thị phần toàn cầu; 2 tỷ thiết bị kích hoạt Báo cáo thị trường
Tháng 7/2012 52% tại thị trường Mỹ; 90% tại thị trường Trung Quốc Thống kê khu vực
  • Hệ sinh thái mở rộng và nguy cơ mã độc: Hệ điều hành còn được tích hợp trên TV (Google TV), máy ảnh (Nikon Coolpix S800c, Galaxy Camera), thiết bị đeo (Project Glass), máy chơi game (Ouya gây quỹ 8,5 triệu USD) và nhà thông minh (Android@Home). Về an toàn thông tin, văn bản cảnh báo vụ việc phần mềm gián điệp Adups (Thượng Hải) lây nhiễm trên 700 triệu thiết bị toàn cầu, bao gồm 120.000 điện thoại của hãng BLU Products.

Chương 2: Môi trường lập trình Android Studio

Chương 2 hướng dẫn chi tiết quy trình thiết lập môi trường phát triển ứng dụng di động:

  • Yêu cầu hệ thống: Cấu hình máy tính cài đặt Android Studio đòi hỏi hệ điều hành Windows 7/8 (32/64-bit), tối thiểu 4 GB RAM (khuyến nghị 8 GB), dung lượng đĩa trống tối thiểu 400 MB cộng thêm ít nhất 1 GB cho Android SDK, ảnh hệ thống máy ảo và bộ nhớ đệm, màn hình độ phân giải từ 1280 x 800 trở lên và bộ công cụ Java Development Kit (JDK).
  • Cấu trúc dự án: Một dự án Android Studio tiêu chuẩn phân chia thành 3 phần chính: thư mục manifests (chứa AndroidManifest.xml quy định quyền và cấu hình), thư mục java (chứa các lớp mã nguồn), và thư mục res (chứa tài nguyên drawable, layout XML, values).
  • Thành phần giao diện và bộ bố cục (Layouts): Phân tích 3 loại bố cục nền tảng gồm FrameLayout (các phần tử đè lên nhau, căn chỉnh bằng layout_gravity), LinearLayout (sắp xếp tuần tự theo chiều dọc vertical hoặc chiều ngang horizontal), và RelativeLayout (sắp xếp vị trí các phần tử tương đối với nhau hoặc với phần tử cha).
  • Các View cơ bản và xử lý sự kiện: Trình bày cách dùng TextView, EditText, ImageView, Button, ListView. Phân tích chi tiết các giao diện lắng nghe sự kiện (View.OnClickListener, View.OnLongClickListener, View.OnTouchListener, View.OnKeyListener) và các phương thức xử lý sự kiện trong vòng đời Activity.

Chương 3: Giới thiệu cơ sở dữ liệu thời gian thực Firebase và ứng dụng

Nội dung chương 3 tập trung vào công nghệ Firebase và xây dựng phần mềm thực nghiệm:

  • Lịch sử và dịch vụ của Firebase: Tiền thân là startup Evolve thành lập năm 2011 bởi Andrew Lee và James Tamplin, đổi tên thành Firebase vào tháng 4/2012 và được Google mua lại vào tháng 10/2014. Hệ sinh thái Firebase cung cấp đa dạng dịch vụ: Firebase Hosting, Storage, Authentication, Realtime Database, Cloud Messaging, Test Lab, Crash Reporting, Remote Config, Analytics.
  • Ưu và nhược điểm của Firebase:
    • Ưu điểm: Cung cấp sẵn cơ sở hạ tầng đám mây, tích hợp trực tiếp cơ chế xác thực và đồng bộ thời gian thực vào ứng dụng di động mà không cần xây dựng hệ thống máy chủ và viết mã nguồn backend.
    • Nhược điểm: Cơ sở dữ liệu tổ chức dưới dạng cây NoSQL JSON (parent-children), không hỗ trợ cấu trúc bảng và các phép nối phức tạp như mô hình quan hệ (SQL/RDBMS), gây khó khăn nhất định cho người quen lập trình cơ sở dữ liệu truyền thống.
  • Thao tác dữ liệu CRUD: Hướng dẫn cú pháp Java thực hiện các thao tác thêm, đọc, sửa, xóa với DatabaseReference, lắng nghe biến động dữ liệu qua addValueEventListener() và xử lý đối tượng snapshot với DataSnapshot.
  • Triển khai ứng dụng Quản lý danh bạ HPU: Mô tả chi tiết quy trình thiết kế bài toán, cấu trúc dữ liệu, xây dựng giao diện và cài đặt các chức năng từ màn hình chính, màn hình menu, thêm mới danh bạ, xem danh sách, tra cứu tìm kiếm đến chức năng thoát ứng dụng.

Kết quả và đóng góp

Khóa luận đã hoàn thành các mục tiêu kỹ thuật và nhiệm vụ nghiên cứu đặt ra trong đề cương:

  • Kết quả kỹ thuật đạt được:

    • Tổng hợp hệ thống hóa kiến thức nền tảng về hệ điều hành Android, môi trường phát triển Android Studio và kiến trúc dịch vụ đám mây Firebase Realtime Database.
    • Xây dựng thành công ứng dụng "Quản lý danh bạ điện thoại" chạy trên hệ điều hành Android, kết nối trực tiếp và đồng bộ dữ liệu hai chiều thời gian thực với Firebase.
    • Đóng gói hoàn chỉnh ứng dụng thành tệp tin cài đặt *.apk, cài đặt và thực thi thành công trên thiết bị di động Android thật.
    • Ứng dụng thành công tập dữ liệu thực tế của danh bạ Trường Đại học Dân lập Hải Phòng vào việc tra cứu và quản lý thông tin liên lạc.
  • Đánh giá chất lượng đồ án (theo Phiếu nhận xét của Giảng viên hướng dẫn ThS. Phùng Anh Tuấn):

    • Đồ án đã thực hiện đầy đủ các nội dung đề ra trong đề cương tốt nghiệp.
    • Nội dung nghiên cứu và sản phẩm thực nghiệm có tính thực tế cao.
    • Đồ án đạt yêu cầu để bảo vệ tốt nghiệp.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên nội dung văn bản và phiếu nhận xét đánh giá của cán bộ hướng dẫn:

  • Hạn chế:

    • Cấu trúc cơ sở dữ liệu Firebase Realtime Database dạng cây JSON hạn chế khả năng thực hiện các câu truy vấn phức tạp, lọc nhiều điều kiện hoặc liên kết dữ liệu nhiều-nhiều so với hệ quản trị cơ sở dữ liệu quan hệ truyền thống.
    • Ứng dụng thực nghiệm mới tập trung vào các thao tác quản lý danh bạ cơ bản (CRUD), chưa khai thác toàn diện các dịch vụ khác của Firebase.
    • Về mặt thực hiện, giảng viên hướng dẫn nhận xét sinh viên còn hạn chế trong khả năng làm việc độc lập, chưa hoàn toàn chủ động trong việc nghiên cứu tài liệu và cần trình bày báo cáo logic, rõ ràng hơn.
  • Hướng phát triển:

    • Tích hợp thêm các dịch vụ nâng cao trong hệ sinh thái Firebase vào ứng dụng di động như: Firebase Authentication (xác thực người dùng đa phương thức), Firebase Cloud Messaging (gửi thông báo đẩy), Firebase Storage (lưu trữ tệp hình ảnh danh bạ) và Firebase Crashlytics (theo dõi lỗi ứng dụng).
    • Hoàn thiện giao diện người dùng theo chuẩn Material Design và mở rộng quy mô dữ liệu quản lý.

Giá trị tham khảo

Đồ án tốt nghiệp là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin, Kỹ thuật phần mềm: Các sinh viên bắt đầu tiếp cận lập trình ứng dụng di động Android trên môi trường Android Studio hoặc tìm hiểu cách tích hợp các dịch vụ Backend-as-a-Service (BaaS).
  • Lập trình viên mới bắt đầu: Tham khảo các hướng dẫn cấu hình máy ảo AVD, thiết kế giao diện bằng XML (LinearLayout, RelativeLayout), và các mẫu mã nguồn Java tương tác cơ sở dữ liệu thời gian thực với Firebase SDK (setValue, push, ValueEventListener).

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

1. Đề tài tốt nghiệp này giải quyết bài toán ứng dụng thực tế nào?
Đề tài xây dựng ứng dụng di động chạy trên hệ điều hành Android nhằm quản lý và tra cứu danh bạ điện thoại nội bộ, sử dụng dữ liệu thực tế của cán bộ, giảng viên Trường Đại học Dân lập Hải Phòng (HPU), lưu trữ và đồng bộ hóa thời gian thực trên đám mây Firebase.

2. Cấu trúc cơ sở dữ liệu của Firebase Realtime Database trong đồ án có đặc điểm gì?
Cơ sở dữ liệu Firebase được tổ chức theo cấu trúc cây JSON (parent-children), không sử dụng các bảng (Table) hay ngôn ngữ SQL truyền thống. Mọi dữ liệu được lưu dưới dạng các nút (nodes) với các kiểu dữ liệu cơ bản (String, Long, Double, Boolean, Map, List) hoặc đối tượng tùy biến (Custom Object Model) gắn với khóa định danh duy nhất tạo bởi hàm push().

3. Cơ chế lắng nghe và cập nhật dữ liệu thời gian thực trong ứng dụng hoạt động như thế nào?
Ứng dụng sử dụng giao diện ValueEventListener gắn vào đường dẫn tham chiếu DatabaseReference. Khi có bất kỳ thay đổi nào về dữ liệu trên máy chủ Firebase, phương thức onDataChange(DataSnapshot dataSnapshot) sẽ tự động được kích hoạt để lấy dữ liệu mới và cập nhật trực tiếp lên giao diện người dùng ngay lập tức.

4. Môi trường phát triển Android Studio yêu cầu cấu hình phần cứng tối thiểu như thế nào theo tài liệu?
Hệ thống yêu cầu máy tính chạy hệ điều hành Microsoft Windows 7 hoặc 8 (32/64-bit), tối thiểu 4 GB RAM (khuyến nghị 8 GB RAM), dung lượng ổ đĩa trống từ 400 MB trở lên cộng thêm ít nhất 1 GB cho Android SDK, máy ảo giả lập và cache, độ phân giải màn hình tối thiểu 1280 x 800 và đã cài đặt Java Development Kit (JDK).

5. Giảng viên hướng dẫn đưa ra đánh giá thế nào về kết quả thực hiện đồ án của sinh viên?
ThS. Phùng Anh Tuấn đánh giá sinh viên đã thực hiện đầy đủ các nội dung đề ra trong đề cương và nội dung đồ án có tính thực tế, đạt yêu cầu bảo vệ; tuy nhiên lưu ý sinh viên cần cải thiện tính chủ động, khả năng làm việc độc lập và cần trình bày nội dung rõ ràng, logic hơn.


Kết luận

Khóa luận tốt nghiệp "Tìm hiểu lập trình cơ sở với Android Firebase và ứng dụng" của sinh viên Hoàng Việt Anh đã hệ thống hóa các kiến thức cơ bản về hệ điều hành Android, môi trường lập trình Android Studio và cơ sở dữ liệu đám mây Firebase Realtime Database. Đề tài đã xây dựng và đóng gói thành công ứng dụng thực nghiệm quản lý danh bạ HPU thành tệp .apk chạy trên điện thoại di động thật, thực hiện đầy đủ các chức năng thêm, xem, tìm kiếm và đồng bộ dữ liệu thời gian thực. Mặc dù còn những hạn chế về độ phức tạp của mô hình dữ liệu và phạm vi chức năng, đồ án đã hoàn thành đúng mục tiêu đề ra và mang lại giá trị tham khảo thiết thực cho việc học tập lập trình di động kết nối BaaS.