ประกาศบริการที่ทำงานอยู่เบื้องหน้าและขอสิทธิ์

ในไฟล์ Manifest ของแอป ให้ประกาศบริการที่ทำงานอยู่เบื้องหน้าแต่ละรายการของแอปด้วยองค์ประกอบ <service> สำหรับแต่ละบริการ ให้ใช้แอตทริบิวต์ android:foregroundServiceType เพื่อประกาศประเภทงานที่บริการทำ

นอกจากนี้ ให้ขอสิทธิ์ที่จำเป็นสำหรับบริการที่ทำงานอยู่เบื้องหน้า

ความเข้ากันได้ของเวอร์ชัน

ข้อกำหนดในการประกาศบริการที่ทำงานอยู่เบื้องหน้าและการขอสิทธิ์จะแตกต่างกันไปตามระดับ API ที่แอปกำหนดเป้าหมาย หน้านี้อธิบายข้อกำหนดสำหรับแอปที่กำหนดเป้าหมายเป็น API ระดับ 34 ขึ้นไป ดูข้อมูลเกี่ยวกับการเปลี่ยนแปลงบริการที่ทำงานอยู่เบื้องหน้าในแพลตฟอร์มเวอร์ชันก่อนหน้าได้ที่การเปลี่ยนแปลงบริการที่ทำงานอยู่เบื้องหน้า

ประกาศบริการที่ทำงานอยู่เบื้องหน้าในไฟล์ Manifest ของแอป

โค้ดต่อไปนี้แสดงวิธีประกาศบริการที่ทำงานอยู่เบื้องหน้าสำหรับการเล่นสื่อ คุณอาจใช้บริการลักษณะนี้เพื่อเปิดเพลง

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
  <application ...>

    <service
        android:name=".MyMediaPlaybackService"
        android:foregroundServiceType="mediaPlayback"
        android:exported="false">
    </service>
  </application>
</manifest>

ประเด็นสำคัญเกี่ยวกับโค้ด

  • ในตัวอย่างนี้ บริการมีเพียงประเภทเดียวคือ media หากบริการของคุณมีหลายประเภท ให้แยกประเภทด้วยโอเปอเรเตอร์ | ตัวอย่างเช่น หากบริการใช้กล้องและไมโครโฟน ให้ประกาศดังนี้

    android:foregroundServiceType="camera|microphone"
    
  • คุณอาจต้องประกาศบริการที่ทำงานอยู่เบื้องหน้าในไฟล์ Manifest ของแอป ทั้งนี้ขึ้นอยู่กับระดับ API ที่แอปกำหนดเป้าหมาย ข้อกำหนดสำหรับระดับ API ที่เฉพาะเจาะจงอธิบายไว้ในการเปลี่ยนแปลงบริการที่ทำงานอยู่เบื้องหน้า

    หากคุณพยายามสร้างบริการที่ทำงานอยู่เบื้องหน้าและไม่ได้ประกาศประเภทไว้ในไฟล์ Manifest ระบบจะแสดง MissingForegroundServiceTypeException เมื่อเรียกใช้ startForeground()

    แม้ว่าจะไม่จำเป็น แต่แนวทางปฏิบัติแนะนำคือการประกาศบริการที่ทำงานอยู่เบื้องหน้าทั้งหมดและระบุประเภทบริการ

ขอสิทธิ์สำหรับบริการที่ทำงานอยู่เบื้องหน้า

โค้ดต่อไปนี้แสดงวิธีขอสิทธิ์สำหรับบริการที่ทำงานอยู่เบื้องหน้าที่ใช้กล้อง

<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>

ประเด็นสำคัญเกี่ยวกับโค้ด

  • โค้ดนี้ใช้แนวทางปฏิบัติแนะนำสำหรับแอปที่กำหนดเป้าหมายเป็น API ระดับ 34 ขึ้นไป