Trong tệp kê khai của ứng dụng, hãy khai báo từng dịch vụ trên nền trước của ứng dụng bằng một phần tử <service>
. Đối với mỗi dịch vụ, hãy sử dụng thuộc tính android:foregroundServiceType
để khai báo loại công việc mà dịch vụ đó thực hiện.
Ngoài ra, hãy yêu cầu mọi quyền mà dịch vụ trên nền trước của bạn cần.
Khả năng tương thích giữa các phiên bản
Các yêu cầu về việc khai báo dịch vụ trên nền trước và yêu cầu quyền sẽ khác nhau tuỳ thuộc vào cấp độ API mà ứng dụng của bạn nhắm đến. Trang này mô tả các yêu cầu đối với những ứng dụng nhắm đến API cấp 34 trở lên. Để biết thông tin về những thay đổi đối với các dịch vụ trên nền trước trong các phiên bản nền tảng trước đó, hãy xem phần Những thay đổi đối với các dịch vụ trên nền trước.
Khai báo dịch vụ trên nền trước trong tệp kê khai ứng dụng
Đoạn mã sau đây cho biết cách khai báo một dịch vụ phát nội dung nghe nhìn trên nền trước. Bạn có thể dùng một dịch vụ như vậy để phát nhạc.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
</application>
</manifest>
Các điểm chính về mã
Trong ví dụ này, dịch vụ chỉ có một loại là
media
. Nếu có nhiều loại áp dụng cho dịch vụ của bạn, hãy phân tách các loại đó bằng toán tử|
. Ví dụ: nếu dịch vụ của bạn sử dụng camera và micrô, hãy khai báo như sau:android:foregroundServiceType="camera|microphone"
Tuỳ thuộc vào cấp độ API mà ứng dụng của bạn nhắm đến, bạn có thể bắt buộc phải khai báo dịch vụ trên nền trước trong tệp kê khai ứng dụng. Các yêu cầu đối với cấp độ API cụ thể được mô tả trong phần Các thay đổi đối với dịch vụ trên nền trước.
Nếu bạn cố gắng tạo một dịch vụ trên nền trước và loại dịch vụ đó không được khai báo trong tệp kê khai, thì hệ thống sẽ gửi ra một
MissingForegroundServiceTypeException
khi gọistartForeground()
.Ngay cả khi không bắt buộc, bạn vẫn nên khai báo tất cả các dịch vụ trên nền trước và cung cấp loại dịch vụ của chúng.
Yêu cầu quyền sử dụng dịch vụ trên nền trước
Đoạn mã sau đây cho biết cách yêu cầu cấp quyền cho một dịch vụ trên nền trước sử dụng camera.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA"/>
<application ...>
...
</application>
</manifest>
Các điểm chính về mã
- Mã này sử dụng các phương pháp hay nhất cho một ứng dụng nhắm đến API cấp 34 trở lên.