Ứng dụng chát realtime android

18
TRƯỜNG ĐẠI HC BÁCH KHOA HÀ NI VIN CÔNG NGHTHÔNG TIN VÀ TRUYN THÔNG BÀI TP MÔN HC IT3910 PROJECT 1 2015-2016 Giảng viên hướng dn : PGS.TS Trịnh Văn Loan Sinh viên thc hin : Nguyễn Văn Thiệu 20133750 Lp : KSTN-CNTT-K58 HÀ NI 2015 Project 1: Viết App Chát Text Trên Android

Upload: nguyen-thieu

Post on 23-Jan-2018

66 views

Category:

Engineering


13 download

TRANSCRIPT

Page 1: Ứ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

Page 2: Ứng dụng chát realtime 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

Page 3: Ứng dụng chát realtime android

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

Page 4: Ứng dụng chát realtime android

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

Page 5: Ứng dụng chát realtime android

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

Page 6: Ứng dụng chát realtime android

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

Page 7: Ứng dụng chát realtime android

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)

Page 8: Ứng dụng chát realtime android

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

Page 9: Ứng dụng chát realtime android

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

Page 10: Ứng dụng chát realtime android

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

Page 11: Ứng dụng chát realtime android

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.

Page 12: Ứng dụng chát realtime android

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

email

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.

Page 13: Ứng dụng chát realtime android

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

Page 14: Ứng dụng chát realtime android

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

Page 15: Ứng dụng chát realtime android

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:

Page 16: Ứng dụng chát realtime android

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%

Page 17: Ứng dụng chát realtime android

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

Page 18: Ứng dụng chát realtime android

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