Ngoài việc đó ra nó còn là công cụ để kết nối mọi người với nhau với nhưng chức năng của một chiếc điện thoại thông thường hoặc dùng các ứng dụng của bên thứ 3.. Mặc dù các ứng dụng để k
Trang 1Đề tài: Xây dựng ứng dụng trò chuyện trực tuyến trên android
sử dụng FireBase.
Đà nẵng, tháng 8 năm 2020
Trang 2MỤC LỤC
1
IT279 – Android – 2020-2021… 1
LỜI MỞ ĐẦU 3
CHƯƠNG 1: MÔ TẢ YÊU CẦU 4
1.1 Mô tả yêu cầu bài toán 4
1.2 Biểu đồ use case 4
CHƯƠNG 2: THIẾT KẾ CHI TIẾT 5
2.1 Thiết kế lớp 5
2.1.1 Biểu đồ lớp 5
2.1.2.Thiết kế chi tiết lớp mô hình hướng đối tượng MVC 7
2.2 Thiết kế cơ sở dữ liệu / cấu trúc dữ liệu 10
CHƯƠNG 3: CHƯƠNG TRÌNH MINH HOẠ … 11
3.1 Xây dựng chương trình 12
3.2 Kiểm thử đơn vị 12
3.3 Kết quả chương trình 12
CHƯƠNG 4: KẾT LUẬN VÀ TỰ ĐÁNH GIÁ 14
4.1 Kết luận 14
4.2 Kế hoạch làm việc 14
Tổng kết 15
Tài liệu tham khảo 15
Phụ lục 16
Danh mục hình ảnh được sử dụng 16
Danh mục bảng được sử dụng 16
Trang 3LỜI MỞ ĐẦU
Trong những năm gần đây, bắt đầu từ năm 2010 Cơn vũ bão smart phone đã tràn ngập trong nước ta Ai ai cũng có một chiếc smart phone Smart phone là điện thoại thông minh tích hợp một nền tảng hệ điều hành di động với nhiều tính năng hỗ trợ tiên tiến về điện toán và kết nối dựa trên nền tảng cơ bản của điện thoại di động thông thường
Ban đầu điện thoại thông minh bao gồm các tính năng của điện thoại di động thông thường kết hợp với các thiết bị phổ biến khác như PDA, thiết bị điện tử cầm tay, máy ảnh kỹ thuật số, hệ thống định vị toàn cầu GPS Điện thoại thông minh ngày nay bao gồm tất cả chức năng của laptop như duyệt web, Wi-Fi, các ứng dụng của bên thứ
3 trên di động và các phụ kiện đi kèm cho máy Việc mua và dùng smart phone rất tiện lợi vì nó có thể thay thế hoàn toàn một chiếc máy tính bình thường Ngoài việc đó ra
nó còn là công cụ để kết nối mọi người với nhau với nhưng chức năng của một chiếc điện thoại thông thường hoặc dùng các ứng dụng của bên thứ 3 Mặc dù các ứng dụng
để kết nối mọi người như Mạng xã hội, Chát trực tuyến rất tiện ích nhưng nó cũng đem lại nhưng cái hại như chúng ta mất rất nhiều thời gian vào Mạng xã hội… Chính vì vậy nhân việc học môn lập trình di động em lựa chọn đề tài “ Viết ứng dụng chat sử dụng google API Firebase” Sử dụng ngôn ngữ lập trình hướng đối tượng Java và hệ điều hành Android
Để hoàn thành được bài tập lớn này, em xin được gửi lời cảm ơn chân thành đến thầy giáo hướng dẫn đề tài Thầy Ths.Phạm Hồ Trọng Nguyên, Giảng viên Khoa Công nghệ Thông tin Trường Đại học Công nghệ thông tin Việt Hàn - đã hết lòng giúp đỡ, hướng dẫn, chỉ dạy tận tình để em hoàn thành được đề tài này
Đà Nẵng, tháng 8 năm 2020 Sinh viên Ông Bửu Khánh
Trang 4CHƯƠNG 1: MÔ TẢ YÊU CẦU
1.1 Mô tả yêu cầu bài toán
- Về cơ bản, tổng quát hóa bài toán thì app cần có:
+ Giao diện đăng ký tài khoản, đăng nhập tài khoản
+ Giao diện hiển thị danh sách bạn bè, danh sách các cuộc trò chuyện, danh sách user
+ Giao diện hiện thị các đoạn chát giữa 2 user với nhau
- Về chức năng chính của app là :
+ Chát/ gửi tin nhắn giữa 2 user thông qua internet
1.2 Biểu đồ use case
Hình 1: Biểu đồ use case
Trang 5CHƯƠNG 2: THIẾT KẾ CHI TIẾT
2.1 Thiết kế lớp
2.1.1 Biểu đồ lớp
Trang 6Hình 3: Biểu đồ Activity signup/login
Hình 4: Biểu đồ các Activity
Trang 72.1.2 Thiết kế chi tiết lớp mô hình hướng đối tượng MVC
- Thiết kế chi tiết cho các lớp: Các thuộc tính, phương thức, mối quan hệ, ràng buộc
- Bài toán được thiết kế theo mô hình MVC với cấu trúc như sau:
- Thư mục app chưa các folder như sau:
Manifests : Chứa file AndroidManifest.xml (Phân quyền, chạy app, quản lý…)
- Thự mục java chứa mã nguồn chủ yếu là các package như sau:
Gói Model gồm 2 class: Chat và User
Gói com.ongbuukhanh.chatapp1: Gồm các class chính là các Activity Như mainActivity, loginActivity, startActivity, mainActivity, registerActivity, resetPasswordActivity, messageActivity Các Activity chủ yếu là thực hiện hành động, các function của app Và 1 Activity chính để app có thể hoạt động
Gói Adapter gồm 2 class là: MessageAdapter, UserAdapter
Gói Fragment gồm 3 class là : ChatsFragment, ProfileFragment, UsersFragment
Thự mục res chứa các Folder giao diện, hình ảnh, style của app
+ Drawable, mipmap: Chứa hình ảnh cho app
+ Layout, menu: Chứa giao diện hiển thị của app (chính là View) + values chứa các thuộc tính như attrs, colors, dimens, strings, styles…
Thư mục assets chứa fonts: hỗ trợ ngoài
Hình 5: Hình ảnh cây thư mục chứa các gói
Trang 8- Sau đây là mô tả một số thuộc tính và phương thức chủ yếu của một số lớp chính
- Mô tả chi tiết về 2-4 lớp quan trọng
Bảng 1: Mô tả chi tiết các Attribute và Function chính:
Attribute Ý Nghĩa -msg : String - Nội dung đoạn chát
-status : int - Trạng thái gửi tin nhắn
-date : Date - Thời gian gửi tin nhắn
-id_sender : int
-id_receiver : int
- Mã số của người gửi và nhận
Function Ý Nghĩa +isSeen() : Boolean -Hiển thị trạng thái xem/
không xem tin nhắn +getSender(): int -Trả lại mã số người gửi
+getStatus(): int -Trả lại trạng thái gửi
+setMsg(msg: String) -Thiết lập tin nhắn
+setSender(id_sender: int) -Thiết lập mã người gửi
+setStatus() :boolean -Thiết lập trạng thái gửi
+isSend() : boolean -Kiểm tra xem tin nhăn đã
được gửi đi
+getUid() -Lấy id user đăng nhập
+isSuccessful -Đăng nhập thành công
+createUserWithEmailAndPass -Tạo tài khoản
+readUser() -Hiển thị user
+readChat () -Hiển thị người đã chat
Trang 9+setContent(content:String) -Thiết lập nội dung đoạn chát
-edtLoginUser : EditText -Thông tin đăng nhập
username -edtLoginPass : EditText -Thông tin đăng nhập
password
#onDataChanged
-edtEmail : EditText - Tạo thông tin mới về email
-edtUsername: EditText - Tạo thông tin với username để
dùng -edtPassword: EditText - Tạo password mới dùng cho
user -btnRegister : - Click vào sẽ tạo tài khoản mới
-sendEmailResetPassWord() : - Gửi mail để làm lại password
#onCreate(saved: Bundle)
-signOut -Thoát app
+onComplete() -Chuyển trang khi đăng nhập
thành công
-UserAdapter -Bộ chuyển đổi các user
-mUser - Mảng chứa các user
-ChatAdapter - Bộ chuyển đổi của các tin nhắn
-txt: EditText
-FirebaseDatabase.getInstance() - Cho phép sử dụng database
-txt_Seen -Hiển thị text xem hay ko xem
-img_on
_img_off
-Hiển thị trạng thái online/offline
Trang 10#onCreate(saved: Bundle)
-sendMessage() - Gửi tin nhắn
2.2 Thiết kế cơ sở dữ liệu / cấu trúc dữ liệu
- Thiết kế và chuẩn hoá CSDL
Hình 6: Hình ảnh bảng cơ sở dữ liệu
- NoteParent(“Chats”): Gồm các note con “message”, “receiver”,”sender”
- NoteParent(“User”): “id”,”imageURL”,”search”,”status”,”username”
CHƯƠNG 3: CHƯƠNG TRÌNH MINH HOẠ
3.1 Xây dựng chương trình
- App có sử dụng một vài thư viện hỗ trợ của Android như
+ 'com.google.firebase: firebase-analytics: 17.2.2'
+ 'com.google.firebase: firebase-database: 19.2.1'
+ 'com.google.firebase: firebase-auth: 19.3.0'
+ 'com.google.android.gms: play-services-auth: 18.0.0'
- Trong quá trình lập trình có tuân thủ quy tắc lập trình hướng đối tượng của
Trang 11- Môi trường lập trình là Java, sử dụng IDE Android Studio kết hợp với Máy ảo Genymotion
3.2 Kiểm thử đơn vị
Use case Người tạo Loại lỗi
Dữ liệu kiểm thử/
các bước tái tạo lỗi
Kết quả thực tế
Đăng nhập Ông Bửu Khánh Chức năng
-Nhấn nút đăng nhập với các trường hợp gõ sai tài khoản hoặc mật khẩu hoặc không nhập tất cả các trường.
Hiện lên 1 dialog thông báo đăng nhập thất bại
Tạo tài khoản Ông Bửu Khánh Chức năng
-Gõ email không đúng dạng
abc@gmail.com
Thông báo lỗi email không đúng dạng chuẩn
Liệt kê người gửi
tin nhắn.
Ông Bửu Khánh Chức năng
-Bấm vào phần liệt kê người đã gửi tin nhắn
-App ngừng hoạt động(Vì để List<> vào vòng lập để duyệt)
-Kết quả kiểm thử đơn vị (unit test): Cho thấy App chạy tốt đã xử lý được tất cả các lỗi phát sinh
3.3 Kết quả chương trình:
- Mô tả một số màn hình chức năng chính của chương trình + Giao diện chính của app
+ Giao diện đăng nhập để vào app sử dụng cần username và password
+ Giao diện đăng ký tài khoản
+ Giao diện hiển thị danh sách bạn bè có trong app
+ Giao diện hiển thi danh sách các cuộc trò chuyện với bạn bè
+ Giao diện thể hiện các chức năng của app
+ Giao diện chát giữa 2 user với nhau
Trang 12Hình 7: Giao diện chính, giao diện đăng ký, đăng nhập, verify email vào app
Hình 8: Giao diện chứa các danh sách như chats, users, profiles
Trang 13Hình 9: Giao diện chat và thay đổi ảnh đại diện google driver
CHƯƠNG 4: KẾT LUẬN VÀ TỰ ĐÁNH GIÁ
4.1 Kết luận
- Kết quả đạt được : Qua quá trình làm bài tập lớn em đã nâng cao được tinh thần, kỹ năng làm việc độc lập, kỹ năng viết báo cáo, slide, và quan trọng nhất đó là nâng cao tư duy lập trình hướng đối tượng cũng như sử dụng thành thạo ngôn ngữ lập trình hướng đối tượng java
- Khuyết điểm: App vẫn còn một số tính năng tích hợp định vị google tìm bạn gần đây mà em chưa làm được Một số chức năng hay hữu ích có thể thêm vào app
4.2 Kế hoạch làm việc
• Kế hoạch làm việc:
Tuần 2:
- Gặp thầy hướng dẫn, chọn chủ đề bài tập lớn
Tuần 3:
- Tìm hiểu về Android và môi trường phát triển của Android
- Cài đặt Android Studio, Android SDK hỗ trợ viết code Android
Trang 14- Cài đặt Genimotion và Virtual Box hỗ trợ máy ảo Android
- Tìm hiểu các thành phần trong Android App
Tuần 4:
- Tìm hiểu hệ thống Layout và View trong android như :
+ LinearLayout, TextView, Button, Processbar, ImageView, …
- Xây dựng giao diện đăng nhập, đăng ký tài khoản
Tuần 5:
- Tìm hiểu và làm quen với cơ sở lưu trữ điện toán đám mây Firebase
- Tạo tài khoản, lập cơ sở dữ liệu cho app android và kết nối đến với Firebase
Tuần 6:
- Thiết kế trang Fragment để quản lý tin nhắn cũng như bạn bè
- Thiết kế ViewPager để chuyển hiệu ứng giữa các Tab - Tạo firebase database để kiểm tra đăng ký và đăng nhập
Tuần 7:
- Thiết kế RecyclerView và các Adapter, TabLayout
- Xử lý “Đăng nhập”
Tuần 8:
- Thiết kế cơ sở dữ liệu trên Firebase
Tuần 9 + 10:
- Xử lý chát giữa 2 user và xử lý giao diện hiển thị bạn chát
Tuần 10- 12:
- Hoàn thiện các chức năng cơ bản, các trang giao diện cơ bản
- Review code, kiểm thử tìm lỗi, hoàn thiện App
Tuần 13:
- Viết báo cáo theo đề cương chi tiết
- Nộp bản toàn bộ chương trình và báo cáo
Tuần 14:
Trang 15- Bảo vệ bài tập lớn môn học
- Nghe ý kiến nhận xét từ thầy hướng dẫn
• Tự đánh giá bản thân : 90%
Tổng kết
1 Tài liệu tham khảo
[1] Lập trình Android Google Firebase nguồn https://google/firebasedata.com [2] Lập trình Android Google Firebase nguồn https://google/firebaseuth.com
2 Phụ lục
Danh mục hình ảnh được sử dụng
Hình 1 4 Biểu đồ usecase
Hình 2 5 Biêu đồ chứa gói Activity
Hình 3 6 Biểu đồ Activity login/sign up
Hình 4 6 Biểu đồ các Activity
Hình 5 7 Hình ảnh cây thư mục chứa các gói
Hình 6 10 Hình ảnh bảng cơ sở dữ liệu
Hình 7 12 Giao diện chính, giao diện đăng nhập, giao diện đăng ký
reset password vào app Hình 8 13 Giao diện chứa danh sách như friends, users, profiles
Hình 9 13 Giao diện chat và thay đổi ảnh đại diện, google driver
Danh mục bảng được sử dụng
Tên Bảng Trang Ý Nghĩa
Bảng 1 8 Bảng mô tả chi tiết các Attribute và Function chính
Trang 16Bảng 2 11 Kịch bản kiểm thử chương trình