1. Trang chủ
  2. » Luận Văn - Báo Cáo

N lập trình di Động Đề tài xây dựng ứng dụng nghe n

109 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng ứng dụng nghe nhạc
Người hướng dẫn Thầy Trần Văn Định
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Lập trình di động
Thể loại Đề tài
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 109
Dung lượng 10,85 MB

Nội dung

Khi bạn sử dụng implicit intent, hé thống Android sẽ tìm kiếm tất cả thành ph thích hợp để start bằng cách cách so sánh nội dung của Intent đc gửi với các Intent filter đc khai báo trong

Trang 1

BO GIAO DUC VA DAO TAO

TRUONG DAI HOC KHOA CONG NGHE THONG TIN

Trang 2

NHAN XET TP H6Chi Minh, ngay CUA GIAO VIEN HUONG DAN

Trang 3

LOT CAM ON

Lời đầi tiên nhóm xin phép được gửi lời cảm ơn chân thành và sâu sắc nhất đến với Khoa Công Nghệ Thông Tin — Trưởng Đại Học Sư Phạm Kỹ Thuật Thành Phố H ồ Chí Minh đã tạo đi u kiện cho nhóm chúng em được học tập, phát triển n`n tảng kiến thức sâu

sắc và thực hiện đ Êtài này

Bên cạnh đó nhóm chúng em xin gửi đến th3%y Trần Văn Định lời cảm ơn sâu sắc nhất Trải qua một quá trình dài học tập và thực hiện đ tài trong thời gian qua Th 3 đã tận tâm chỉ bảo nhiệt tình nhóm chúng em trong suốt quá trình từ lúc bắt đâi cũng như kết thúc đề tài này

Nhờ có những n`ần tảng kiến thức chuyên ngành vững chắc cộng thêm với những kinh nhiệm và yêu c3 thực tế ngoài xã hội thông qua việc học ở trưởng và những chuyến di thực tế thu thập ý kiến người dùng Tập thể các th# cô Khoa Công Nghệ Thông Tin va

đặc biệt thy Trần Văn Định đã tặng cho chúng em một khối lượng kiến thức và kinh

nghiệm khổng | 6v êchuyên ngành và công việc trong tương lai Đặc biệt đi ân này đã giúp

và thôi thúc chúng em hoàn thành được đề tài Chúng em thật sự cảm ơn và khắc ghi những kiến thức đó Đây sẽ là hành trang vô cùng lớn của chúng em trước khi bước ra một cuộc sống mới

Tuy nhiên lượng kiến thức là vô tận và với khả năng hạn hẹp chúng em đã rất cố gắng

để hoàn thành một cách tốt nhất Chính vì vậy việc xảy ra những thiếu sót là đi âu khó có thể tránh khỏi Chúng em hi vọng nhận được sự góp ý tận tình của quý th 4y qua đó chúng

em có thể rút ra được bài học kinh nghiệm và hoàn thiện và cải thiện nâng cấp lại sản phẩm của mình mệt cách tốt đẹp nhất

Cuối cùng một lần nữa chúng em xin gửi lời cảm ơn sâu sắc nhất đến với th3y Trần Văn Định và tập thể quý th% (cô) Khoa Công Nghệ Thông Tin — Trưởng Đại Học Sư Phạm Kỹ Thuật Thành Phố H ồöChí Minh Chúc các th cô có sức khỏe thật tốt

Chúng em xin chân thành cảm ơn!

Trang 4

MUC LUC

CHUONG 1: CƠSỞLÝ THUYẾT

1.1 Giới thiệu hệ điâi hành Android

1.2 Gidi thiéu v €Android Studio va Android SDK

1.3 Intent & Manifest trong Lajatrinh Android

1.3.1 Intent

1.3.2 Manifest

14 Activity trong Android

1.5 Lưu trữ dữ liệu trong Android

1.6 Broadcast Receiver trong Android

1.7 Content Provider trong Android

1.8 Service trong Android

1.9 Notification trong Android

CHUONG 2: GIỚI THIỆU CHUNG

2.1 Giới thiệu, lý do chọn đÊtài

2.2 Các chức năng phầì mền

2.3 Yêu c3 người dùng

24 Yêu cân hệ thống

2.4.1 Các yêu c3 vềchức năng:

2.4.2 Các yêu c3 phi chức năng

CHUONG 3: THIẾT KẾVÀ MÔ TẢ CHỨC NĂNG HỆ THỐNG

3.2.2 Mô tả chỉ tiết các quan hệ

3.3 Thiết kế giao diện

Trang 5

Giao diện cá nhân

Giao diện đăng ký đăng nhập

Giao diện phát nhạc

Giao diện quản lý danh sách phát của người dùng

Giao diện quản lý

Giao diện cá nhân

Giao diện đăng ký đăng nhập

Giao diện phát nhạc

Giao diện quản lý danh sách phát của người dùng

Giao diện quản lý

Trang 6

DANH MUC HINH ANH

Hình 1-2 Vòng doi ca Activity 14 Hinh 1-3 Biéu dién cach content providers quan ly viéc truy c4p tới bộ nhớ 18

Hình 1-4 Minh họa cách Content Provider đi `âi phối việc truy cập tới bễ lưu trữ đữ liệu

thông qua các API và các component 19 Hình 1-5 Bound Service 21 Hinh 3-1 Biéu d Suse case téng quat 27 Hình 3-2 Sơ d Guse case dang ký/ đăng nhập của ngươi dùng 28 Hình 3-3 Sơ đ'ôuse case nghe nhạc 29 Hình 3-4 Sơ d Suse case quan ly danh sách phát của cá nhân 31 Hinh 3-5 So d Guse case tim kiém 33 Hình 3-6 Sơ d6tu% tu đăng ký 35 Hình 3-7 Sơ đ ôtu ân tự đăng nhập 36 Hình 3-8 Sơ đồtu3n tự ngừng nhạc 37

Hình 3-10 Sơ đ ôtun tự chuyển bài hát tiếp theo 38 Hình 3-11 Sơ đ ồtu3n tự chuyển bài hát phía trước 39

Hình 3-13 Sơ đ `ôtun tự lặp bài hát 40

Hình 3-15 Sơ đ ôtu3n tự danh sách phát 41 Hình 3-16 Sơ đ `ôtuñn tự đánh gia nhac 42 Hình 3-17 Sơ đ ôtu3? tự tải xuống 43 Hình 3-18 Sơ đ `ôtun tự tìm kiếm 44 Hình 3-19 Sơ đ 'ôtun tự thêm danh sách phát 45 Hinh 3-20 So d Gtu %h tự sửa danh sách phát 45 Hình 3-21 Sơ đ ôtu3n tự xóa danh sách phat 46

Hình 3-22 Sơ đ `ôtu3 tự thêm nhạc vào danh sách phát 46 Hình 3-23 Sơ đ `ôtu tự xóa nhạc khỏi danh sách phát 47

Hình 3-27 Sơ đ 'ôhoạt động của người dùng 49

Trang 7

Hình 3-28 Sơ đ ôhoạt động đăng ký

Hình 3-29 Sơ đ ôhoạt động đăng nhập

Hình 3-30 Sơ đ ôhoạt động ngung nhac

Hình 3-31 Sơ đ'ôhoạt động phát nhạc

Hình 3-32 Sơ đ ôhoạt động chuyển bài hát tiếp theo

Hình 3-33 Chuyển bài hát phía trước

Hình 3-34 Sơ đ ôhoạt động thởi gian nhạc

Hình 3-35 Sơ đ ôhoạt động lặp bài hát

Hình 3-36 Sơ đ `ôhoạt động trộn danh sách phát

Hình 3-37 Sơ đ ôhoạt động danh sách phát

Hình 3-38 Sơ đ `ôhoạt động đánh giá nhac

Hình 3-39 Sơ đ ôhoạt động tải xuống

Hình 3-40 Sơ đ `ôhoạt động tìm kiếm

Hình 3-41 Sơ đ ôhoạt động thêm danh sách phát

Hình 3-42 Sơ đ `ôhoạt động sửa danh sách phát

Hình 3-43 Sơ đ ôhoạt động xóa danh sách phát

Hình 3-44 Sơ đ `ôhoạt động thêm nhạc vào danh sách phát

Hình 3-45 Sơ đ 'ôhoạt động xóa nhạc khỏi danh sách phát

Hình 3-46 Sơ đ `ôhoạt động thêm đối tượng nhạc

Hình 3-47 So d Shoat động sửa đối tượng nhạc

Hình 3-48 Sơ đ `ôhoạt động xóa đối tượng nhạc

Hình 3-49 Sơ đ ôthực thể kết hợp (ERD)

Hình 3-55 Thiết kế hộp thoai đổi mật khẩu

Hình 3-56 Thiết kế màn hình chọn phương thức đăng ký

Hình 3-57 Thiết kế màn hình đăng ký email

Hình 3-58 Thiết kế màn hình chọn phương thức đăng nhập

Hình 3-59 Thiết kế màn hình đăng nhập email

Trang 8

Hình 3-62 Thiết kế màn hình các danh sách phát cá nhân

Hình 3-63 Thiết kế màn hình chi tiết danh sách phát cá nhân

Hình 3-64 Thiết kế màn hình quản lý danh sách đối tương nhạc

Hình 3-65 Thiết kế màn hình cập nhật chị tiết đối tượng nhạc

Hình 4-6 Kết quả hôp thoại đổi mật khẩu

Hình 4-7 Kết quả màn hình chọn phương thức đăng ký

Hình 4-8 Kết quả màn hình đăng ký với email

Hình 4-9 Kết quả màn hình chọn phương thức đăng nhập

Hình 4-10 Kết quả màn hình đăng nhập với Email

Hình 4-11 Kết quả màn hình phát nhạc

Hình 4-12 Kết quả màn hình danh sách phát khi phát nhạc

Hình 4-13 Kết quả màn hình danh sách phát cá nhân

Hình 4-14 Kết quả màn hình chỉ tiết danh sách phát cá nhân

Hình 4-15 Kết quả màn hình quản lý danh sách đối tượng nhạc

Hình 4-16 Kết quả màn hình thêm đối tượng nhạc

Hình 4-17 Kết quả màn hình sửa đối tượng nhạc

Trang 9

DANH MUC BANG Bảng 3-1 Mô tả use case đăng ký/ đăng nhập

Bảng 3-2 Mô tả use case nghe nhạc

Bảng 3-3 Mô tả use case quản lý danh sách phát cá nhân

Bảng 3-4 Mô tả use case tìm kiếm

Bảng 3-5 Mô tả chỉ tiết bảng cơ sở dữ liệu User

Bảng 3-6 Mô tả chỉ tiết bảng cơ sở đữ liệu Song

Bảng 3-7 Mô tả chỉ tiết bảng cơ sở dữ liệu Banner

Bảng 3-8 Mô tả chỉ tiết bảng cơ sở dữ liệu Album

Bảng 3-9 Mô tả chỉ tiết bảng cơ sở dữ liệu Theme

Bảng 3-10 Mô tả chỉ tiết bảng cơ sở dữ liệu Types

Bảng 3-11 Mô tả chỉ tiết bảng cơ sở dữ liệu Playlist

Bảng 3-12 Mô tả chỉ tiết bảng cơ sở dữ liệu Playlist_Song

Trang 10

CHUONG 1: COSOLY THUYET 1.1 Gioi thiéu hé di‘@ hanh Android

Android là hệ đi `âi hành mã ngu ni mở, dựa trén Linux Kernel, danh cho các thiết bị di

động nói chung (điện thoại, máy tính bảng, đ ông h ôthông minh, máy nghe nhạc, )

Có nghĩa là Android không chỉ giới hạn trong phạm vi một hệ điâi hành cho điện thoại! Nó có thể được nhà sản xuất cai dat lén dng h ồ, máy nghe nhạc, thiết bị định vị GPS, thậm chí là ô tô (các thiết bị Android Auto)

Android cũng không phải là mệt thiết bị hay sản phẩm cụ thể, nó là một hệ đi 'âi hành

dựa trên Linux, ngu ôn mở, linh hoạt

Hiện Android là một thương hiệu của Google Có khả năng tùy biến rất cao và có thể chạy trên nhi âu thiết bị, nhí *âi kiến trúc vì xử lý (ARM / x86) Tinh đến nay, Android đã

có các phiên bản (kèm tên mã) In lượt là:

- Android 4.0 Ice Cream Sandwich

- Android 4.1 Jelly Bean

- Android 4.2 Jelly Bean

- Android 4.3 Jelly Bean

- Android 4.4 KitKat

- Android 5.0 Lollipop

- Android 6.0 Marshmallow

Trang 11

Hình 1-1 Kiến trúc của hệ đi`âi hành Android

Chỉ tiết v`êcác tầng của kiến trúc này như sau:

- _ Tầng Applications: Là tầng chứa các ứng dụng Danh bạ, Gọi điện, Trình duyệt, Nghe nhạc, các ứng dụng này thưởng mua máy v ềchúng ta đã có sẵn r ä

- Tầng Framewcrk: Là tầng chứa các API để làm việc với hệ đi`âi hành như lấy thông tin danh bạ, quản lý các Activity , quản lý địa điểm, quản lý các View

- _ Tầng Libraries: Chứa các thư viện, API gân như là cốt lõi của Android, bao g 4m bộ quản lý b`êmặt cảm ứng (Surface Manager), OpenGL (phục vụ cho việc dựng đồ họa phức tạp)

Trang 12

-_ Tầng Android Runtime: Chứa các thư viện lõi của Android và máy ảo Dalvik Virtual Machine (từ Android 4 trở lên chúng ta có thêm máy ảo ART)

- _ Tầng Kermnel: Là nhân lõi của hệ đi`âi hành, chứa các tập lệnh, driver giao tiếp giữa phẦ3n cứng và phần m`ần của Android

Trong quá trình làm việc, chúng ta sẽ gần như chỉ làm việc với tầng xanh lam (Applications va Applicatlon Framework) và xanh lá (Libranes) Chương trình Android được viết bằng ngôn ngữ Java và được máy ảo DVM / ART trong mỗi thiết bị Android biên dịch ra mã máy

1.2 _ Giới thiệu v €Android Studio va Android SDK

Tháng 5 năm 2013, Google công bế Android Studio, một môi trưởng phát triển ứng dụng tích hợp (IDE) dành riêng cho Android, mã ngu ôi mở, dựa trên IDE Java IntelliJ của hãng JetBrains

Android Studio chạy trên Windows, Mac và Linux, nhằm thay thế cho Eclipse Android Development Tool (ADT) vốn được sử dụng làm IDE chính trong các năm trước

đó

Một số tính năng nổi bật:

-_ Bộ công cy build tng dụng dựa trên Gradle (thay vì Maven)

- _ Chức năng đò và sửa lỗi nhanh, hướng Android

- _ Công cụ chỉnh sửa màn hình dạng kéo thả tiện lợi

-_ Các wizard tích hợp nhằm giúp lập trình viên tạo ứng dụng từ mẫu có sẵn

- Tich hop Google Cloud Platform, dé dàng tích hợp với Google Cloud Messaging

va App Engine của Google

1.3 Intent & Manifest trong La Xp trZnh Android

1.3.1 Intent

Khái niệm

Trang 13

Intent là một đối tượng message bạn có thể sử dụng để request một hành động từ một vài component trong ứng dụng

Cac loai Intent

Intent c6é 2 loai chinh 1a Explicit Intent va Implicit Intent

Explicit Intent (dich word by word cé nghia 1a intent trong minh):

Hiểu đơn giản explicit intents 1a intent xdc định rõ và cụ thể các thanh ph % tham gia hành động

Implicit Intent (dịch word by word có nghĩa là Intent không tưởng minh)

Loại Intents này chỉ ra hành động cẦn được thực hiện (action) va dữ liệu cho hành

động đó (data) Khi bạn sử dụng implicit intent, hé thống Android sẽ tìm kiếm tất

cả thành ph thích hợp để start bằng cách cách so sánh nội dung của Intent đc gửi với các Intent filter đc khai báo trong ứng dụng khác Nếu intent đc gửi đó khớp với intent fñlter trong một component hoặc một ứng dụng nào đó, thì ngay lập tức

hệ thống sẽ khởi động thành ph đó và cung cấp cho nó intent ban đần đc gửi Nếu nhí Ân intent filter tương thích thì hệ thống sẽ hiển thị hộp thoại để người dùng

có thể chọn ứng dụng nào sẽ sử dụng

Intent filter (b6 loc intent) 14 mét thé trong minifest nham xác định loại intent mà

thành ph % chứa intent filter đó muốn nhận ví dụ thế này nhé: khai bao intent filter cho một activity trong manifest đi`âi này có nghĩa là trong số các intent đc gửi đi intent nao c6é nội dung tương thích vs nội dung trong thẻ intent filter thì nó sẽ nhận intent đó Và ngược lại nếu bạn không khai báo bất kì Intent filter nào cho actIvIty cia minh thi activity đó chỉ có thể start bằng một explicit intent (intent trong minh)

Cấu trúc của một Intent

Một đối tượng intent sẽ mang theo thông tin mà hệ thống android cần để quyết định thành ph Äì nào sẽ đc start Và những thông tin đó bao g ôn :

Component Name: Tên của component được sfart

10

Trang 14

1.3.2

hoặc chọn)

Data: Sử dụng một đối tượng Uri tham chiếu tới dữ liệu sẽ đc thực hiện một hành

động nào đó Loại dữ liệu cung cấp thưởng được quyết định bởi action của intent Category: Một chuỗi chứa thông tin bổ sung v`êloại thành ph3n sẽ xử lý intent Để nhận đc các intent không tưởng minh thì bất buộc ứng dụng phải khai báo category

trong manifest, Va gia tri mac dinh la CATEGORY_DEFAULT

Extra: Cac cap key-value mang théng tin bổ sung c3Ần thiết để hoàn thành hành động được yêu c ầ1

Flag: Cở được định nghĩa trong lớp Intent có chức năng như siêu dữ liệu cho intent

Cỡ có thể ra lệnh hệ thống Android vêcách khởi chạy một (ví dụ, hoạt động sé

thuộc v tác vụ nào ) và cách xử lý sau khi nó được khởi chạy

Manifest

Moi trng dung da bất buộc phải có một file AndroidManifest.xml ở thư mục gốc

AndroidManifest cung cấp thông tin cơ bản của ứng dụng cho hệ đi `âi hành Android ví dụ

như:

1.4

Tên java package của ứng dụng

Các thành ph của ứng dụng, như danh sách các thành phần của ứng dụng, như

activity, services, broadcast receiver,

Tinh chất cia cdc thanh ph%h trong tng dung (vi du, mét app cd nhi‘&i activity thi activity nao sé direc goi dai tién khi vào app)

Đánh giá các tiến trình chứa runtime của ứng dụng

Danh sách các quy ân truy cập của ứng dụng c3n được người dùng cho phép Phiên bản Android tối thiểu

Các thư viện liên kết với ứng dụng Android

Activity trong Android

Giới thiệu

11

Trang 15

Lớp Activity là thành phần quan trọng nhất của ứng dụng Android, cách mà chúng hoạt động tạo thành n`â tảng cơ bản của mô hình lập trình ứng dụng Android khởi chạy một ứng dụng thông thưởng bằng kích hoạt một Activity tương ứng với vòng đời cụ thể của nó trong quá trình hoạt động

Thường một Activity cung cấp một của sổ, ở đó ứng dụng sé dựng các thành phần

UI (User Interface - giao dién người dùng) Mặc định cửa sổ này có thể lấp đầy mà hình thiết bị, nhỏ hơn hoặc nổi phía trên các cửa sổ khác Hi hết các ứng dụng đìầi sử dụng nhi`âi màn hình khác nhau, có nghĩa nó sẽ phải có nhi ` Activity khác nhau Khi một Activity chỉ định là Main Activity, nó sẽ là màn hình đầu tiên khi khởi chạy ứng dụng Activity này có thể gọi và kích hoạt một Activity khác

Vong doi Activity

12

Trang 16

_— 0MB)

User navigates

to the activity — 0nRe8uMe) `

Another activity comes

The activity is finishing or

being destroyed by the system

Trang 17

Hình 1-2 Vòng doi cia Activity Nhìn vào hình, ta thấy có các mốc chính trong quá trình hoạt động của Activity tương ứng với các phương thức mà bạn có thể quá tải là:

1.5

onCreate(Bundle savedInstanceState): Được gọi khi hoạt động mới được tạo, tại

đây khởi tạo các biến, nạp giao diện layout ., phương thức này cũng nhận dữ liệu lưu lại trạng thái hoạt động trước đó (với mục đích để phục hồ - savedlnsfanceState) Sau sự kiện này bao giở cũng gọi ngay lập tức onSfartQ) onStartQ: Được gọi ngay trước khi Activity hiển thị trên màn hình

onResume(): Được gọi ngay khi Activity bất đân có thể tương tác với người dùng,

và Activity nằm trên cùng trong danh sách các Activity của hệ thống Sau phương thức này là các chức năng của Activity hoạt động dựa trên tương tác của người dùng ., cho đến khi có một nguyên nhân nào đó mà phương thức OnPause được

gol

onPause(): Được gọi khi hệ thống sắp kích hoạt một Activity khác, nếu bạn quá tải

phương thức này, thưởng để lưu lại dự liệu thật nhanh để hệ thống còn kích hoạt Activity khác Ngay sau phương thức này nó sẽ gọi onResume() néu Activity duoc kích hoạt lại ngay, hoặc gọi OnStopQ nếu Activity bị ẩn đi

onStopQ: Được gọi khi nó bị ẩn đi Sau phương thức này, Activity có thể gọi

onRestartQ nếu nó được người dùng kích hoạt lại hoặc gọi onDestroy(Q để hết thúc

onDestroyQ: gọi khi Activity bị hủy hoàn toàn (ví dụ gọi fnish(), hoặc người dùng kill Activity)

Lưu trữ dữ liệu trong Android

Để lưu trữ dữ liệu trong Android thì nhà phát triển đã cung cấp nhi `âi lựa chọn trong việc lưu trữ dữ liệu như:

— Internal file storage: Lưu trữ các file riêng tư của ứng dụng (app-private files) trong hệ thống file của thiết bị

14

Trang 18

— External file storage: Luu trir file trén hé thống file chia sẻ ra được bên ngoài Thường dùng cho các file mà người dùng được chia sẽ, chẳng hạn như hình ảnh, video

— Shared Preferences: Lưu trữ dữ liệu nguyên thủy bởi các cặp key-value

- Database: Lưu trữ các dữ liệu có cấu trúc trong cơ sở dữ liệu private

Ngoại trừ một số loại file trên External Storage, thì tất cả các cách lưu trữ này dành cho đữ liệu riêng tư của ứng dụng - dữ liệu khêng thể truy cập tự nhiên vào các ứng dụng khác Nếu muốn chia sẻ file với các ứng dụng khác nên sử dụng EileProvider API

Firebase là địch vụ cơ sở đữ liệu hoạt động trên n` tảng đám mây — cloud Kém theo

đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google Chức năng chính là giúp người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu Cụ thể là những giao diện lập trình ứng dụng API đơn giản Mục đích nhằm tăng số lượng người

dùng và thu lại nhi u lợi nhuận hơn Đặc biệt, còn là dịch vụ đa năng và bảo mật cực tốt

Eirebase hỗ trợ cả hai nền tảng Android và IOS Không có gì khó hiểu khi nhi `i lập trình viên chọn Firebase làm nên tảng đầi tiên để xây dựng ứng dụng cho hàng triệu người dùng trên toàn thế giới

1.6 Broadcast Receiver trong Android

Khái niệm

Đã bao giờ bạn tự hỏi hệ thống Android làm cách nào mà có thể nhận biết được tất

cả những sự thay đổi của hê thống như lắng nghe tin nhắn đến, hành động rút - cắm sạc, hay hành động bật tắt mạng đó chính xác là hệ thống sử dung Broadcast Receiver dé làm Vậy chúng ta đi vào tìm hiểu Broadcast Receiver là gì

Broadcast Receiver là một trong 4 component lớn trong Android, với mục đích là lắng nghe các sự kiện, trạng thái của hệ thống phát ra thông qua Intent nhờ đó mà các lập trình viên có thể xử lí được các sự kiện hệ thống ở bên trong ứng dụng của mình Broadcast Receiver có thể hoạt động được cả khi ứng dụng bị tất đi, nghĩa là ở background chính vì vậy nó thưởng được sử dụng với service

15

Trang 19

- Custom BroadcastReceiver

Thuong duoc stv dung dé truy fn thông điệp trong và ngoài ứng dụng nhưng không phải là sự thay đổi từ hệ thống mà là những thông điệp mà lập trình viên muốn truy ôn đi

- Local Broadcast Receiver

Ưu điểm so với BroadcastReceiver

e® Bạn sẽ không phải lo lắng v việc rò rỉ dữ liệu vì dữ liệu chỉ được gói gọn trong project của bạn mà thôi

e® Không phải lo lắng v`êcác lễ hổng bảo mật vì nó không send broadcast với ứng dụng khác

® Nó hiệu quả hơn việc gửi một Broadcast qua hệ thống

Các lưu ý v`êbảo mật và cách xử lí

— Nếu bạn không muốn sendBroadcast cho các đối tượng ở bên ngoài ứng dụng của bạn thì bạn có thể sử dụng LocalBroadcast vì LocalBroadcastManager hiệu quả hơn nhi li (không cẦñn giao tiếp liên tục) và cho phép bạn tránh suy nghĩ v bất kỳ vấn đề bảo mật nào liên quan đến các ứng dụng khác có thể nhận hoặc gửi các broadcast của bạn

- Không phát thông tin nhạy cảm bằng cách sử dụng intent không tưởng minh Thông tin có thể được đọc bởi bất kỳ ứng dụng nào đăng ký để nhận broadcast Có

ba cách để kiểm soát ai có thể nhận broadcast của bạn:

® Bạn có thể set các quy ñ cho Broadcast

@ Set package ma ban muGn gui Broadcast dén qua setPackage(String)

@ Su dung Local Broadcast

— Khi ban dang ky nhan Broadcast thi bat ctr tng dung nao ma ban dang ky dai cd thể gửi những thông tin độc hại đến ứng dụng của ban Có các cách phòng tránh sau đây:

16

Trang 20

® Set các quy bạn cho là "Nguy hiểm”

® Bạn có thể set android:exported=false

® Local Broadcast

— Chú ý cách đặt tên hành động lắng nghe sao cho tránh trùng lặp tên

— Không nên chạy task nặng trong hàm onReceive(Q) nếu bạn muốn chạy thì chúng ta nên sử dụng một trong hai cách sau:

® Sử dụng goAsyncQ trong onReceiveQ

® Sử dụng JobScheduler

— Không nên start Activity tử Broadcast vì lúc này trải nghiệm người dùng đang chập chởn, nhất là khi có nhi`âi hơn một người nhận Thay vào đó hãy xem xét hiện thị các thông báo

1.7 Content Provider trong Android

Giới thiệu

Content provider là một thành phần để quản lý truy cập dữ liệu, nó cung cấp các phương thức khác nhau để các ứng dụng có thể truy cập dữ liệu tử một ứng dụng khác bằng cách sử dụng ContentResolver Content Provider có thể giúp cho một ứng dụng quản

lý quy truy cập đến dữ liệu được lưu bởi ứng dụng đó, hoặc các ứng dụng khác, và đó

là một cách để ta có thể chia sẻ dữ liệu cho các ứng dụng khác nhau Hình dưới đây biểu diễn cho việc cách content providers quản lý việc truy cập tới bộ nhớ

17

Trang 21

Your content Ề

implementation

Your data storage

Hình 1-3 Biểu diễn cách content providers quản lý việc truy cập tới bộ nhớ Content Provider đi`âi phối việc truy cập tới bỗ lưu trữ dữ liệu thông qua các API

và các component như hình dưới, nó bao g Gn:

— Chia sẻ dữ liệu từ ứng dụng của bán tới các ứng dụng khác

— Gửi dữ liệu sang widget

— Trả vêmột kết quả gợi ý khi search cho ứng dụng của bạn thông qua Seach Framework sử dung SearchRecentSuggestionsProvider

- Đồng bộ dữ liệu của ứng dụng với server bằng cách sử dụng AbstractThreadedS yncAdapter

— Tải dữ liệu lên UI sử dụng CursorLoader

18

Trang 22

Hình 1-4 Minh họa cách Content Provider đi `âi phối việc truy cập tới bễ lưu trữ dữ liệu

thông qua các API và các component Content Provider hoạt động rất giống với một cơ sở dữ liệu, bạn có thể truy vấn, chỉnh sửa nội dung, cũng như là thêm xóa các nội dung sử dụng các phương thức: insertQ, update(Q, deleteQ, queryÔ

Sử dụng Content Provider

Để sử dụng Content Provider ta làm theo các bước sau:

— Xác định kiểu dữ liệu

— Xac dinh Uniform Resource Identifier (URT

— Khai bao Content Provider trong manifest

Implement lop ContentProvider va caéc phương thức được yêu câu

Các phương thức c3 được Override trong lớp Content Provider:

— onCreate(Q: Phương thức này được gọi khi Provider được bắt đần, nếu quá trình

khởi tạo thành công trả v`ềtrue, ngược lại là false

19

Trang 23

- query(): Phuong thirc nhan yéu ci tv Client Két qua được trả vênhư một đối tượng Cursor

- insert(): Phương thức chèn một dòng dữ liệu mới vào Content Provider

— delete(): Phuong thức xóa một dòng dữ liệu đã tôn tại

— updateQ: Phương thức cập nhật một dòng dữ liệu nào đó đã tôn tại

— gefTypeQ: Phương thức trả v`êkiểu MIME của dữ liệu tại các URI

1.8 Service trong Android

Khai niém

Một Service là một thành phn (componenf) có thể thực hiện các hoạt động lâu dài

trong background và nó không cung cấp một giao diện người dùng Một thành ph8n khác của ứng dụng có thể sfart nó, và nó tiếp tục chạy trong background ngay cả khi người dùng chuyển sang ứng dụng khác Ngoài ra một thành phn có thể liên kết (bind) với một Service để tương tác với Service đó, thậm chí là thực hiện truy thông liên tiến trình IPC (interprocess communication - IPC ban có thể hiểu là một hoạt động chia sẽ dữ liệu qua nhi ôi tiến trình, thông thưởng sử dụng giao thức truy thông và nó phải có Client và

Server) Ví dụ: một Service có thể thực hiện các giao dich mang, choi nhac, ra vao file I/O

hoặc tương tác với một confent provider, tat ca dG te background

Phân loại Service

Service được chia làm 3 loại khác nhau:

- Background Service

20

Trang 24

chú ý trực tiếp Ví dụ một ứng dụng sử dụng một service để thu gom bộ nhớ chẳng hạn thì service là một Background Service, hoạt động mà người dùng không cần thiết phải để ý

Bound Service

Một service được gọi là Bound khi một thành ph %h ctia ứng dụng ràng buộc với nó

béi Idi goi bindService() Mét Bound Service cung cấp một giao diện Client - Server cho phép các thành ph tương tác với nó: gửi yêu c3, nhận kết quả và

thậm chí là IPC Một Bound Service chỉ chạy miễn là có một thành phần ràng buộc

với nó Có thể có nhi âi thành phần ràng buộc với Bound Service cùng lúc, nhưng khi tất cả tháo bỏ ràng buộc (unbound) thì nó sẽ Destroy Trước đây Service thưởng được chia là Started Service và Bound Service

Trang 25

Mét Started Service hay 14 Unbound Service 1a service duoc khéi déng bang phương thức startServiceQ từ thành phần khác Và nó sẽ tiếp tục chạy trong background

kể cả khi thành ph % khởi tạo nó bị phá hủy Đây cũng là xem là mét Background Service theo cách chia trên

Độ ưu tiên các loại Service

Hệ thống Android bất buộc phải đừng một service khi bộ nhớ ít và phải khôi phục tài nguyên hệ thống cho Activity đang được sử dụng Nếu Service được ràng buộc với một Activity đang sử dụng, nó ít khả năng bị giết; nếu Service được khai báo và chạy ở chế độ Foreground né cũng khó biết giết Nếu Service là Started và chạy lâu dài, hệ thống

sẽ làm giảm vị trí ưu tiên của nó Vì phụ thuộc vào process (bạn có thể tìm hiểu thêm), thì

các loại service sẽ được xếp theo độ ưu tiên sau: Bound Service khó bị kill nhất, tiếp theo

la Foreground Serviceva Background Service

Bound > Foreground > Background

Các giá trị tra v étrong onStartCommand()

Khi Service bị hệ thống kill do thiếu bộ nhớ chẳng hạn, thì dưới đây là 3 giá trị trả

v éthuong ding trong onStartCommandQ) để thông báo với hệ thống Tùy vào bài toán mà bạn sử dụng cho thích hợp

- START_NOT_STICKY

Nếu hệ thống kill service khi giá trị này được trả v`ề thì service này không được khởi động lại trừ khi có một Intent đang được chở ở onStar(Command() Đây là lựa chọn an toàn nhất để tránh chạy Service khi không c3ñn thiết và khi ứng dụng có thể

khởi động lại một cách đơn giản các công việc chưa hoàn thành

- START_STICKY

Khi giá trị này được trả v trong onStartCommand, nếu service bị hệ théng kill

Nếu onStartCommand không có một intent nào chở nó nữa thì Service sẽ được hệ

thống khởi động lại với mét Intent null

- START_REDELEVER_INTENT

22

Trang 26

1.9

ma Service duoc nhan Di này thích hợp với các service đang thực hiện công

việc muốn tiếp tục ngay tức thì như download ñe chẳng hạn Ngoài 3 giá trị trên thì trong onStartCommandQ còn có thêm 2 giá trị trả v`ênữa là

Notification trong Android

Mét notification 1a mét théng điệp mà Android hiển thị bên ngoài giao diện ứng dụng của bạn để cung cấp cho người dùng lời nhắc, tin nhắn, hay bất kỳ thông tin gì từ ứng dụng của bạn Ngươi dùng có thể nhấn vào notification để mở ứng dụng, hoặc thực hiện một hành động trực tiếp trên notification như gửi tin nhấn

Notification Channel: Bắt đầu tử phiên bản 8.0 (Oreo), Android bắt đầi nhóm các thông báo (notification) vào các kênh (Channel) khác nhau Mỗi kênh sế có một hành vi

cụ thể, và hành vi này sẽ được áp dụng cho tất cả các thông báo của nó Mỗi kênh có một

ID đại diện cho nó

23

Trang 27

CHUONG 2: GIỚI THIỆU CHUNG

2.1 _ Giới thiệu, lý do chọn đ tài

Hiện nay, công nghệ thông tin vô cùng phát triển mọi người đều sử dụng máy vi tính hoặc điện thoại di động để làm việc và giải trí Do đó việc xây dựng các ứng dụng cho điện thoại di động đang là một ngành công nghiệp mới đầy ti ân năng Với

sự phát triển nhanh chóng của xã hội, nhu c3 giải trí thông qua điện thoại di động ngày càng phổ biến như xem phim,chơi game lướt mạng xã hội,nghe nhạc , Trong

đó lợi ích của âm nhạc không chỉ giúp thư giấn mà còn có thể cải thiện chất lượng giấc ngủ, ngăn ngừa chứng trầm cảm, giảm đau, kiểm soát cơn thèm ăn, làm đẹp vóc dang, nâng cao chất lượng cuộc sống của con ngươi Vì vậy chúng em đã chọn đề tài “Xây dựng ứng dụng android nghe nhạc” với mục đích nghiên cứu, tìm hiểu v`ề ứng dụng nghe nhạc trên android để có thể đáp ứng nhu cÂi giải trí, giúp cho mọi người có thể thư giãn thông qua ứng dụng một cách dễ dàng

2.2 Các chức năng phần mền

- Phát nhạc: tắt nhạc, hẹn giờ, lặp lại, danh sách phát

- TZm kiếm: theo tên, theo nghệ sĩ

- Đềxuất: bài hát mới cập nhật

- Đánh giá nhạc: thích, không thích, chia sẻ

24

Trang 28

Đăng nhập và không đăng nhập đi có thể sử dụng những chức năng như: chọn

album, chọn thể loại nhạc, tìm kiếm nhạc, chọn nhạc và nghe nhạc

Khi đăng nhập sẽ có thêm chức năng lưu nhạc vào danh sách phát

Yéu ca hé thong

Các yêu cân v êchức năng:

Ứng dụng cho phép người dùng phát nhạc theo yêu cân

Tìm kiếm theo bài hát, ca sĩ, thê loại,

Cập nhật thông tin v`êbảng xếp hạng âm nhạc

Quản lý thông tin cá nhân người dùng, tạo danh sách phát

Cho phép ngươi dung tải xuống các bài hát để người dung có thể nghe nhạc khi không có kết nối mạng

Cho phép ngươi dùng sử dụng bài hát đó làm nhạc chuông, cho điện thoại Cho phép ngươi dùng đăng ký tài khoản

Các yêu cân phi chức năng

Yêu c3 v`êsản phẩm

Tốc độ load các bài hát phải nhanh tránh tình trạng giật, lag khi sử dụng

Hỗ trợ đầu ra âm thanh đa dạng, xử lý âm thanh tốt

Đáp ứng các yêu c3 v`êgiải trí, thư giãn của người dùng

Chỉ sử dụng tối đa 100 MB bộ nhớ trên điện thoại

Thuong xuyên có các bản cập nhật nhằm cải thiện hoặc khắc phục các lỗi phát sinh (nếu có) đối với sản phẩm

Các bài hát phải được cập nhật một cách liên tục

Giao diện phải được thiết kế đơn giản dễ dàng sử dụng tuy nhiên vẫn phải có các chức năng c3 thiết

25

Trang 29

Yéu cW v €t6 chite/ tién trZnh phat trién

Hệ thống hoạt đệng khi điện thoại sử dụng phiên bản android 5.0 trở lên

Ngôn ngữ lập trình được sử dụng : Java

Công cụ được sử dụng: Android Studio và dữ liệu được lưu trữ trên SQLite,

Firebase

Yêu c3 từ bên ngoài

Phải lược bỏ chỉ phí một cách tối giản để người dung có thể sử dụng sản phẩm với chỉ phí thấp nhất có thể

Hệ thống phải bảo mật, không được để lộ thông tin của người sử dụng

- Các bài hát có trong hệ thống phải đảm bảo vấn đ`ềv êmặt bản quy `& không

để tình trạng sử dụng các bài hát không có bản quy `

26

Trang 30

3.1 _ Phân tích thiết kế hệ thống

3.1.1 Sơ đÔuse case

CHUONG 3: THIẾT KẾ VÀ MÔ TẢ CHỨC NĂNG HỆ THỐNG

Hình 3-1 Biểu d use case téng quát

Đặc tả một số use case quan trọng:

Use case đăng ký/ đăng nhập của người dùng:

27

Trang 31

Actor chính Người dùng

Actor phụ Không có

Ti & di & kién Không có

Hậu đi ân kiện Không có

2.1 Hệ thống lấy các phương thức đăng ký hiện tại

và hiển thị ra màn hình cho ngươi dùng chọn 2.2 Thay đổi giao diện ký thông tin cho ting

phương thực đăng nhập

28

Trang 33

4.3 Load lai giao diện

5 Trở về bài 5.I _ Hệ thống kiểm tra danh sách phát hiện tại và lấy bài trước trước

5.2 Ngừng bài hát hiện tại, làm mới thanh quá trình va phát bài hát trước

5.3 Load lai giao diện

6 Trộn danh 6.I _ Hệ thống lấy danh sách phát hiện tại và trộn thứ tự sách phát các bài hát

6.2 Load lai giao diện

7 Xem danh 7.1 Hé thống lấy danh sách phát hiện tại và hiển thị ra sách phát màn hình

Bảng 3-2 Mô tả use case nghe nhạc Use case quan ly danh sách phát của cá nhân:

30

Trang 34

Actor chính Người dùng

Actor phụ Không có

T¡ ân đi ôi kiện Phải đăng nhập thành công

Trang 35

3 Nguoi ding yéu cH

x6a danh sach phat

4 Nguoi ding yéu cH

thêm bai hat vào

5 Neuoi ding yéu cH

xóa bài hát trong

Bảng 3-3 Mô tả use case quản lý danh sách phát cá nhân

Use case t7Zm kiếm:

Trang 36

Actor phu Không có

Ti ân đi ân kiện Không có

Hậu đi ân kiện Không có

Hành độc tác nhân | Phản ứng hệ thống

1 Nguoi dùng 1.1 Hệ thống mở input cho người nhập từ khóa

yéu ca tim 1.2 Hệ thống kiểm tra tử khóa

kiếm 1.3 Hệ thống trả v êdanh sách bài hát theo kết quả

Bảng 3-4 Mô tả use case tìm kiếm 3.1.2 Sơ đồtu3n tự

- Mục đích: biểu diễn tương tác giữa những người dùng và những đối tượng bên trong

hệ thống Sơ đ 'ônày cho biết các thông điệp được truy n tuần tự như thế nào theo thời

gian Thứ tự các sự kiện trong Sơ đ`ôtu3 tự hoàn toàn tương tự như trong scenario mô

tả use case tương ứng

Biểu diễn: Sơ đ ôtu3n tự được biểu diễn bởi các đối tượng và message truy Ân đi giữa các đối tượng đó

- Trong hệ thống quản lý bán hàng, chúng ta lựa chọn Sơ đ ôtương tác dạng tuẦn tự để biểu điễn các tương tác giữa các đối tượng Để xác định rõ các thành ph cn bổ sung trong Sơ đ ôlớp, trong mỗi Sơ đ ôtun tự của hệ thống quản lý bán hàng sẽ thực hiện: + Xác định rõ kiểu của đối tượng tham gia trong tương tác (ví dụ giao diện, đi `âi khiển hay thực thể)

+ Mỗi Sơ đồtu3n tự có thể có ít nhất một lớp giao diện (Form) tương ứng với chức nang (use case) mà sơ đ ôđó mô tả

+ Mỗi Sơ đ ôtu3n tự có thể liên quan đến một hoặc nhi `âi đối tượng thực thể Các đối tượng thực thể chính là các đối tượng của các lớp đã được xây dựng trong

Sơ đồthiết kế chỉ tiết Dưới đây là một số Sơ đ`ôtu3n tự cho các chức năng của ứng dụng nghe nhạc:

Sơ đồtun tự đăng ký/ đăng nhập

33

Trang 37

Dang ky

Người dùng

ALT

Đã tồn tại

Thông báo tài khoản đã tồn tại và yêu cầu nhập lại

Chưa có

+ -~-~~- Đưa về giao diện người dùng

;Lưu vào cơ sở dữ liệu

Trang 38

: Gửi yêu cầu đăng nhập Sử

If Giao diện đăng nhập

Ï iêm tra thông tin

thông tin sai +

Nếu thông tin sai

Hình 3-7 Sơ đ ôtu ân tự đăng nhập

Sơ đồtun tự nghe nhạc

Ngừng nhạc

35

Trang 39

Giao dién phat nhac

Trang 40

Giao diộn phat nhac Hộ thong

4:Bài hỏt mới tiếp theo

4 -=S~.-==.=======~===z ma

Hỡnh 3- L0 Sơ đ ồtu 3n tự chuyển bài hỏt tiếp theo

Chuy đõn bài hỏt phớa trước

37

Ngày đăng: 23/02/2025, 21:29