Hướng dẫn code app nghe nhạc android
Hỗ trợ thanh toán qua INTERNET BANKING tất cả các ngân hàng: VietcomBank, BIDV, VietinBank, SacomBank, TechcomBank, Á Châu, TPbank, MBbank, AgriBank, VPbank, SHB, MaritimeBank, DongAbank, VIB, EximBank, HDbank, NCB, Việt Á, OceanBank, PGbank, BacAbank... Show Bạn cần đăng nhập để tải code qua chức năng này! ĐĂNG NHẬP NGAY Hỗ trợ CHUYỂN KHOẢN TRỰC TIẾP qua các số tài khoản ngân hàng: VietcomBank, BIDV, VietinBank, SacomBank, TechcomBank, Á Châu, TPbank, MBbank, AgriBank, VPbank, SHB, MaritimeBank Bạn cần đăng nhập để tải code qua chức năng này! ĐĂNG NHẬP NGAY 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: 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 ControllerBước 1Mở 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 2Lớ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 3Quay 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ạcBước 1Hã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 2Bâ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 3Bâ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ụngBước 1Hã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ênBước 1Hã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 2Bâ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ẹpBước 1Chú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 2Nế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 3Hã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. Thông báo sẽ cho phép bạn quay lại ứng dụng khi tiếp tục phát. Phần tóm tắtBâ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. |