You are on page 1of 9

Assignment Description

Tổng quan bài tập


Xây dựng ứng dụng Pending Acts, bao gồm các chức năng sau:

1. Danh sách icon menu các tính năng SMS, Phone


2. Màn hình SMS để cho phép Setup 1 tin nhắn tự động gửi sau 1 khoảng thời gian nào đó
3. Màn hình Phone để cho phép Setup 1 cuộc gọi tự động gọi đi sau 1 khoảng thời gian nào
đó

Tại sao cần làm bài tập này? Học viên học được gì?
Mục tiêu giúp học viên hiểu được các vấn đề sau:

1. Nắm được cách xây dựng giao diện ứng dụng sử dụng layout, view, app resource.
2. Nắm được cách sử dụng đối tượng Activity để hiển thị các giao diện chức năng và xử lý
tương tác của người dùng trên giao diện
3. Nắm được cách sử dụng đối tượng Intent để mở các ứng dụng của hệ thống.
4. Nắm được các bước triển khai một ứng dụng Android hoàn thiện

Bài tập này giúp ích gì cho nghề nghiệp


1. Làm quen với lập trình ứng dụng mobile và làm cơ sở để bạn có thể tự xây dựng những
ứng dụng của riêng mình
2. Nắm được các kiến thức nâng cao về các thành phần User permission, Handler để xây
dựng các ứng dụng phức tạp.

1. Details
Làm thế nào để hoàn thành bài tập?
1. Tạo project có tên PRM391x_Project_1_<YourAccount>
Hướng dẫn tạo project bằng Android Studio, tham khảo
https://developer.android.com/training/basics/firstapp/creating_project.html

2. Kiến thức cần có để hoàn thành dự án


➢ ConstraintLayout:
https://developer.android.com/reference/android/support/constraint/ConstraintLayout.html
➢ Animation: https://developer.android.com/guide/topics/resources/animation-resource.html
➢ Intent: https://developer.android.com/guide/components/intents-filters
➢ Permission: https://developer.android.com/training/permissions/requesting

3. Code style cần theo chuẩn của google đối với Android (https://source.android.com/setup/code-
style)
Tài nguyên tham khảo
➢ Send message: https://www.javatpoint.com/how-to-send-sms-in-android
➢ Make a call: https://www.javatpoint.com/how-to-make-a-phone-call-in-android
➢ Tạo delay time để thực hiện tác vụ trong Android:
Handler: https://codinginflow.com/tutorials/android/handler-postdelayed-runnable
https://stackoverflow.com/questions/3072173/how-to-call-a-method-after-a-delay-in-android

2. Instruction
Mô tả ứng dụng
Ứng dụng cần phải đảm bảo các chức năng cơ bản. Tuy nhiên, bạn có thể thêm chức năng bổ sung
vào ứng dụng của bạn, nếu bạn muốn.

Chức năng và yêu cầu cơ bản


1. Thiết kế giao diện
a. Thiết kế giống hoặc tương tự như trong video tham khảo ở dưới
b. Không hạn chế các thành phần views, layout khi thiết kế giao diện
c. Yêu cầu học viên tự code xml, không sử dụng chế độ kéo thả

2. Yêu cầu cơ bản


a. Màn hình menu icon các tính năng (MH-1)
➢ Click vào icon SMS sẽ mở sang giao diện tính năng SMS (MH-2)
➢ Click vào icon Phone sẽ mở sang giao diện tính năng Phone (MH-3)
b. Màn hình SMS (MH-2)
➢ Kiểm tra xem đã đăng ký quyền “SEND_MESSAGE” hay chưa? Nếu chưa thì hiện
thông báo yêu cầu người dùng cấp phép sử dụng quyền đó.
● Nếu không cho phép thì quay lại màn MH-1 và hiện thông báo “Please
allow permission for using it”
➢ Từ màn hình MH-1, chọn vào “SMS”, di chuyển vào màn hình gửi tin nhắn
➢ Yêu cầu nhập đầy đủ thông tin phone, message
● Nếu một trong các thông tin trên không được nhập, thông báo “Please
check your information!”
● Nếu phone không phải là định dạng số điện thoại thì thông báo “The
phone is not correct, please check!”
➢ Điền số vào ô tương ứng với thời gian muốn cài đặt
➢ Lựa chọn loại thời gian là Giờ hoặc Phút hoặc Giây.
➢ Chọn “Setup” để setup thời gian delay để gửi tin nhắn
o Nếu người dùng chưa điền số thời gian thì sẽ hiện thông báo “Please set
time first”
o Thông báo “Message will be sent after ….” và quay lại MH-1

c. Màn hình Phone (MH-3)


➢ Kiểm tra xem đã đăng ký quyền “CALL_PHONE” hay chưa? Nếu chưa thì hiện
thông báo yêu cầu người dùng cấp phép sử dụng quyền đó.
● Nếu không cho phép thì quay lại màn MH-1 và hiện thông báo “Please
allow permission for using it”
➢ Từ màn hình MH-1, chọn vào “Phone”, di chuyển vào màn hình cuộc gọi
➢ Yêu cầu nhập thông tin phone
● Nếu thông tin trên không được nhập, thông báo “Please input phone
first”
● Nếu phone không phải là định dạng số điện thoại thì thông báo “The
phone is not correct, please check!”
➢ Điền số vào ô tương ứng với thời gian muốn cài đặt
➢ Lựa chọn loại thời gian là Giờ hoặc Phút hoặc Giây.
➢ Chọn “Setup” để setup thời gian delay để thực hiện cuộc gọi
o Nếu người dùng chưa điền số thời gian thì sẽ hiện thông báo “Please set
time first”
o Thông báo “A call will be done after ….” và quay lại MH-1

3. Việc di chuyển qua lại giữa các màn hình cần phải thực hiện bằng animation.

Bạn có thể tham khảo video sample dưới đây:

https://drive.google.com/file/d/1t8aqcoqRhThSgYyAyRK8w0WaOAvJfCp3/view?usp=sharing

Tổ chức code
Dưới đây là gợi ý tham khảo về cách thức tổ chức code cho ứng dụng. Bạn hoàn toàn có thể tổ chức
code theo cách riêng của mình.
Xử lý logic của màn hình chính

Đoạn code mẫu thực hiện cuộc gọi đi ở MH-3

Đoạn code mẫu thực hiện gửi tin nhắn đi ở MH-2

Gợi ý khác:

- Khai báo quyền trong AndroidManifest và các context thực thi chương trình
Mã màu sử dụng trong chương trình

Style sử dụng trong chương trình


3. Hướng dẫn nộp bài
 Nén toàn bộ thư mục và các tài nguyên cần thiết của dự án để mentor chấm điểm bằng file .zip

https://drive.google.com/drive/folders/1piRRg-bnT210gYbTrFSGfBD5wi-Ok6y4?usp=sharing

 Đặt mật khẩu và inbox giảng viên sau khi đã up load thành công!

4. Rubrics
Lưu ý: Rubric sẽ được chia thành 2 phần: Cơ bản và nâng cao. Phần cơ bản chiếm 70% điểm, phần nâng
cao chiếm 30% điểm. Phần cơ bản là các tiêu chí bắt buộc phải làm, phần nâng cao không bắt buộc, tuy
nhiên vẫn nằm trong nội dung thi vấn đáp hết môn.

Yêu cầu cơ bản ( chiếm 70%)

1. Các yêu cầu chức năng


# Tiêu chí Map to LO Trọng số Mandatory? Grading
(Criterion) Specification (Đặc tả) (Weight) type

1 Thiết kế giao PRM391x_o5 Yes


● Biết sử dụng các resource của 0.5 Pass/Not
diện
app như strings, colors, drawable Pass
(vector assets), dimension
● Biết sử dụng style (NoActionBar)
cho chương trình
● Đặt tên các file tài nguyên theo
chuẩn(viết thường, sử dụng dấu
“_”)

2 Thiết kế giao PRM391x_o6 Yes


● Giao diện được thiết kế giống 0.5 Pass/Not
diện
hoặc tương tự như mô tả ở Pass
video
● Không giới hạn các thành phần
views, layout khi thiết kế

3 Xử lý logic cơ PRM391x_o7 Yes Pass/Not


● Có khả năng di chuyển giữa các 1
bản Pass
màn hình giao diện
● Xử lý tương tác của người dùng
trên giao diện
● Kiểm tra thông tin đã điền của
người dùng trên giao diện theo
mô tả mục 2.

4 Xử lý logic PRM391x_o7 ● Có khả năng thêm quyền người 1.5 Yes Pass/Not
nâng cao dùng cho ứng dụng, kiểm tra và Pass
yêu cầu quyền cho ứng dụng từ
người dùng.
● Có khả năng sử dụng Handler
để thực hiện 1 tác vụ delay
time.
● Có khả năng sử dụng Intent để
thực thi các ứng dụng khác

5 Chức năng gửi PRM391x_o7 ● Sử dụng Intent để startActivity 1.5 Yes Pass/Not
tin nhắn của app tin nhắn có sẵn trong Pass
điện thoại

6 Chức năng PRM391x_o7 ● Có khả năng sử dụng Intent 1.5 Yes Pass/Not
thực hiện cuộc không tường minh để start lại Pass
gọi Activity với ACTION_CALL để
thực hiện 1 cuộc gọi đi

7 Chất lượng PRM391x_o5 Code style phải tuẩn thủ theo chuẩn 0.5 Yes Scale (0-5)
code của google

Yêu cầu nâng cao (chiếm 30%)


# Tiêu chí Map to LO Trọng số Mandatory Grading
(Criterion) Specification (Đặc tả) (Weight) ? type

8 Thiết kế giao diện PRM391x_o7 ● Di chuyển giữa các màn hình 1 Yes Pass/Not
bằng animation Pass

9 Thiết kế giao diện PRM391x_o7 ● Có hiệu ứng mờ (alpha) cho 1 Yes Pass/Not
các nút (Message, Phone, Pass
Alarm, Setup)

10 Chức năng báo PRM391x_o7 ● Có khả năng sử dụng Intent 1 No Scale (0-5)
thức để start lại Activity SMS nhằm
hiển thị nội dung báo thức mà
người dùng đã setup trước
đó.

5. Ghi chú cho người chấm và review

You might also like