Download - Ứng dụng chát realtime android
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÀI TẬP MÔN HỌC
IT3910 – PROJECT 1 – 2015-2016
Giảng viên hướng dẫn : PGS.TS Trịnh Văn Loan
Sinh viên thực hiện : Nguyễn Văn Thiệu – 20133750
Lớp : KSTN-CNTT-K58
HÀ NỘI 2015
Project 1: Viết App Chát Text Trên Android
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 2
Mục Lục
.............................................................................................................................. 1
IT3910 – PROJECT 1 – 2015-2016 .................................................................... 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 theo 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 ............................................................... 11
CHƯƠNG 3. CHƯƠNG TRÌNH MINH HOẠ .............................................. 12
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 ............................................................................................13
CHƯƠNG 4. KẾT LUẬN VÀ TỰ ĐÁNH GIÁ ................................................ 15
4.1 Kết luận ..........................................................................................................................15
4.2 Kế hoạch làm việc .........................................................................................................15
Tổng kết .............................................................................................................. 17
1. Tài liệu tham khảo ..........................................................................................................17
2. Phụ lục ..............................................................................................................................18
Danh mục hình ảnh được sử dụng ................................................................................................. 18
Danh mục bảng được sử dụng ....................................................................................................... 18
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 3
Lời mở đầu
Trong những năm gần đây, bắt đầu từ năm 2010 trở lại đây. 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 project 1 em lựa chọn đề tài “ Viết ứng dụng chat đơn giản kết nối
mọi người”. 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 PGS.TS Trịnh Văn Loan, Giảng viên Khoa Công nghệ
Thông tin Trường Đại học Bách Khoa Hà Nội - đã 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.
Hà Nội, tháng 12 năm 2015
Sinh viên Nguyễn Văn Thiệu
Lớp kstn-cntt-k58
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 4
CHƯƠ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
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 5
CHƯƠNG 2. THIẾT KẾ CHI TIẾT
2.1. Thiết kế lớp
2.1.1 Biểu đồ lớp.
Hình 2: Biểu đồ gói chứa các Activity
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 6
Hình 3: Biểu đồ gói chứa data
Hình 4 : Biểu đồ gói chứa manager
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 7
Hình 5: Biểu đồ gói chứa model
2.1.2. Thiết kế chi tiết lớp theo 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 Util gồm 2 class: CustomFontUtils và ProgressGenerator. Gói hỗ trợ gói model và gói data.
Gói appchat.com.thieunv.chatapplication : gồm các class chính là các Activity. Như MainActivity, LoginActivity, CreateAccountActivity, ManagerUserActivity, SettingsActivity, AboutActivity, ChatTwoUserActivity. 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 được là ChatApplication.
Gói data gồm 4 class là: Const (chứa các hằng số), DialogDate (Dữ liệu lịch/ngày tháng năm), FontCache ( Hỗ trợ Font), PageAdapter (Bộ chuyển đổi page).
Gói manager gồm 3 class là : Page1 (Quản lý giao diện hiển thị danh sách bạn bè), Page2 (Quản lý giao diện danh sách các cuộc hội thoại) , Page3 (Quản lý giao diện danh sách user dùng App). Gói này chủ yếu điều khiển hoạt động của các giao diện tương ứng. (Controller)
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 8
Gói model gồm 6 class là : CircleImageView (Tạo ảnh hình tròn), Conversation (Tin nhắn), CustomAlertDialog (Thông báo hiển thị), CustomFontButton (Button), CustomFontEditText (EditText), CustomFontTextView (TextView). (Model)
- 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 6: Hình ảnh cây thư mục chứa các gói
- 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 class chính
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 9
Tên Class 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 - Mã số của người gửi
Conversation
Function Ý Nghĩa
+getMsg() : String -Trả lại tin chát
+getDate(): Date -Trả lại thời gian gửi/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
+setDate(date : Date) -Thiết lập thời gian gửi
+setSender(id_sender: int) -Thiết lập mã người gửi
+setStatus(status: int) -Thiết lập trạng thái gửi
+isSend() : boolean -Kiểm tra xem tin nhăn đã được gửi đi
+getuId1() : int -Trả lại mã uId của user
+getuId2(): int -Trả lại mã uId của user
+getmId(): String -Trả lại chuỗi mã uId1+”_”+uId2
+getContent(): String -Lấy nội dung đoạn chát
+setuId1(uId1: int) -Thiết lập mã người dùng đầu
+setuId2(uId2: int) -Thiết lập mã người dùng nhận
+setmId(mId: String) -Thiết lập mã gộp của user1 và user 2
+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
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 10
#onCreate(bundle: Bundle)
LoginActivity loginFunction(v:View) -Check điều kiện đăng nhập vào app
-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
CreateAccountActi
vity
-btnCreateAccount :
ActioinProcessButton
- Click vào sẽ tạo tài khoản mới
-progressGenerator :
ProgressGenerator
- Xử lý button đăng ký với trường hợp đặc biêt.
#onCreate(saved: Bundle)
+showCalender(v: View) -Hiển thị lịch
-createAccount() -Validate phần tạo tài khoản
-logUserIn(…) -Đăng nhập ngay sau khi đăn gkys xong
+onComplete() -Chuyển trang khi đăng nhập thành công.
-CURRENT_USER_ID: int -Mã số của người dùng hiện tại
-convList: ArrayList<Conversation> - Mảng chứa các tin nhắn
-Adp: ChatAdapter - Bộ chuyển đổi của các tin nhắn
-txt: EditText
-reveiver_userid: int -mã số người nhận
-lastMsgDate: Date - Lấy thời gian gửi tin gần nhất.
ChatTwoUserActiv
ity
-isRunning: boolean -Kiểm tra xem app chạy chưa
-hander : Handler
#onCreate(saved: Bundle)
-sendMessage() - Gửi tin nhắn
-loadConversationList() -Load dữ liệu các tin nhắn trên csdl
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 11
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 7: Hình ảnh bảng cơ sở dữ liệu
- Trong cả 3 bảng trên đều có các trường tự sinh sẵn của Parse như objectId
<String> khóa chính, createdAt <Date> : Ngày tạo , updatedAt <Date> : Ngày
cập nhật.
- Đường màu xanh chỉ rõ khóa liên kết của các bảng được sử dụng.
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 12
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ư
+ Parse 1.10.0 : Thư viện hỗ trợ về mặt cơ sở dữ liệu với các function như
Login, Logout, Check Validate, …
+ Picasso:2.5.2: Thư viện hỗ trợ ảnh.
+ Appcompat-v7:23.1.1, Google Design:23.1.1.
+ Android-process-button:1.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
Java, thiết kế layout, giao diện theo chuẩn của Google Design Convension.
- 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ị
- Kịch bản chạy thử chương trình.
Bảng 2: Kịch bản kiểm thử chương trình
Mã lỗi Tên lỗi Use case Trạng
thái Người tạo Loại lỗi
Các bước tái tạo lỗi /
Dữ liệu kiểm thử Kết quả thực tế
LG1-1
Không tồn tại
user trong
database
Đăng nhập
Thông
báo chưa
tồn tài tài
khoản
ThieuNv 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
Nhấn nút đăng nhập
khi mới chỉ nhập tài
khoản hoặc mật khẩu
hoặc chưa nhập gì cả.
Hiện lên 1 dialog thông báo
Chưa tồn tại tài khoản.
CA1-1
Không xử lý
validate cho
trường email/
username
/pasword.
Tạo tài khoản
mới
Thông
báo
không
hợp lệ
ThieuNv 1- Chức năng
(logic)
Gõ email không đúng
dạng [email protected]
Nhập các trường khác
bình thường
Nhấn nút Create
Account
Thông báo lỗi email không
đúng dạng chuẩn.
AF1-1
Không xử lý kết
nhiều bạn cùng
lúc.
Kết bạn Còn lỗi ThieuNv 1- Chức năng
(Logic)
Tiến hành ấn nút kết
bạn nhiều lần. App ngừng hoạt động.
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 13
Kết quả kiểm thử đơn vị (unit test) : cho thấy App chạy tốt nhưng vẫn còn một số lỗi
chưa xử lý được .
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. Nếu người dùng chưa có tài khoản thì có thể
đăng ký tài khoản để sử dụng app.
+ 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 hiển thị danh sách những người sử dụng app mà chưa phải là 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.
Hình 8: Giao diện chính, giao diện đăng ký, giao diện đăng nhập vào app
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 14
Hình 9: Giao diện chứa các danh sách như friends, users, conversations
Hình 10 : Giao diện chát và giao diện chứa thông tin người dùng
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 15
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ố lỗi em chưa khắc phục đượ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
- 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:
- Thiết kế Listview, ScrollView để quản lý tin nhắn từ các user khác đến.
- Xử lý “Đăng nhập”.
Tuần 6:
- Thiết kế trang ManagerUser để 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 fake database để kiểm tra đăng ký và đăng nhập.
Tuần 7:
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 16
- Tìm hiểu và làm quen với cơ sở lưu trữ điện toán đám mây Parse.
- Tạo tài khoản, lập cơ sở dữ liệu cho app android và kết nối đến với Parse.
Tuần 8 :
- Thiết kế cơ sở dữ liệu trên Parse.
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.
- Ghi đĩa CD và in báo cáo môn học.
- Nộp bản toàn bộ chương trình và báo cáo.
Tuần 14:
- 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%
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 17
Tổng kết
1. Tài liệu tham khảo
[1] Lập trình Android Google Guide nguồn https://developers.google.com/android/
[2] Hướng dẫn cơ bản với Parse Query nguồn : https://parse.com/docs/android/guide
[3] Materials design Google App Android :
http://developer.android.com/intl/vi/design/material/index.html
[4] Android Design Principles:
http://developer.android.com/intl/vi/design/get-started/principles.html
[5] StackOverflow.com
Project 1: Viết App chat text trên android
Nguyễn Văn Thiệu – KSTN-CNTT-K58 18
2. Phụ lục
Danh mục hình ảnh được sử dụng
Tên Hình Trang Ý Nghĩa
Hình 1 4 Biểu đồ usecase
Hình 2 5 Biêu đồ chứa gói Activity
Hình 3 6 Biểu đồ chứa gói Data
Hình 4 6 Biểu đồ chứa gói Manager
Hình 5 7 Biểu đồ chứa gói Model
Hình 6 8 Hình ảnh cây thư mục chứa các gói
Hình 7 11 Hình ảnh bảng cơ sở dữ liệu
Hình 8 13 Giao diện chính, giao diện đăng nhập, giao diện đăng ký vào app
Hình 9 14 Giao diện chứa danh sách như friends, users, conversation
Hình 10 14 Giao diện chat và giao diện chứa thông tin người dùng
Danh mục bảng được sử dụng
Tên Bảng Trang Ý Nghĩa
Bảng 1 9 Bảng mô tả chi tiết các class chính
Bảng 2 12 Kịch bản kiểm thử chương trình