Hướng dẫn lập trình app nghe nhạc android năm 2024

Trong phiên hướng dẫn này chúng ta sẽ xây dựng một ứng dụng nghe nhạc dành cho . Chúng ta sẽ dựa vào các bước mô tả trong tài liệu hướng dẫn này để từng bước xây dựng ứng dụng. Mục tiêu là chúng ta có thể tạo ra được sản phẩm đầu tay, sau đó các bạn có thể tự xây dựng các ứng dụng khác với quy mô tương tự. Ứng dụng thu được như là kết quả của phiên làm việc sẽ có giao diện như sau:

Chức năng điều khiển phát nhạc sẽ được cài đặt bằng cách sử dụng lớp

36, trong đó một đối tượng

37 hiển thị tiến trình phát cũng như cho phép người dùng chuyển đến các đoạn cụ thể trong một bài hát. Chúng ta sẽ sử dụng các lớp

38 và

39 để hiển thị tiêu đề bài hát hiện đang phát và cho phép người dùng quay trở lại ứng dụng.

Đây là hình ảnh minh hoạ ứng dụng hoàn chỉnh:

Hướng dẫn lập trình app nghe nhạc android năm 2024
Hướng dẫn lập trình app nghe nhạc android năm 2024
Hướng dẫn lập trình app nghe nhạc android năm 2024

Sau loạt bài này, chúng ta cũng sẽ khám phá các chức năng liên quan mà bạn có thể muốn sử dụng để nâng cao ứng dụng nghe nhạc. Điều này sẽ bao gồm phát video, stream nhạc trực tuyến, quản lý âm thanh và trình bày bài nhạc theo nhiều cách khác nhau.

1. Tạo một Controller

Bước 1

Mở lớp

40 chính của bạn và thêm câu lệnh import sau đây:

1

2

import android.widget.MediaController.MediaPlayerControl;

Mở rộng dòng code khai báo lớp như sau, để chúng ta có thể sử dụng lớp

40 để điều khiển phát nhạc:

1

2

public class MainActivity extends Activity implements MediaPlayerControl {

Di chuyển chuột lên trên tên lớp và chọn Add unimplemented methods. Eclipse sẽ thêm các phương pháp thức nhau để điều khiển phát nhạc, chúng ta sẽ từ từ điều chỉnh khi chúng ta tiếp tục bài hướng dẫn.

Bước 2

Lớp

36 trình bày một widget tiêu chuẩn với các nút play/pause, rewind, fast-forward, và skip (previous/next) bên trong nó. Widget cũng đồng thời chứa một seekbar, được cập nhật khi bài hát được phát và chứa văn bản cho biết thời lượng của bài hát và đoạn bài hát hiện tại. Từ đó chúng ta có thể cấu hình các chi tiết của các điều khiển, chúng ta sẽ cài đặt một lớp thừa kế nó. Thêm một lớp mới vào dự án của bạn, đặt tên nó là MusicController. Trong Eclipse, chọn android.widget.MediaController làm lớp cha của nó.

Thêm nội dung sau đây vào lớp:

1

2

1

2

4

5

6

7

8

9

2

0

2

2

2

3

2

4

2

6

2

7

Bạn có thể điều chỉnh lớp

36 theo nhiều cách khác nhau. Tất cả những gì chúng ta muốn làm là ngăn nó tự ẩn sau ba giây bằng cách override phương thức

44.

Mẹo: Bạn có thể cần phải tinh chỉnh theme mà ứng dụng của bạn sử dụng để đảm bảo rằng văn bản trên controller có thể được nhìn thấy rõ ràng.

Bước 3

Quay lại lớp

40 chính của bạn, thêm một biến đối tượng mới:

1

2

import android.widget.MediaController.MediaPlayerControl;

1

Chúng ta sẽ thiết lập controller nhiều lần trong vòng đời của ứng dụng, vì vậy, hãy làm điều đó bằng phương thức trợ giúp. Thêm đoạn code sau vào lớp

40 của bạn:

1

2

import android.widget.MediaController.MediaPlayerControl;

5

2

import android.widget.MediaController.MediaPlayerControl;

7

4

2

7

Bên trong phương thức, khởi tạo controller:

1

2

1

3

Bạn có thể cấu hình các khía cạnh khác nhau của đối tượng

36. Ví dụ, chúng ta sẽ cần phải xác định điều gì sẽ xảy ra khi người dùng nhấn các nút previous/next. Sau khi khởi tạo controller hãy thiết lập các click listener này:

1

2

1

7

2

1

9

4

1

6

3

8

9

2

0

7

2

2

1

9

2

4

1

2

6

2

3

2

4

9

2

6

2

7

Chúng ta sẽ cài đặt

48 và

49 sau ít giây nữa, do đó, chỉ cần bỏ qua lỗi lúc này. Vẫn bên trong phương thức

50, thiết lập controller để làm việc trên trình phát nhạc trong ứng dụng, với anchor view chỉ đến danh sách mà chúng ta đã thêm vào layout:

1

2

public class MainActivity extends Activity implements MediaPlayerControl {

1

2

public class MainActivity extends Activity implements MediaPlayerControl {

3

4

public class MainActivity extends Activity implements MediaPlayerControl {

5

Trở lại

51, hãy gọi phương thức:

Chúng ta cũng sẽ gọi nó sau này ở nơi khác trong lớp.

2. Cài đặt Điều khiển Phát nhạc

Bước 1

Hãy nhớ rằng việc phát nhạc xảy ra trong lớp

35, nhưng giao diện người dùng đến từ lớp

40. Trong hướng dẫn trước, chúng ta đã ràng buộc đối tượng

40 với đối tượng

35, để chúng ta có thể điều khiển phát nhạc từ giao diện người dùng. Các phương thức trong lớp

40 mà chúng ta thêm vào để cài đặt giao diện

57 sẽ được gọi khi người dùng cố gắng điều khiển phát nhạc. Chúng ta sẽ cần lớp

35 để tác động đến control này, vì vậy hãy mở lớp

35 của bạn ngay bây giờ để bổ sung thêm một vài phương thức cho nó:

1

2

public class MainActivity extends Activity implements MediaPlayerControl {

9

2

1

1

4

1

3

6

8

1

7

2

0

1

9

2

2

1

3

2

4

2

6

5

2

4

7

2

6

1

3

00

02

03

04

05

06

1

3

08

10

11

12

13

14

1

3

16

18

19

20

21

22

2

7

Các phương thức này áp dụng cho các chức năng điều khiển phát nhạc tiêu chuẩn mà người dùng mong muốn.

Bước 2

Bây giờ hãy thêm các phương thức vào lớp

35 để chuyển đến bài hát tiếp theo và trước đó. Bắt đầu với hàm chuyển đến bài trước:

1

2

27

2

29

4

31

6

33

8

2

7

Chúng ta sẽ giảm giá trị biến chỉ mục của bài hát, kiểm tra xem chúng ta có vượt phạm vi của danh sách không và gọi phương thức

61 mà chúng ta đã thêm vào. Bây giờ thêm phương thức để chuyển đến bài tiếp theo:

1

2

39

2

41

4

43

6

45

8

33

2

0

2

7

Phương thức này tương tự như phương thức để phát bài hát trước đó tại thời điểm này, nhưng chúng ta sẽ sửa đổi phương thức này sau để cài đặt chức năng trộn bài hát.

Bước 3

Bây giờ chuyển trở lại lớp

40 để chúng ta có thể sử dụng các phương thức này. Đầu tiên, thêm các phương thức mà chúng ta gọi khi chúng ta thiết lập controller:

1

2

53

2

55

4

57

6

59

8

1

3

2

0

2

2

65

2

4

67

2

6

69

2

4

59

2

6

2

7

Chúng ta gọi phương thức mà chúng ta đã thêm vào lớp

35. Chúng ta sẽ thêm code vào các phương thức này sau để xử lý các tình huống cụ thể. Bây giờ hãy chuyển sang các phương thức của giao diện

57, sẽ được hệ thống gọi trong quá trình phát và khi người dùng tương tác với các điều khiển. Những phương thức này sẽ có trong lớp

40 của bạn, vì vậy chúng ta sẽ chỉ thay đổi cài đặt của chúng.

Bắt đầu bằng phương thức

66, thiết lập nó thành true:

1

2

77

2

79

4

81

6

2

7

Bây giờ thực hiện tương tự đối với phương thức

67 và

68:

1

2

77

2

89

4

81

6

1

3

8

2

0

77

2

2

99

2

4

81

2

6

2

7

Bạn có thể để nguyên phương thức

69 và

70. Sửa phương thức

71 như sau:

1

2

77

2

2

09

4

2

11

6

2

13

8

2

15

2

0

2

7

Các điều kiện kiểm tra là để tránh những ngoại lệ khác nhau có thể xảy ra khi sử dụng lớp

34 và

36. Nếu bạn cố gắng nâng cấp ứng dụng bằng bất cứ cách nào, có thể bạn sẽ thấy rằng bạn cần thực hiện các bước như vậy vì các lớp để phát nhạc sinh ra rất nhiều ngoại lệ. Lưu ý rằng chúng ta gọi phương thức

74 của lớp

35.

Sửa đổi phương thức

76 tương tự như:

1

2

77

2

2

23

4

2

11

6

2

27

8

2

15

2

0

2

7

Thay đổi phương thức

77 bằng cách gọi phương thức

78 của lớp

35:

1

2

77

2

2

37

4

2

39

6

2

41

8

2

43

2

0

2

7

Thực hiện tương tự đối với các phương thức

80,

81 và

82:

1

2

77

2

2

51

4

2

53

6

1

3

8

2

0

77

2

2

2

61

2

4

2

63

2

6

1

3

2

4

2

6

77

00

2

71

02

2

73

04

2

7

3. Xử lý khi Người dùng Điều hướng Trở lại Ứng dụng

Bước 1

Hãy nhớ rằng chúng ta sẽ tiếp tục phát nhạc ngay cả khi người dùng điều hướng ra khỏi ứng dụng. Để tạo điều kiện thuận lợi cho việc này, chúng ta sẽ hiển thị thông báo cho biết tiêu đề của bài hát đang được phát. Khi nhấp vào thông báo sẽ đưa người dùng quay trở lại ứng dụng. Quay trở lại lớp

35 của bạn và thêm các import sau đây:

1

2

2

79

2

2

81

4

2

83

Bây giờ di chuyển đến phương thức

84, trong đó chúng ta hiện chỉ cần bắt đầu phát nhạc. Sau khi gọi

85, Thêm code sau đây:

1

2

2

87

2

2

89

4

2

91

6

2

93

8

2

0

2

97

2

2

2

4

import android.widget.MediaController.MediaPlayerControl;

01

2

6

import android.widget.MediaController.MediaPlayerControl;

03

2

4

import android.widget.MediaController.MediaPlayerControl;

05

2

6

import android.widget.MediaController.MediaPlayerControl;

07

00

import android.widget.MediaController.MediaPlayerControl;

09

02

import android.widget.MediaController.MediaPlayerControl;

11

04

import android.widget.MediaController.MediaPlayerControl;

13

06

08

import android.widget.MediaController.MediaPlayerControl;

17

Tiếp theo chúng ta sẽ thêm các biến còn bị thiếu. Lớp

39 sẽ đưa người dùng trở lại lớp

40 chính khi người dùng chọn thông báo. Thêm các biến cho tên bài hát và ID của thông báo ở phía trên cùng của lớp:

1

2

import android.widget.MediaController.MediaPlayerControl;

21

2

import android.widget.MediaController.MediaPlayerControl;

23

Bây giờ chúng ta cần thiết lập tiêu đề bài hát, trong phương thức

61, sau dòng mà chúng ta truy vấn bài hát từ danh sách (

89):

1

2

import android.widget.MediaController.MediaPlayerControl;

27

Vì chúng ta đã gọi

90 trên thông báo, nên chúng ta phải chắc chắn rằng chúng ta sẽ dừng nó khi đối tượng

35 bị hủy. Override phương thức sau:

1

2

77

2

import android.widget.MediaController.MediaPlayerControl;

33

4

import android.widget.MediaController.MediaPlayerControl;

35

6

2

7

4. Phát Ngẫu nhiên

Bước 1

Hãy nhớ rằng chúng ta đã thêm một nút ngẫu nhiên, do đó hãy cài đặt nó ngay bây giờ. Đầu tiên thêm biến đối tượng mới vào lớp

35:

1

2

import android.widget.MediaController.MediaPlayerControl;

41

2

import android.widget.MediaController.MediaPlayerControl;

43

Khởi tạo trình tạo số ngẫu nhiên trong

51:

Bây giờ thêm một phương thức để thiết lập cờ hiệu xáo trộn:

1

2

import android.widget.MediaController.MediaPlayerControl;

47

2

import android.widget.MediaController.MediaPlayerControl;

49

4

import android.widget.MediaController.MediaPlayerControl;

51

6

2

7

Chúng ta chỉ đơn giản là bật/tắt thiết lập xáo trộn. Chúng ta sẽ kiểm tra cờ hiệu này khi người dùng chuyển qua bài hát tiếp theo hoặc khi một bản nhạc kết thúc và bài hát tiếp theo bắt đầu. Sửa đổi phương thức

48 như sau:

1

2

41

2

import android.widget.MediaController.MediaPlayerControl;

59

4

import android.widget.MediaController.MediaPlayerControl;

61

6

import android.widget.MediaController.MediaPlayerControl;

63

8

import android.widget.MediaController.MediaPlayerControl;

65

2

0

import android.widget.MediaController.MediaPlayerControl;

67

2

2

import android.widget.MediaController.MediaPlayerControl;

69

2

4

9

2

6

import android.widget.MediaController.MediaPlayerControl;

73

2

4

import android.widget.MediaController.MediaPlayerControl;

75

2

6

import android.widget.MediaController.MediaPlayerControl;

77

00

9

02

33

04

2

7

Nếu cờ hiệu xáo trộn được bật, chúng ta chọn một bài hát mới từ danh sách một cách ngẫu nhiên, đảm bảo chúng ta không lặp lại bài hát được phát trước đó. Bạn có thể nâng cao chức năng này bằng cách sử dụng hàng đợi các bài hát và không cho bất kỳ bài hát nào được lặp lại cho đến khi tất cả các bài hát được phát.

Bước 2

Bây giờ chúng ta có thể cho phép người dùng chọn chức năng phát ngẫu nhiên. Quay trở lại lớp

40 chính của bạn trong phương thức

96, sửa phần thao tác trộn để gọi phương thức mới mà chúng ta đã thêm vào lớp

35:

1

2

import android.widget.MediaController.MediaPlayerControl;

87

2

import android.widget.MediaController.MediaPlayerControl;

89

4

import android.widget.MediaController.MediaPlayerControl;

91

Bây giờ người dùng sẽ có thể sử dụng phần tử menu để bật/tắt chức năng trộn bài hát.

5. Dọn dẹp

Bước 1

Chúng ta gần như đã hoàn tất, nhưng vẫn cần thêm một vài thao tác xử lý những thay đổi nhất định, chẳng hạn như người dùng rời khỏi ứng dụng hoặc dừng phát nhạc. Trong lớp

40 của bạn, hãy thêm một vài biến đối tượng:

1

2

import android.widget.MediaController.MediaPlayerControl;

95

Chúng ta sẽ sử dụng các thông số này để đáp ứng đối với việc người dùng quay trở lại ứng dụng sau khi rời khỏi nó và tương tác với các nút điều khiển khi việc phát nhạc bị dừng. Override

99 để thiết lập một trong những cờ hiệu sau:

1

2

77

2

1

01

4

1

03

6

1

05

8

2

7

Bây giờ override

2

00:

1

2

77

2

1

13

4

1

15

6

1

17

8

1

19

2

0

1

21

2

2

9

2

4

2

7

Việc này sẽ đảm bảo các nút điều khiển hiển thị khi người dùng quay trở lại ứng dụng. Override

2

01 để ẩn nó:

1

2

77

2

1

31

4

1

33

6

1

35

8

2

7

Bước 2

Nếu người dùng tương tác với các nút điều khiển trong việc phát nhạc bị tạm dừng, thì đối tượng

34 có thể có những hành vi bất định. Để khắc phục với vấn đề này, chúng ta sẽ thiết lập và sử dụng cờ hiệu

2

03. Trước tiên hãy sửa đổi các phương thức

48 và

49:

1

2

55

2

57

4

1

45

6

1

19

8

1

49

2

0

9

2

2

59

2

4

1

3

2

6

2

4

67

2

6

69

00

1

45

02

1

19

04

1

49

06

9

08

59

10

2

7

Chúng ta reset các nút điều khiển và cập nhật cờ hiệu

2

03 khi tạm dừng. Bây giờ hãy thực hiện các thay đổi tương tự với phương thức

61:

1

2

1

77

2

1

79

4

1

81

6

1

45

8

1

19

2

0

1

49

2

2

9

2

4

59

2

6

2

7

Bây giờ thiết lập

2

03 thành true trong phương thức

80:

1

2

77

2

2

51

4

01

6

2

53

8

2

7

Khi bạn làm việc với các lớp

34 và

36, bạn sẽ thấy rằng kiểu xử lý này là một yêu cầu cần thiết để tránh phát sinh lỗi. Ví dụ, đôi khi bạn sẽ thấy thanh seekbar không cập nhật cho đến khi người dùng tương tác với nó. Các nguồn tài nguyên này hành xử khác nhau ở các API level khác nhau, vì vậy hãy kiểm tra kỹ lưỡng và tinh chỉnh là điều cần thiết nếu bạn có kế hoạch phát hành ứng dụng của mình ra công chúng. Ứng dụng mà chúng ta đang tạo ra trong loạt bài này thật sự chỉ là ứng dụng cơ bản.

Bước 3

Hãy thực hiện một số bước cuối cùng để làm cho ứng dụng hoạt động một cách trơn tru. Quay trở lại lớp

35, sửa phương thức

2

13:

1

2

77

2

11

4

13

6

2

43

8

2

7

Chúng ta chỉ cần reset lại trình phát nhạc, nhưng bạn có thể nâng cao cách tiếp cận này.

Phương thức

2

14 sẽ kích hoạt khi một bản nhạc kết thúc, bao gồm cả trường hợp người dùng đã chọn bài hát mới hoặc chuyển qua bài tiếp theo/trước đó cũng như khi khi phát xong bài hát. Trong trường hợp thứ hai, chúng ta cần tiếp tục phát hát kế tiếp. Để làm điều này, chúng ta cần phải kiểm tra trạng thái phát nhạc. Sửa phương thức

2

14 của bạn:

1

2

77

2

23

4

25

6

27

8

3

2

0

9

2

2

2

7

Chúng ta gọi phương thức

48 nếu bài hát hiện tại đã kết thúc.

Mẹo: Để đảm bảo rằng ứng dụng của bạn không đụng độ với các service âm thanh khác trên thiết bị của người dùng, bạn nên cải tiến nó để xử lý Audio Focus một cách trơn tru. Làm cho lớp

35 cài đặt giao diện

2

18. Trong phương thức

51, tạo một đối tượng của lớp

2

20 và gọi

2

21 trên nó. Cuối cùng, cài đặt phương thức

2

22 trong lớp của bạn để kiểm soát điều gì sẽ xảy ra khi ứng dụng dành được hoặc mất Audio Focus. Xem phần trong Hướng dẫn dành cho nhà phát triển để biết thêm chi tiết.

Ứng dụng cơ bản của chúng ta đã hoàn chỉnh! Tuy nhiên, bạn cũng cần phải thực hiện các cải tiến bổ sung để làm cho nó hoạt động đáng tin cậy trên các thiết bị người dùng và các cấp độ API khác nhau. Các điều khiển nên xuất hiện bất cứ khi nào bạn tương tác với ứng dụng.

Hướng dẫn lập trình app nghe nhạc android năm 2024
Hướng dẫn lập trình app nghe nhạc android năm 2024
Hướng dẫn lập trình app nghe nhạc android năm 2024

Thông báo sẽ cho phép bạn quay lại ứng dụng khi tiếp tục phát.

Hướng dẫn lập trình app nghe nhạc android năm 2024
Hướng dẫn lập trình app nghe nhạc android năm 2024
Hướng dẫn lập trình app nghe nhạc android năm 2024

Phần tóm tắt

Bây giờ chúng ta đã hoàn tất trình phát nhạc cơ bản dành cho Android. Có nhiều cách để bạn có thể nâng cao ứng dụng, chẳng hạn như hỗ trợ thêm tream nhạc, video, audio focus và cung cấp các phương pháp khác nhau để tương tác với các bài hát trên thiết bị. Chúng ta sẽ xem xét một số cải tiến trong các hướng dẫn sau này, khái quát rõ cách bạn có thể thêm chúng vào ứng dụng hoặc vào các dự án khác. Trong lúc chờ đợi, hãy xem liệu bạn có thể mở rộng ứng dụng để xây dựng các tính năng bổ sung hay cải thiện độ tin cậy trên các thiết bị khác nhau hay không. Xem phần Media Playback trong Hướng dẫn dành cho Nhà phát triển Android để tìm hiểu thêm.