<uses-feature>

Google Play ใช้ <uses-feature> องค์ประกอบที่ประกาศในไฟล์ Manifest ของแอปเพื่อกรองแอปออกจากอุปกรณ์ ที่ไม่เป็นไปตามข้อกำหนดด้านฟีเจอร์ด้านฮาร์ดแวร์และซอฟต์แวร์

เมื่อระบุฟีเจอร์ที่แอปพลิเคชันของคุณต้องการ คุณอนุญาตให้ Google Play นำเสนอแอปพลิเคชันของคุณเฉพาะกับผู้ใช้ที่มี ตรงตามความต้องการคุณลักษณะของแอปพลิเคชันมากกว่าที่จะนำเสนอ แก่ผู้ใช้ทุกคน

หากต้องการดูข้อมูลสําคัญเกี่ยวกับวิธี Google Play ใช้ฟีเจอร์เป็นพื้นฐานของการกรอง โปรดดูส่วน Google Play และการกรองตามฟีเจอร์

ไวยากรณ์:
<uses-feature
  android:name="string"
  android:required=["true" | "false"]
  android:glEsVersion="integer" />
ที่อยู่ใน:
<manifest>
description:

ประกาศฟีเจอร์ของฮาร์ดแวร์หรือซอฟต์แวร์อย่างใดอย่างหนึ่งที่ผู้ดูแลระบบใช้ แอปพลิเคชัน

วัตถุประสงค์ของการประกาศ<uses-feature>คือการแจ้งข้อมูล เอนทิตีภายนอกของชุดฮาร์ดแวร์และซอฟต์แวร์ดังกล่าว ที่แอปพลิเคชันอยู่ องค์ประกอบมีแอตทริบิวต์ required ที่ ช่วยให้คุณระบุได้ว่าแอปพลิเคชันต้องใช้และไม่สามารถทำงานได้หรือไม่ ฟีเจอร์ที่ประกาศไว้ หรือต้องการให้มีฟีเจอร์แต่สามารถทำงานได้ หากไม่มี

เนื่องจากการรองรับฟีเจอร์อาจแตกต่างกันไปตามอุปกรณ์ Android แต่ละรุ่น องค์ประกอบ <uses-feature> มีบทบาทสำคัญในการช่วยให้ ซึ่งอธิบายฟีเจอร์ที่เปลี่ยนแปลงได้ของอุปกรณ์

ชุดของฟีเจอร์ที่พร้อมใช้งานที่แอปพลิเคชันของคุณประกาศสอดคล้องกับ ชุดค่าคงที่ของฟีเจอร์ที่ Android PackageManager มีให้ ค่าคงที่ของคุณลักษณะจะระบุอยู่ใน ส่วนข้อมูลอ้างอิงฟีเจอร์ใน เอกสารนี้

คุณต้องระบุแต่ละฟีเจอร์ใน <uses-feature> แยกต่างหาก ถ้าแอปพลิเคชันของคุณต้องใช้คุณลักษณะหลายอย่าง จะมีการประกาศว่า องค์ประกอบ <uses-feature> หลายรายการ เช่น แอปพลิเคชัน ในอุปกรณ์ที่ต้องใช้ทั้งบลูทูธและฟีเจอร์ของกล้อง องค์ประกอบ 2 อย่าง ได้แก่

<uses-feature android:name="android.hardware.bluetooth" android:required="true" />
<uses-feature android:name="android.hardware.camera.any" android:required="true" />

โดยทั่วไป ให้ประกาศ <uses-feature> องค์ประกอบสำหรับฟีเจอร์ทั้งหมด ที่จำเป็นต้องใช้

องค์ประกอบ <uses-feature> ที่ประกาศเป็นเพียงการให้ข้อมูลเท่านั้น ซึ่งหมายความว่า ที่ระบบ Android เองไม่ได้ตรวจสอบการรองรับฟีเจอร์ที่ตรงกันใน อุปกรณ์ก่อนที่จะติดตั้งแอปพลิเคชัน

อย่างไรก็ตาม บริการอื่นๆ เช่น Google Play และแอปพลิเคชันต่างๆ สามารถตรวจสอบ มีการประกาศ <uses-feature> รายการเพื่อเป็นส่วนหนึ่งของการจัดการหรือการโต้ตอบ กับแอปพลิเคชันของคุณ ด้วยเหตุนี้ คุณจึงควรประกาศ ฟีเจอร์ที่แอปพลิเคชันของคุณใช้

สำหรับบางฟีเจอร์ อาจมีแอตทริบิวต์เฉพาะที่ช่วยให้คุณระบุ เวอร์ชันของฟีเจอร์ เช่น เวอร์ชันของ Open GL ที่ใช้ (ประกาศด้วย glEsVersion) ฟีเจอร์อื่นๆ ที่มีหรือไม่มี มีอยู่ในอุปกรณ์ เช่น กล้อง จะได้รับการประกาศโดยใช้ name

แม้ว่าองค์ประกอบ <uses-feature> จะเปิดใช้งานสำหรับ อุปกรณ์ที่ใช้งาน API ระดับ 4 ขึ้นไป จะมีองค์ประกอบเหล่านี้ แม้ว่าminSdkVersion ไม่เกิน 3 อุปกรณ์ที่ใช้แพลตฟอร์มเวอร์ชันเก่าจะละเว้น จากองค์ประกอบนั้น

หมายเหตุ: เมื่อประกาศฟีเจอร์ โปรดทราบว่า ที่คุณต้องขอสิทธิ์ตามความเหมาะสม ตัวอย่างเช่น คุณต้อง ขอ CAMERA ก่อนที่แอปพลิเคชันของคุณจะสามารถเข้าถึง API กล้องถ่ายรูป การร้องขอ ให้สิทธิ์แอปพลิเคชันของคุณ ในการเข้าถึงฮาร์ดแวร์ที่เหมาะสมและ ซอฟต์แวร์ การประกาศฟีเจอร์ที่แอปพลิเคชันของคุณใช้จะช่วยให้มั่นใจได้ว่า ความเข้ากันได้ของอุปกรณ์

ดังนี้
android:name
ระบุฟีเจอร์ฮาร์ดแวร์หรือซอฟต์แวร์เดียวที่แอปพลิเคชันใช้เป็น สตริงข้อบ่งชี้ ค่าแอตทริบิวต์ที่ถูกต้องจะแสดงอยู่ในฟีเจอร์ฮาร์ดแวร์และซอฟต์แวร์ ฟีเจอร์ ค่าแอตทริบิวต์เหล่านี้คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
android:required
วันที่
ค่าบูลีนที่ระบุว่าแอปพลิเคชันจำเป็นต้องใช้ฟีเจอร์หรือไม่ ที่ระบุไว้ใน android:name
  • การประกาศ android:required="true" สำหรับฟีเจอร์เป็นการระบุว่า แอปพลิเคชันไม่ทำงานหรือไม่ทำงาน ออกแบบมาให้ทำงาน เมื่อฟีเจอร์ที่ระบุไม่ได้แสดงอยู่ใน อุปกรณ์
  • การประกาศ android:required="false" สำหรับฟีเจอร์เป็นการระบุว่า แอปพลิเคชันจะใช้ฟีเจอร์นี้หากมีใน อุปกรณ์ แต่อุปกรณ์นั้นถูกออกแบบมาให้ทำงานโดยไม่ต้องระบุ หากจำเป็น

ค่าเริ่มต้นสำหรับ android:required คือ "true"

android:glEsVersion
เวอร์ชัน OpenGL ES ที่แอปพลิเคชันต้องใช้ 16 บิตที่สูงกว่า หมายถึงจำนวนหลัก และ 16 บิตล่างหมายถึงจำนวนรอง สำหรับ ตัวอย่างเช่น ในการระบุ OpenGL ES เวอร์ชัน 2.0 คุณต้องกำหนดค่าเป็น "0x00020000" หรือในการระบุ OpenGL ES 3.2 ให้ตั้งค่าเป็น "0x00030002"

แอปพลิเคชันระบุ android:glEsVersion ไม่เกิน 1 รายการ ในไฟล์ Manifest หากระบุมากกว่า 1 รายการ พารามิเตอร์ ระบบจะใช้ android:glEsVersion ที่มีค่าสูงสุดเป็นตัวเลขและ ระบบจะไม่สนใจค่าอื่นๆ

หากแอปพลิเคชันไม่ได้ระบุ android:glEsVersion ระบบจะสันนิษฐานว่าแอปพลิเคชันต้องใช้ OpenGL ES 1.0 เท่านั้น ซึ่งรองรับโดยอุปกรณ์ที่ใช้ Android ทั้งหมด

แอปพลิเคชันสามารถสันนิษฐานว่าหากแพลตฟอร์มรองรับ OpenGL ES ที่กำหนด นอกจากนี้ยังรองรับ OpenGL ES เวอร์ชันต่างๆ ที่มีตัวเลขต่ำกว่าทั้งหมดด้วย ดังนั้น สำหรับ แอปพลิเคชันที่ต้องใช้ทั้ง OpenGL ES 1.0 และ OpenGL ES 2.0 ให้ระบุ ว่าต้องใช้ OpenGL ES 2.0

สำหรับแอปพลิเคชันที่สามารถทำงานร่วมกับ OpenGL ES ได้หลายเวอร์ชัน ระบุเฉพาะเวอร์ชันต่ำสุดของ OpenGL ES ที่ต้องใช้ ทั้งนี้ สามารถตรวจสอบขณะรันไทม์ว่าใช้งาน OpenGL ES ในระดับที่สูงกว่าได้หรือไม่

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ OpenGL ES รวมถึงวิธีตรวจสอบ OpenGL ES ที่รองรับ ในระหว่างรันไทม์ โปรดดู OpenGL ES คู่มือ API

เปิดตัวใน
API ระดับ 4
ดูเพิ่มเติม

Google Play และการกรองตามฟีเจอร์

Google Play จะกรองแอปพลิเคชันที่ผู้ใช้มองเห็นได้เพื่อให้ ผู้ใช้สามารถดูและดาวน์โหลดเฉพาะแอปพลิเคชันที่รองรับ อุปกรณ์ของตน หนึ่งในวิธีที่จะกรองแอปพลิเคชันคือตามฟีเจอร์ ความสามารถในการใช้งานร่วมกัน

เพื่อดูความเข้ากันได้ของฟีเจอร์ของแอปพลิเคชันกับ อุปกรณ์, Google Play เปรียบเทียบ

  • ฟีเจอร์ที่แอปพลิเคชันต้องใช้ ตามที่ประกาศไว้ใน องค์ประกอบ <uses-feature> ในไฟล์ Manifest ของแอปพลิเคชัน
  • ฟีเจอร์ที่มีในอุปกรณ์ ในฮาร์ดแวร์หรือซอฟต์แวร์ ตามที่รายงาน โดยใช้คุณสมบัติของระบบแบบอ่านอย่างเดียว

ตัวจัดการแพ็กเกจ Android เพื่อให้เปรียบเทียบฟีเจอร์ต่างๆ ได้อย่างแม่นยำ ให้ชุดค่าคงที่ของฟีเจอร์ที่ใช้ร่วมกัน ซึ่งทั้งแอปพลิเคชันและอุปกรณ์ ใช้เพื่อประกาศข้อกำหนดและการสนับสนุนเกี่ยวกับฟีเจอร์ ค่าคงที่ของฟีเจอร์ที่มี จะแสดงอยู่ในส่วนการอ้างอิงคุณลักษณะ ในเอกสารนี้ และในเอกสารประกอบของชั้นเรียนสำหรับ PackageManager

เมื่อผู้ใช้เปิด Google Play แอปพลิเคชันจะสอบถามว่า ตัวจัดการแพ็กเกจสำหรับรายการฟีเจอร์ที่พร้อมใช้งานในอุปกรณ์โดยการโทร getSystemAvailableFeatures() จัดเก็บแอปพลิเคชันแล้วส่งรายการฟีเจอร์ไปยัง Google Play เมื่อสร้างเซสชันสำหรับผู้ใช้

ทุกครั้งที่คุณอัปโหลดแอปพลิเคชัน ไปยัง Google Play Console Google Play จะสแกนไฟล์ Manifest ของแอปพลิเคชัน เครื่องมือนี้จะค้นหา <uses-feature> องค์ประกอบและประเมินชุดค่าผสม ร่วมกับองค์ประกอบอื่นๆ ในบางกรณี เช่น <uses-sdk> และ <uses-permission> องค์ประกอบ หลังจากก่อตั้ง ชุดคุณลักษณะที่ต้องการของแอปพลิเคชัน ข้อมูลที่เก็บแสดงรายการไว้ภายใน ข้อมูลเมตาที่เชื่อมโยงกับ APK ของแอปพลิเคชันและแอปพลิเคชัน เวอร์ชัน

เมื่อผู้ใช้ค้นหาหรือเรียกดูแอปพลิเคชันโดยใช้ Google Play บริการจะเปรียบเทียบคุณลักษณะที่จำเป็นของแต่ละแอปพลิเคชันกับ ฟีเจอร์ที่มีในอุปกรณ์ของผู้ใช้ หากจำเป็นต้องใช้ทุกข้อ ที่มีอยู่ในอุปกรณ์ Google Play ทำให้ผู้ใช้เห็น รวมทั้งอาจดาวน์โหลดแอปพลิเคชันได้

หากไม่มีฟีเจอร์ที่จำเป็น ที่อุปกรณ์นี้รองรับ Google Play จะกรองแอปพลิเคชันเพื่อไม่ให้ ผู้ใช้มองเห็นได้หรือพร้อมให้ดาวน์โหลด

เนื่องจากฟีเจอร์ที่คุณประกาศใน<uses-feature> มีผลต่อสิ่งที่ Google Play กรองแอปพลิเคชันของคุณได้โดยตรง การทำความเข้าใจวิธีที่ Google Play ประเมินไฟล์ Manifest ของแอปพลิเคชัน และสร้างชุดของฟีเจอร์ที่จำเป็น ส่วนต่อไปนี้จะให้ข้อมูลเพิ่มเติม

การกรองตามฟีเจอร์ที่ประกาศไว้อย่างชัดแจ้ง

ฟีเจอร์ที่ประกาศไว้อย่างชัดแจ้งคือฟีเจอร์ที่แอปพลิเคชันประกาศใน องค์ประกอบ <uses-feature> การประกาศฟีเจอร์อาจมี แอตทริบิวต์ android:required=["true" | "false"] หากคุณเป็น การคอมไพล์กับ API ระดับ 5 ขึ้นไป

ซึ่งจะช่วยให้คุณระบุได้ว่า แอปพลิเคชันต้องใช้ฟีเจอร์นี้ และไม่สามารถทำงานได้อย่างถูกต้องหากไม่มี ("true") หรือใช้ฟีเจอร์ หากมี แต่ออกแบบมาให้ทำงานโดยไม่ใช้ได้ ("false")

Google Play จะจัดการฟีเจอร์ที่ประกาศอย่างชัดแจ้งในลักษณะนี้

  • หากฟีเจอร์ได้รับการประกาศอย่างชัดแจ้งว่าจำเป็น ดังที่แสดงดังต่อไปนี้ เช่น Google Play จะเพิ่ม ไว้ในรายการคุณลักษณะที่จำเป็นสำหรับแอปพลิเคชัน แล้ว กรองแอปพลิเคชันจากผู้ใช้ในอุปกรณ์ที่ไม่มีฟีเจอร์ดังกล่าว
    <uses-feature android:name="android.hardware.camera.any" android:required="true" />
    
  • หากมีการประกาศฟีเจอร์อย่างชัดเจนเป็นไม่จำเป็น ดังที่แสดงใน ตัวอย่างต่อไปนี้ Google เล่นไม่เป็นการเพิ่มฟีเจอร์ลงในรายการฟีเจอร์ที่จำเป็น สำหรับ ด้วยเหตุนี้ เราจึงไม่รับพิจารณาฟีเจอร์ที่ไม่จำเป็นซึ่งประกาศไว้อย่างชัดแจ้ง การกรองแอปพลิเคชัน แม้ว่าอุปกรณ์จะไม่มีข้อมูล Google Play ยังถือว่าแอปพลิเคชันใช้งานร่วมกับ อุปกรณ์และแสดงให้ผู้ใช้เห็น เว้นแต่ว่าจะมีการใช้กฎการกรองอื่นๆ
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    
  • หากมีการประกาศฟีเจอร์อย่างชัดเจน แต่ไม่มี android:required โดย Google Play จะถือว่าฟีเจอร์นี้ และตั้งค่าการกรองในนั้น

โดยทั่วไปแล้ว หากแอปพลิเคชันของคุณออกแบบมาให้ แสดงบน Android 1.6 และต่ำกว่า แอตทริบิวต์ android:required ไม่พร้อมใช้งานใน API และ Google Play จะถือว่า ต้องมีการประกาศ <uses-feature> รายการ

หมายเหตุ: ด้วยการประกาศฟีเจอร์อย่างชัดเจนและ รวมถึงแอตทริบิวต์ android:required="false" คุณจะสามารถ ปิดใช้การกรองทั้งหมดใน Google Play สำหรับฟีเจอร์ที่ระบุอย่างมีประสิทธิภาพ

กรองตามฟีเจอร์โดยนัย

ฟีเจอร์แบบ implicit เป็นฟีเจอร์ที่แอปพลิเคชันต้องใช้เพื่อ ทำงานได้อย่างถูกต้อง แต่ที่ไม่ได้ประกาศใน องค์ประกอบ <uses-feature> ในไฟล์ Manifest แน่นอน บอกให้ทุกๆ แอปพลิเคชันประกาศฟีเจอร์ทั้งหมดเสมอ ใช้หรือต้องมี และไม่มีการประกาศฟีเจอร์ที่ใช้โดย แอปพลิเคชันถือเป็นข้อผิดพลาดได้

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

แอปพลิเคชันอาจต้องใช้ฟีเจอร์ แต่ไม่ได้ประกาศด้วยเหตุผลดังต่อไปนี้

  • แอปพลิเคชันถูกคอมไพล์กับไลบรารี Android เวอร์ชันเก่า (Android 1.5 หรือเวอร์ชันก่อนหน้า) ซึ่งไม่ได้มีองค์ประกอบ <uses-feature> พร้อมใช้งาน
  • นักพัฒนาแอปสันนิษฐานอย่างไม่ถูกต้องว่ามีฟีเจอร์นี้อยู่ใน และไม่จำเป็นต้องประกาศ
  • นักพัฒนาแอปละเว้นการประกาศฟีเจอร์โดยไม่ได้ตั้งใจ
  • นักพัฒนาแอปประกาศฟีเจอร์อย่างชัดแจ้ง แต่ไม่ได้ประกาศ ใช้ได้ เช่น ข้อผิดพลาดในการสะกดใน <uses-feature> ชื่อองค์ประกอบหรือค่าสตริงที่ไม่รู้จักสำหรับ แอตทริบิวต์ android:name จะทำให้การประกาศฟีเจอร์เป็นโมฆะ

เพื่อรองรับกรณีเหล่านี้ Google Play จะพยายามค้นหา สำหรับข้อกำหนดคุณลักษณะโดยนัยของแอปพลิเคชัน โดยการตรวจสอบองค์ประกอบอื่นๆ ที่ประกาศในไฟล์ Manifest <uses-permission> องค์ประกอบ

หากแอปพลิเคชันขอสิทธิ์เกี่ยวกับฮาร์ดแวร์ Google Play จะถือว่าแอปพลิเคชันใช้ฟีเจอร์ของฮาร์ดแวร์ที่เกี่ยวข้องและ และจำเป็นต้องใช้คุณลักษณะเหล่านั้น แม้ว่าจะไม่มี ประกาศ <uses-feature> ที่เกี่ยวข้อง สำหรับวัตถุประสงค์ดังกล่าว Google Play จะเพิ่มคุณลักษณะของฮาร์ดแวร์ที่จำเป็นลงใน ข้อมูลเมตาที่เก็บไว้สำหรับแอปพลิเคชัน และตั้งค่าตัวกรองสำหรับแอปพลิเคชัน

ตัวอย่างเช่น หากแอปพลิเคชันขอสิทธิ์ CAMERA Google Play ถือว่าแอปพลิเคชันต้องใช้กล้องหลัง (หันหน้าจอออก) แม้แต่กับ หากแอปไม่ประกาศองค์ประกอบ <uses-feature> สำหรับ android.hardware.camera ด้วยเหตุนี้ Google Play จึงกรองอุปกรณ์ ที่ไม่มีกล้องหลัง

หากคุณไม่ต้องการให้ Google Play กรองตามคำที่เฉพาะเจาะจง โปรดประกาศฟีเจอร์อย่างชัดเจนใน <uses-feature> และรวมแอตทริบิวต์ android:required="false" สำหรับ เช่น ต้องการปิดใช้การกรองโดยนัยด้วยสิทธิ์ CAMERA ประกาศฟีเจอร์ต่อไปนี้

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

ข้อควรระวัง: สิทธิ์ที่คุณขอ องค์ประกอบ <uses-permission> อาจส่งผลกระทบต่อวิธีที่ Play กรองแอปพลิเคชันของคุณ ส่วนสิทธิ์ที่กล่าวเป็นนัยถึงข้อกำหนดของฟีเจอร์จะแสดงรายการ สิทธิ์ทั้งหมดที่แสดงเป็นนัยถึงข้อกำหนดเกี่ยวกับคุณลักษณะ ซึ่งจะทำให้ ในการกรองด้วย

การจัดการพิเศษสำหรับฟีเจอร์บลูทูธ

Google Play ใช้กฎที่แตกต่างกันเล็กน้อยจากที่อธิบายในตัวอย่างก่อนหน้านี้เมื่อ เพื่อพิจารณาการกรองสำหรับบลูทูธ

หากแอปพลิเคชันประกาศสิทธิ์ของบลูทูธใน <uses-permission> องค์ประกอบ แต่ไม่ได้ประกาศอย่างชัดเจน ฟีเจอร์บลูทูธในองค์ประกอบ <uses-feature> Google Play จะตรวจสอบเวอร์ชันแพลตฟอร์ม Android ที่แอปพลิเคชันใช้ ที่ออกแบบมาเพื่อให้ทำงานได้ ตามที่ระบุไว้ในองค์ประกอบ <uses-sdk>

ดังที่แสดงในตารางต่อไปนี้ Google Play จะเปิดใช้การกรองสำหรับ ฟีเจอร์บลูทูธเฉพาะเมื่อแอปพลิเคชันประกาศว่าระดับต่ำที่สุดหรือกำหนดเป้าหมายไว้ เป็น Android 2.0 (API ระดับ 5) ขึ้นไป แต่โปรดทราบว่า Google Play จะใช้กฎปกติในการกรองเมื่อแอปพลิเคชัน ประกาศฟีเจอร์บลูทูธในองค์ประกอบ <uses-feature>

ตาราง 1 วิธีที่ Google Play กำหนด ข้อกำหนดฟีเจอร์บลูทูธสำหรับแอปพลิเคชันที่ขอบลูทูธ แต่ไม่ประกาศฟีเจอร์บลูทูธใน องค์ประกอบ <uses-feature>

หาก minSdkVersion คือ ... และ targetSdkVersion คือ ผลลัพธ์
<=4 หรือไม่ได้ระบุ <uses-sdk> <= 4 Google Play ไม่กรองแอปพลิเคชันออกจากอุปกรณ์ใดๆ ตามรายงานการสนับสนุนสำหรับ android.hardware.bluetooth
<= 4 มากกว่าหรือเท่ากับ 5 Google Play จะกรองแอปพลิเคชันออกจากอุปกรณ์ใดๆ ที่ไม่สนับสนุนฟีเจอร์ android.hardware.bluetooth (รวมถึง รุ่นก่อนหน้า)
มากกว่าหรือเท่ากับ 5 มากกว่าหรือเท่ากับ 5

ตัวอย่างต่อไปนี้จะแสดงผลลัพธ์ในการกรองแบบต่างๆ ตาม Google Play จะจัดการฟีเจอร์บลูทูธ

ในตัวอย่างแรก แอปพลิเคชันที่ออกแบบมาเพื่อทำงานใน API ระดับที่เก่ากว่า ประกาศสิทธิ์ของบลูทูธ แต่ไม่ประกาศฟีเจอร์บลูทูธใน องค์ประกอบ <uses-feature>
ผลลัพธ์: Google Play ไม่กรองแอปพลิเคชันออกจากอุปกรณ์ใดๆ
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" />
    ...
</manifest>
ในตัวอย่างที่ 2 แอปพลิเคชันเดียวกันจะประกาศเป้าหมาย ระดับ API "5"
ผลลัพธ์: ตอนนี้ Google Play จะถือว่าจำเป็นต้องมีฟีเจอร์ดังกล่าวและ กรองแอปพลิเคชันออกจากอุปกรณ์ทั้งหมดที่ไม่รายงานการรองรับบลูทูธ ซึ่งรวมถึงอุปกรณ์ที่ใช้แพลตฟอร์มเวอร์ชันเก่า
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
ตรงนี้ แอปพลิเคชันเดียวกันนี้ได้ประกาศฟีเจอร์บลูทูธโดยเฉพาะ
ผลลัพธ์: ใช้การกรองเหมือนกับตัวอย่างก่อนหน้านี้
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
สุดท้าย ในกรณีต่อไปนี้ แอปพลิเคชันเดียวกันจะเพิ่ม android:required="false"
ผลลัพธ์: Google Play ปิดใช้การกรองตามบลูทูธ การสนับสนุนฟีเจอร์สำหรับอุปกรณ์ทั้งหมด
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" android:required="false" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>

ทดสอบฟีเจอร์ที่แอปพลิเคชันต้องการ

คุณสามารถใช้เครื่องมือ aapt2 ซึ่งรวมอยู่ใน Android SDK เพื่อ กำหนดวิธีที่ Google Play กรองแอปพลิเคชันของคุณตามประกาศ ฟีเจอร์และสิทธิ์ต่างๆ โดยให้เรียกใช้ aapt2 ด้วยคำสั่ง dump badging การดำเนินการนี้จะทำให้ aapt2 แยกวิเคราะห์ ไฟล์ Manifest ของแอปพลิเคชันและใช้กฎเดียวกันกับที่ Google Play ใช้ในการ จะระบุฟีเจอร์ที่แอปพลิเคชันของคุณต้องการ

ในการใช้เครื่องมือ ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างและส่งออกแอปพลิเคชันของคุณเป็น APK ที่ไม่ได้รับรอง หากคุณพัฒนาใน Android Studio ให้สร้างแอปพลิเคชันด้วย Gradle ดังนี้
    1. เปิดโครงการและเลือกเรียกใช้ > แก้ไขการกำหนดค่า
    2. เลือกเครื่องหมายบวกใกล้มุมบนซ้ายของหน้าเรียกใช้/แก้ไขข้อบกพร่อง การกำหนดค่า
    3. เลือก Gradle
    4. ป้อน "APK ที่ไม่ได้รับรอง" ใน Name
    5. เลือกโมดูลจากส่วนโปรเจ็กต์ Gradle
    6. ป้อน "ประกอบ" ใน Tasks
    7. เลือกตกลงเพื่อกำหนดค่าใหม่ให้เสร็จสมบูรณ์
    8. ตรวจสอบว่าได้เลือกการกำหนดค่าการเรียกใช้ APK ที่ไม่ได้ลงชื่อไว้ ในแถบเครื่องมือ จากนั้นเลือก เรียกใช้ > เรียกใช้ "APK ที่ไม่ได้รับรอง"
    คุณสามารถค้นหา APK ที่ไม่ได้รับรองใน ไดเรกทอรี <ProjectName>/app/build/outputs/apk/
  2. ค้นหาเครื่องมือ aapt2 หากยังไม่ได้อยู่ใน PATH หากคุณกำลังใช้เครื่องมือ SDK r8 ขึ้นไป คุณสามารถค้นหา aapt2 ได้ใน วันที่ <SDK>/build-tools/<tools version number> ไดเรกทอรี

    หมายเหตุ: คุณต้องใช้เวอร์ชันของ aapt2 ที่มีให้สำหรับคอมโพเนนต์ Build-Tools ล่าสุดที่พร้อมใช้งาน ถ้า คุณไม่มีคอมโพเนนต์ Build-Tools ล่าสุด ให้ดาวน์โหลดโดยใช้ Android SDK Manager

  3. เรียกใช้ aapt2 โดยใช้ไวยากรณ์นี้
$ aapt2 dump badging <path_to_exported_.apk>

ต่อไปนี้เป็นตัวอย่างเอาต์พุตคำสั่งสำหรับตัวอย่างบลูทูธที่ 2 ที่แสดง ก่อนหน้านี้:

$ ./aapt2 dump badging BTExample.apk
package: name='com.example.android.btexample' versionCode='' versionName=''
uses-permission:'android.permission.BLUETOOTH_ADMIN'
uses-feature:'android.hardware.bluetooth'
sdkVersion:'3'
targetSdkVersion:'5'
application: label='BT Example' icon='res/drawable/app_bt_ex.png'
launchable activity name='com.example.android.btexample.MyActivity'label='' icon=''
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'small' 'normal' 'large'
locales: '--_--'
densities: '160'

ข้อมูลอ้างอิงเกี่ยวกับฟีเจอร์

ส่วนต่อไปนี้จะมีข้อมูลอ้างอิงเกี่ยวกับฟีเจอร์ของฮาร์ดแวร์ ฟีเจอร์ของซอฟต์แวร์ และชุดการอนุญาตที่บ่งบอกถึงฟีเจอร์บางอย่าง

ฟีเจอร์ของฮาร์ดแวร์

ส่วนนี้จะแสดงฟีเจอร์ของฮาร์ดแวร์ที่อุปกรณ์ล่าสุดรองรับ การเปิดตัวแพลตฟอร์ม เพื่อบ่งบอกว่าแอปของคุณใช้หรือต้องใช้ฮาร์ดแวร์ ให้ประกาศค่าที่สอดคล้องกัน โดยขึ้นต้นด้วย "android.hardware" ในแอตทริบิวต์ android:name ทุกครั้งที่คุณประกาศฟีเจอร์ของฮาร์ดแวร์ ให้ใช้ องค์ประกอบ <uses-feature>

ฟีเจอร์ของฮาร์ดแวร์เสียง

android.hardware.audio.low_latency
แอปใช้ไปป์ไลน์เสียงที่มีเวลาในการตอบสนองต่ำของอุปกรณ์ ซึ่งช่วยลดเวลาหน่วงและ จะล่าช้าเมื่อประมวลผลอินพุตหรือเอาต์พุตเสียง
android.hardware.audio.output
แอปส่งสัญญาณโดยใช้ลำโพง ช่องเสียบเสียง และบลูทูธของอุปกรณ์ ความสามารถในการสตรีม หรือกลไกที่คล้ายกัน
android.hardware.audio.pro
แอปใช้ฟังก์ชันและประสิทธิภาพของเสียงระดับไฮเอนด์ของอุปกรณ์ ความสามารถ
android.hardware.microphone
แอปจะบันทึกเสียงโดยใช้ไมโครโฟนของอุปกรณ์

ฟีเจอร์ของฮาร์ดแวร์บลูทูธ

android.hardware.bluetooth
แอปจะใช้ฟีเจอร์บลูทูธของอุปกรณ์ ซึ่งมักใช้เพื่อสื่อสารกับ อุปกรณ์อื่นๆ ที่ใช้บลูทูธได้
android.hardware.bluetooth_le
แอปใช้ฟีเจอร์วิทยุบลูทูธพลังงานต่ำของอุปกรณ์

ฟีเจอร์ของฮาร์ดแวร์กล้อง

หมายเหตุ: หากต้องการป้องกันการกรองแอปที่ไม่จำเป็นโดย Google Play เพิ่ม android:required="false" ลงในฟีเจอร์กล้องใดก็ได้ แอปของคุณจะทำงานได้โดยไม่ต้อง มิเช่นนั้น Google Play จะสันนิษฐานว่าฟีเจอร์ และป้องกันไม่ให้อุปกรณ์ที่ไม่รองรับฟีเจอร์นี้เข้าถึง แอป

รองรับหน้าจอขนาดใหญ่

อุปกรณ์ที่มีหน้าจอขนาดใหญ่บางรุ่นไม่รองรับฟีเจอร์กล้องทั้งหมด Chromebook ปกติแล้วจะไม่มีกล้องหลัง (มุมมองโลก) ระบบโฟกัสอัตโนมัติ หรือแฟลช แต่ Chromebook มีกล้องหน้า (ผู้ใช้หันหน้าออก) และมักเชื่อมต่อกับ กล้องภายนอก

เพื่อให้การสนับสนุนขั้นพื้นฐานเกี่ยวกับกล้อง และทำให้แอปของคุณพร้อมใช้งานสำหรับ อุปกรณ์ให้มากที่สุดเท่าที่จะเป็นไปได้ ให้เพิ่มการตั้งค่าฟีเจอร์ของกล้องต่อไปนี้ลงในแอปของคุณ ไฟล์ Manifest:

<uses-feature android:name="android.hardware.camera.any" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />

ปรับการตั้งค่าฟีเจอร์เพื่อรองรับกรณีการใช้งานของแอป แต่เพื่อทำให้ แอปพลิเคชันของคุณที่ใช้ได้กับอุปกรณ์จำนวนมากที่สุด ให้รวม required เพื่อระบุอย่างชัดเจนว่าสถานที่ ที่ต้องมี

รายการฟีเจอร์
android.hardware.camera.any

แอปใช้กล้องของอุปกรณ์หรือกล้องภายนอกที่เชื่อมต่อกับ อุปกรณ์ ใช้ฟีเจอร์นี้แทน android.hardware.camera หรือandroid.hardware.camera.frontถ้าแอปของคุณไม่ ต้องให้กล้องหันหลัง (ออกจากโลก) หรือหันหน้า (ผู้ใช้) ตามลำดับ

สิทธิ์ CAMERA แสดงว่าแอปของคุณก็ใช้ android.hardware.camera ต้องมีกล้องหลัง ยกเว้นเมื่อมีการประกาศ android.hardware.camera ด้วย android:required="false"

android.hardware.camera

แอปใช้กล้องหลังของอุปกรณ์ (หันออกจากโลก)

ข้อควรระวัง: อุปกรณ์ เช่น Chromebook ที่มี เฉพาะกล้องหน้า (กล้องหน้า) เท่านั้นไม่รองรับฟีเจอร์นี้ ใช้ android.hardware.camera.anyหากแอปของคุณใช้กล้องได้ ไม่ว่ากล้องจะหันไปในทิศทางใดก็ตาม

หมายเหตุ: CAMERA สิทธิ์หมายความว่ากล้องหลังเป็นฟีเจอร์ที่จำเป็น เพื่อช่วยรับประกันว่า การกรองที่เหมาะสมใน Google Play เมื่อไฟล์ Manifest ของแอปมี CAMERA ให้ระบุอย่างชัดเจนว่าแอปของคุณใช้ ฟีเจอร์ camera และระบุว่าจำเป็นต้องใช้หรือไม่ เช่น
<uses-feature android:name="android.hardware.camera" android:required="false" />

android.hardware.camera.front

แอปใช้กล้องหน้าของอุปกรณ์ (ผู้ใช้หันหน้าออก)

สิทธิ์ CAMERA แสดงว่าแอปของคุณก็ใช้ android.hardware.camera ต้องมีกล้องหลัง ยกเว้นเมื่อมีการประกาศ android.hardware.camera ด้วย android:required="false"

ข้อควรระวัง: หากแอปใช้ android.hardware.camera.front แต่ไม่ได้ประกาศอย่างชัดเจน android.hardware.camera ร่วมด้วย android.required="false", อุปกรณ์ที่ไม่มีด้านหลัง กล้อง (เช่น Chromebook) จะกรองโดย Google Play หากแอปรองรับ อุปกรณ์ที่มีเฉพาะกล้องหน้า ให้ประกาศ android.hardware.camera ด้วย android.required="false"เพื่อป้องกันการกรองที่ไม่จำเป็น

android.hardware.camera.external

แอปสื่อสารกับกล้องภายนอกที่ผู้ใช้เชื่อมต่อด้วย อุปกรณ์ ฟีเจอร์นี้ไม่รับประกันว่ากล้องภายนอกจะใช้งานได้ ให้แอปของคุณได้ใช้งาน

สิทธิ์ CAMERA แสดงว่าแอปของคุณก็ใช้ android.hardware.camera ต้องมีกล้องหลัง ยกเว้นเมื่อมีการประกาศ android.hardware.camera ด้วย android:required="false"

android.hardware.camera.autofocus

แอปใช้ฟีเจอร์โฟกัสอัตโนมัติที่กล้องของอุปกรณ์รองรับ

หมายเหตุ: CAMERA สิทธิ์ดังกล่าวบ่งบอกว่าการโฟกัสอัตโนมัติเป็นฟีเจอร์ที่จำเป็น เพื่อช่วยให้แน่ใจว่า การกรองใน Google Play เมื่อไฟล์ Manifest ของแอปมี CAMERA ให้ระบุอย่างชัดเจนว่าแอปของคุณใช้ ฟีเจอร์โฟกัสอัตโนมัติ และระบุว่าจำเป็นต้องใช้หรือไม่ เช่น:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

android.hardware.camera.flash

แอปนี้ใช้ฟีเจอร์แฟลชที่กล้องของอุปกรณ์รองรับ

android.hardware.camera.capability.manual_post_processing

แอปนี้ใช้ฟีเจอร์ MANUAL_POST_PROCESSING ที่ กล้องของอุปกรณ์

ฟีเจอร์นี้ช่วยให้แอปของคุณลบล้างไวท์บาลานซ์อัตโนมัติของกล้องได้ ใช้ android.colorCorrection.transform android.colorCorrection.gains และ android.colorCorrection.mode จาก TRANSFORM_MATRIX

android.hardware.camera.capability.manual_sensor

แอปนี้ใช้ฟีเจอร์ MANUAL_SENSOR ที่รองรับโดย กล้องของอุปกรณ์

ฟีเจอร์นี้บอกเป็นนัยถึงการรองรับการล็อกการรับแสงอัตโนมัติ (android.control.aeLock) เพื่อเปิดรับแสงของกล้อง เวลาและความไวที่จะมีค่าคงที่ที่ค่าหนึ่งๆ

android.hardware.camera.capability.raw

แอปนี้ใช้ฟีเจอร์RAWที่อุปกรณ์รองรับ กล้อง

ฟีเจอร์นี้กล่าวเป็นนัยว่าอุปกรณ์สามารถบันทึกไฟล์ DNG (ข้อมูลดิบ) ได้ กล้องของอุปกรณ์ให้ข้อมูลเมตาเกี่ยวกับ DNG ซึ่งจำเป็นสำหรับ เพื่อประมวลผลรูปภาพ RAW โดยตรง

android.hardware.camera.level.full
แอปใช้การรองรับการจับภาพระดับ FULL ที่มีให้ โดยกล้องของอุปกรณ์อย่างน้อย 1 ตัว การสนับสนุน FULL ประกอบด้วย ความสามารถในการถ่ายภาพอัจฉริยะ การควบคุมต่อเฟรม และหลังการประมวลผลด้วยตนเอง โปรดดู INFO_SUPPORTED_HARDWARE_LEVEL_FULL

ฟีเจอร์ฮาร์ดแวร์ UI ของอุปกรณ์

android.hardware.type.automotive

แอปนี้ออกแบบมาเพื่อแสดง UI บนชุดหน้าจอภายในรถ ผู้ใช้โต้ตอบกับแอปโดยใช้ปุ่มกด การแตะ แบบหมุน และอินเทอร์เฟซที่คล้ายกับเมาส์ โดยปกติแล้วหน้าจอของยานพาหนะ จะปรากฏขึ้นในคอนโซลกลางหรือแผงหน้าปัดของรถ เหล่านี้ โดยปกติแล้วหน้าจอจะมีขนาดและความละเอียดที่จำกัด

หมายเหตุ: เนื่องจากผู้ใช้ ขณะขับรถขณะใช้ UI ของแอปประเภทนี้ แอปต้องย่อขนาดไดรเวอร์ การเสียสมาธิ

android.hardware.type.television

(เลิกใช้งานแล้ว ใช้ android.software.leanback แทน)

แอปนี้ออกแบบมาเพื่อแสดง UI ของแอปบนทีวี ฟีเจอร์นี้จะกำหนด "ทีวี" ประสบการณ์การใช้งานทีวีในห้องนั่งเล่นทั่วไป: แอป บนหน้าจอขนาดใหญ่ ผู้ใช้กำลังนั่งอยู่ไกลๆ และลักษณะที่โดดเด่น เป็น D-pad แทนที่จะเป็นเมาส์ ตัวชี้หรืออุปกรณ์สัมผัส

android.hardware.type.watch
แอปนี้ออกแบบมาเพื่อแสดง UI ของแอปบนนาฬิกา นาฬิกาสวมอยู่บนร่างกาย เช่น บนข้อมือ ผู้ใช้อยู่ใกล้อุปกรณ์มากในขณะที่ โต้ตอบกับแอป
android.hardware.type.pc

แอปนี้ออกแบบมาเพื่อแสดง UI ของแอปใน Chromebook ฟีเจอร์นี้จะปิดใช้ การจำลองอินพุตสำหรับเมาส์และทัชแพด เนื่องจาก Chromebook ใช้เมาส์และ ฮาร์ดแวร์ทัชแพด โปรดดู เมาส์ อินพุต

หมายเหตุ: ตั้งค่า required="false" สำหรับกรณีนี้ element; ไม่เช่นนั้น Google Play Store จะทำให้แอปของคุณไม่พร้อมให้บริการในอุปกรณ์ นอกเหนือจาก Chromebook

ฟีเจอร์ของฮาร์ดแวร์อ่านลายนิ้วมือ

android.hardware.fingerprint
แอปอ่านลายนิ้วมือโดยใช้ฮาร์ดแวร์ข้อมูลไบโอเมตริกของอุปกรณ์

ฟีเจอร์ของฮาร์ดแวร์เกมแพด

android.hardware.gamepad
แอปบันทึกอินพุตเกมคอนโทรลเลอร์จากอุปกรณ์เองหรือ จากเกมแพดที่เชื่อมต่ออยู่

คุณลักษณะของฮาร์ดแวร์อินฟราเรด

android.hardware.consumerir
แอปใช้ความสามารถของอินฟราเรด (IR) ของอุปกรณ์ ซึ่งโดยปกติเพื่อ สื่อสารกับอุปกรณ์ IR อื่นๆ ของผู้บริโภค

ฟีเจอร์ฮาร์ดแวร์ของตำแหน่ง

android.hardware.location
แอปจะใช้ฟีเจอร์อย่างน้อย 1 อย่าง ในอุปกรณ์เพื่อระบุตำแหน่ง เช่น ตำแหน่ง GPS, ตำแหน่งเครือข่าย หรือตำแหน่งเซลล์
android.hardware.location.gps

แอปใช้พิกัดตำแหน่งที่แน่นอนที่ได้รับจาก Global ตัวรับสัญญาณระบบการกำหนดตำแหน่ง (GPS) บนอุปกรณ์

การใช้ฟีเจอร์นี้แสดงว่าแอปมีการใช้ ฟีเจอร์ android.hardware.location รายการ ยกเว้นระดับบนสุดรายนี้ มีการประกาศจุดสนใจพร้อมด้วยแอตทริบิวต์ android:required="false"

android.hardware.location.network

แอปใช้พิกัดตำแหน่งคร่าวๆ ที่ได้รับจากเครือข่าย อุปกรณ์ที่สนับสนุนระบบตำแหน่งทางภูมิศาสตร์

การใช้ฟีเจอร์นี้แสดงว่าแอปมีการใช้ ฟีเจอร์ android.hardware.location รายการ ยกเว้นระดับบนสุดรายนี้ มีการประกาศจุดสนใจพร้อมด้วยแอตทริบิวต์ android:required="false"

ฟีเจอร์ของฮาร์ดแวร์ NFC

android.hardware.nfc
แอปใช้ฟีเจอร์วิทยุ Near Field Communication (NFC) ของอุปกรณ์
android.hardware.nfc.hce

แอปนี้ใช้การจำลองบัตร NFC ที่โฮสต์บนอุปกรณ์

ฟีเจอร์ของฮาร์ดแวร์ OpenGL ES

android.hardware.opengles.aep
แอปใช้แพ็กส่วนขยาย Android ของ OpenGL ES ที่ติดตั้งไว้ ในอุปกรณ์

ฟีเจอร์ของฮาร์ดแวร์เซ็นเซอร์

android.hardware.sensor.accelerometer
แอปใช้การอ่านค่าการเคลื่อนไหวจากตัวตรวจวัดความเร่งของอุปกรณ์เพื่อตรวจจับ การวางแนวปัจจุบันของอุปกรณ์ ตัวอย่างเช่น แอปอาจใช้ การอ่านค่าจากตัวตรวจวัดความเร่งเพื่อกำหนดว่าเมื่อใดควรสลับระหว่างโหมดแนวตั้งกับ แนวนอน
android.hardware.sensor.ambient_temperature
แอปใช้เซ็นเซอร์อุณหภูมิแวดล้อม (สภาพแวดล้อม) ของอุปกรณ์ สำหรับ เช่น แอปสภาพอากาศสามารถรายงานอุณหภูมิในอาคารหรือกลางแจ้ง
android.hardware.sensor.barometer
แอปใช้บารอมิเตอร์ของอุปกรณ์ เช่น แอปสภาพอากาศอาจ รายงานความกดอากาศ
android.hardware.sensor.compass
แอปใช้เครื่องวัดค่าความเข้มข้นของสนามแม่เหล็ก (เข็มทิศ) ของอุปกรณ์ ตัวอย่างเช่น การนำทาง แอปอาจแสดงทิศทางปัจจุบันที่ผู้ใช้เผชิญ
android.hardware.sensor.gyroscope
แอปนี้ใช้เครื่องวัดการหมุนของอุปกรณ์เพื่อตรวจจับการหมุนและการบิด ระบบการวางแนวแบบ 6 แกน การใช้เซ็นเซอร์นี้จะทำให้แอปตรวจพบ ได้อย่างราบรื่นเมื่อต้องการสลับระหว่างแนวตั้งและแนวนอน การวางแนว
android.hardware.sensor.hifi_sensors
แอปใช้เซ็นเซอร์ความแม่นยำสูง (Hi-Fi) ของอุปกรณ์ ตัวอย่างเช่น แอปเล่นเกมอาจตรวจจับการเคลื่อนไหวที่มีความแม่นยำสูงของผู้ใช้ได้
android.hardware.sensor.heartrate
แอปใช้เครื่องวัดอัตราการเต้นของหัวใจของอุปกรณ์ เช่น แอปฟิตเนส อาจรายงานแนวโน้มอัตราการเต้นของหัวใจของผู้ใช้เมื่อเวลาผ่านไป
android.hardware.sensor.heartrate.ecg
แอปใช้เซ็นเซอร์วัดอัตราการเต้นของหัวใจด้วยคลื่นไฟฟ้าหัวใจ (ECG) ของอุปกรณ์ สำหรับ เช่น แอปฟิตเนสอาจรายงานข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับ อัตราการเต้นของหัวใจของผู้ใช้
android.hardware.sensor.light
แอปใช้เซ็นเซอร์แสงของอุปกรณ์ เช่น แอปอาจแสดง รูปแบบสี 1 ใน 2 รูปแบบตามแสงแวดล้อม
android.hardware.sensor.proximity
แอปใช้พร็อกซิมิตีเซ็นเซอร์ของอุปกรณ์ เช่น แอปโทรศัพท์ อาจปิดหน้าจอของอุปกรณ์เมื่อแอปตรวจพบว่าผู้ใช้ การถืออุปกรณ์ให้ชิดกับร่างกายของผู้ใช้
android.hardware.sensor.relative_humidity
แอปใช้เซ็นเซอร์วัดความชื้นสัมพัทธ์ของอุปกรณ์ เช่น สภาพอากาศ แอปอาจใช้ความชื้นในการคำนวณและรายงานจุดน้ำค้างแข็งปัจจุบัน
android.hardware.sensor.stepcounter
แอปใช้ตัวนับก้าวของอุปกรณ์ เช่น แอปฟิตเนสอาจ รายงานจำนวนขั้นตอนที่ผู้ใช้ต้องทำเพื่อให้บรรลุขั้นตอนประจำวัน เป้าหมาย
android.hardware.sensor.stepdetector
แอปใช้ตัวตรวจจับก้าวของอุปกรณ์ เช่น แอปฟิตเนสอาจ ใช้ช่วงเวลาระหว่างขั้นตอนเพื่ออนุมานประเภทของการออกกำลังกายที่ ที่ผู้ใช้กำลังทำอะไรอยู่

ฟีเจอร์ของฮาร์ดแวร์หน้าจอ

android.hardware.screen.landscape
android.hardware.screen.portrait

แอปกำหนดให้อุปกรณ์ใช้การวางแนวตั้งหรือแนวนอน หากแอปรองรับการวางแนวทั้ง 2 แบบ คุณก็ไม่จำเป็นต้องประกาศ ฟีเจอร์ใดก็ได้

ตัวอย่างเช่น หากแอปกำหนดให้มีการวางแนวในแนวตั้ง โปรดประกาศฟีเจอร์ต่อไปนี้ เพื่อให้เฉพาะอุปกรณ์ที่รองรับ แอปสามารถเรียกใช้แอปได้ในแนวตั้ง เสมอ หรือตามตัวเลือกของผู้ใช้

<uses-feature android:name="android.hardware.screen.portrait" />

ระบบสันนิษฐานว่าการวางแนวทั้ง 2 แบบไม่จำเป็นต้องใช้โดยค่าเริ่มต้น ดังนั้นแอปของคุณจึงได้ ติดตั้งในอุปกรณ์ที่รองรับการวางแนวแบบหนึ่งหรือทั้ง 2 แบบ อย่างไรก็ตาม หาก กิจกรรมใดก็ตามของคุณขอให้ดำเนินการตามการวางแนวที่เจาะจง ที่ใช้แอตทริบิวต์ android:screenOrientation การประกาศนี้ก็หมายความว่า ว่าแอปของคุณต้องใช้การวางแนวนั้น

เช่น หากคุณประกาศ android:screenOrientation ด้วย "landscape", "reverseLandscape" หรือ "sensorLandscape" จากนั้นแอปของคุณจะ ใช้ได้กับอุปกรณ์ที่รองรับการวางแนวแบบแนวนอนเท่านั้น

แนวทางปฏิบัติแนะนำคือให้ประกาศข้อกำหนดสำหรับเรื่องนี้ การวางแนวโดยใช้องค์ประกอบ <uses-feature> หากคุณประกาศ การวางแนวสำหรับกิจกรรมโดยใช้ android:screenOrientation แต่ไม่ได้ใช้ จริงๆ แล้วคุณสามารถ ปิดใช้ข้อกำหนดนี้โดยการประกาศการวางแนวที่มีองค์ประกอบ <uses-feature> และรวม android:required="false"

สำหรับความเข้ากันได้แบบย้อนหลัง อุปกรณ์ใดก็ตามที่ใช้ Android 3.1 (API ระดับ 12) หรือต่ำกว่ารองรับทั้งแนวนอนและแนวตั้ง

ฟีเจอร์ฮาร์ดแวร์โทรศัพท์

android.hardware.telephony
แอปจะใช้ฟีเจอร์โทรศัพท์ของอุปกรณ์ เช่น วิทยุเกี่ยวกับโทรศัพท์ บริการสื่อสารข้อมูล
android.hardware.telephony.cdma

แอปใช้วิทยุโทรศัพท์แบบ Code Division Multiple Access (CDMA) ระบบ

การใช้ฟีเจอร์นี้แสดงว่าแอปมีการใช้ ฟีเจอร์ android.hardware.telephony รายการ ยกเว้นระดับบนสุดรายนี้ ประกาศฟีเจอร์ด้วย android:required="false"

android.hardware.telephony.gsm

แอปนี้ใช้ระบบโทรศัพท์ Global System for Mobile Communications (GSM) ระบบวิทยุ

การใช้ฟีเจอร์นี้แสดงว่าแอปมีการใช้ ฟีเจอร์ android.hardware.telephony รายการ ยกเว้นระดับบนสุดรายนี้ ประกาศฟีเจอร์ด้วย android:required="false"

ฟีเจอร์ของฮาร์ดแวร์หน้าจอสัมผัส

android.hardware.faketouch

แอปใช้เหตุการณ์การโต้ตอบการสัมผัสพื้นฐาน เช่น การแตะและ การลาก

เมื่อประกาศว่าเป็นแอปบังคับ ฟีเจอร์นี้จะบ่งบอกว่าแอป ใช้ได้กับอุปกรณ์ก็ต่อเมื่ออุปกรณ์ดังกล่าวมี "Fake Touch" เลียนแบบ หน้าจอสัมผัส หรือมีหน้าจอสัมผัสจริงๆ

อุปกรณ์ที่มีอินเทอร์เฟซแบบสัมผัสปลอมซึ่งมีระบบป้อนข้อมูลของผู้ใช้ ที่จำลองความสามารถของหน้าจอสัมผัสบางส่วน ตัวอย่างเช่น เมาส์หรือรีโมตคอนโทรลอาจขับเคลื่อนเคอร์เซอร์บนหน้าจอ

หากแอปของคุณ ต้องมีการโต้ตอบแบบจุดและคลิกพื้นฐาน และจะไม่ทำงาน เมื่อมีเฉพาะตัวควบคุม D-pad ให้ประกาศฟีเจอร์นี้ เพราะ นี่คือการโต้ตอบการสัมผัสในระดับต่ำสุดแล้ว คุณยังสามารถใช้แอป ที่ประกาศฟีเจอร์นี้บนอุปกรณ์ที่มีการสัมผัสที่ซับซ้อนมากขึ้น อินเทอร์เฟซ

แอปต้องมี android.hardware.faketouch โดยค่าเริ่มต้น หากคุณต้องการ ให้จำกัดแอปไว้สำหรับอุปกรณ์ที่มีเฉพาะหน้าจอสัมผัส คุณต้อง ประกาศอย่างชัดเจนว่าต้องใช้หน้าจอสัมผัส ดังนี้

<uses-feature android:name="android.hardware.touchscreen"
    android:required="true" />

แอปทั้งหมดที่ไม่ได้กำหนดอย่างชัดแจ้ง android.hardware.touchscreen ดังที่แสดงในตัวอย่างต่อไปนี้ ทำงานบนอุปกรณ์ที่มี android.hardware.faketouch

<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
android.hardware.faketouch.multitouch.distinct

แอปจะติดตาม "นิ้ว" 2 นิ้วขึ้นไปที่ไม่เหมือนกัน บนอินเทอร์เฟซแบบ Fake Touch นี่คือซูเปอร์เซ็ตของ android.hardware.faketouch เมื่อประกาศว่าจำเป็น ฟีเจอร์นี้จะระบุว่าแอป ใช้ได้กับอุปกรณ์ก็ต่อเมื่ออุปกรณ์นั้นเลียนแบบ ตั้งแต่ 2 นิ้วขึ้นไป หรือมีหน้าจอสัมผัสที่ใช้ได้จริง

อุปกรณ์อินพุตที่ต่างจากระบบมัลติทัชที่ android.hardware.touchscreen.multitouch.distinct กำหนด ไม่รองรับมัลติทัชที่แตกต่างกัน แต่ไม่รองรับอินเทอร์เฟซแบบ Fake Touch ไม่รองรับทั้งหมด ท่าทางสัมผัสแบบใช้ 2 นิ้ว เนื่องจากการป้อนข้อมูลจะเปลี่ยนเป็นการเคลื่อนไหวเคอร์เซอร์ บนหน้าจอ กล่าวคือ ท่าทางสัมผัสแบบนิ้วเดียวบนอุปกรณ์ดังกล่าวจะขยับ การปัดด้วย 2 นิ้วจะทําให้เกิดเหตุการณ์การแตะด้วยนิ้วเดียว และ ท่าทางสัมผัสแบบ 2 นิ้วอื่นๆ จะเรียกใช้การแตะ 2 นิ้วที่เกี่ยวข้อง กิจกรรม

อุปกรณ์ที่มีทัชแพดแบบสัมผัส 2 นิ้วสำหรับการเคลื่อนไหวเคอร์เซอร์ สามารถสนับสนุนฟีเจอร์นี้ได้

android.hardware.faketouch.multitouch.jazzhand

แอปจะติดตาม "นิ้ว" ที่แตกต่างกันอย่างน้อย 5 นิ้ว บนอินเทอร์เฟซแบบ Fake Touch นี่คือซูเปอร์เซ็ตของ android.hardware.faketouch เมื่อประกาศว่าจำเป็น ฟีเจอร์นี้จะระบุว่าแอป ใช้ได้กับอุปกรณ์ก็ต่อเมื่ออุปกรณ์นั้นเลียนแบบ ตั้งแต่ 5 นิ้วขึ้นไป หรือมีหน้าจอสัมผัสที่ใช้ได้จริง

อุปกรณ์อินพุตที่ต่างจากระบบมัลติทัชที่ android.hardware.touchscreen.multitouch.jazzhand กำหนด รองรับมัลติทัชเพลงแจ๊สด้วยอินเทอร์เฟซแบบสัมผัสปลอมไม่ได้รองรับทั้งหมด ท่าทางสัมผัสแบบใช้ 5 นิ้ว เนื่องจากการป้อนข้อมูลจะเปลี่ยนเป็นการเคลื่อนไหวเคอร์เซอร์ บนหน้าจอ กล่าวคือท่าทางสัมผัสแบบนิ้วเดียวบนอุปกรณ์ดังกล่าวจะขยับ เคอร์เซอร์ ท่าทางสัมผัสแบบหลายนิ้ว จะทำให้เกิดเหตุการณ์การแตะด้วยนิ้วเดียว และท่าทางสัมผัสแบบหลายนิ้วอื่นๆ จะทริกเกอร์การใช้หลายนิ้วที่ตรงกัน กิจกรรมการสัมผัส

อุปกรณ์ที่มีทัชแพดแบบสัมผัส 5 นิ้วสำหรับการเคลื่อนไหวเคอร์เซอร์ สามารถสนับสนุนฟีเจอร์นี้ได้

android.hardware.touchscreen

แอปนี้ใช้ความสามารถของหน้าจอสัมผัสของอุปกรณ์สำหรับท่าทางสัมผัสที่ มีการโต้ตอบมากกว่ากิจกรรมการแตะแบบพื้นฐาน เช่น การสะบัดข้อมือ นี่คือ ซูเปอร์เซ็ตของฟีเจอร์ android.hardware.faketouch

โดยค่าเริ่มต้น แอปทั้งหมดต้องใช้ฟีเจอร์นี้ จึงไม่ ใช้ได้กับอุปกรณ์ที่มีเฉพาะ "การแตะปลอม" ที่เลียนแบบ ของ Google คุณทำให้แอปพร้อมใช้งานในอุปกรณ์ต่างๆ ได้ ซึ่งมีอินเทอร์เฟซแบบสัมผัสปลอม หรือแม้กระทั่งบนอุปกรณ์ที่ ตัวควบคุม D-pad โดยประกาศอย่างชัดเจนว่าหน้าจอสัมผัส ไม่จำเป็นโดยใช้ android.hardware.touchscreen กับ android:required="false" เพิ่มการประกาศนี้หาก ที่แอปของคุณใช้ แต่ไม่จำเป็นต้องใช้อินเทอร์เฟซหน้าจอสัมผัสจริง ทั้งหมด แอปที่ไม่ได้กำหนดให้มี android.hardware.touchscreen สามารถทำงานบนอุปกรณ์ที่มี android.hardware.faketouch

หากอันที่จริงแล้ว แอปของคุณต้องใช้อินเทอร์เฟซแบบสัมผัส เช่น เพื่อการทำงานขั้นสูงขึ้น ท่าทางแตะสัมผัส เช่น สะบัดนิ้ว คุณไม่จำเป็นต้องประกาศการสัมผัสใดๆ หลายฟีเจอร์อินเทอร์เฟซ เนื่องจากจำเป็นต้องใช้โดยค่าเริ่มต้น อย่างไรก็ตาม จะดีที่สุดถ้าคุณประกาศฟีเจอร์ทั้งหมดที่แอปของคุณใช้อย่างชัดแจ้ง

หากต้องการการโต้ตอบด้วยการสัมผัสที่ซับซ้อนมากขึ้น เช่น ใช้หลายนิ้ว ประกาศว่าแอปของคุณใช้หน้าจอสัมผัสขั้นสูง ใหม่ๆ

android.hardware.touchscreen.multitouch

แอปใช้ความสามารถแบบมัลติทัชแบบ 2 จุดพื้นฐานของอุปกรณ์ เช่น สำหรับการบีบนิ้วกัน แต่แอปไม่จำเป็นต้องติดตามการแตะ ได้อย่างอิสระ นี่คือซูเปอร์เซ็ตของ android.hardware.touchscreen

การใช้ฟีเจอร์นี้แสดงว่าแอปมีการใช้ ฟีเจอร์ android.hardware.touchscreen รายการ ยกเว้นระดับบนสุดรายนี้ ประกาศฟีเจอร์ด้วย android:required="false"

android.hardware.touchscreen.multitouch.distinct

แอปใช้ความสามารถมัลติทัชขั้นสูงของอุปกรณ์สำหรับการติดตาม 2 คะแนนขึ้นไปแยกกัน ฟีเจอร์นี้เป็นซูเปอร์เซ็ตของ android.hardware.touchscreen.multitouch

การใช้ฟีเจอร์นี้แสดงว่าแอปมีการใช้ android.hardware.touchscreen.multitouch ฟีเจอร์ ยกเว้นในกรณีต่อไปนี้ ฟีเจอร์หลักมีการประกาศด้วย android:required="false"

android.hardware.touchscreen.multitouch.jazzhand

แอปใช้ความสามารถมัลติทัชขั้นสูงของอุปกรณ์สำหรับการติดตาม 5 คะแนนขึ้นไปแยกกัน ฟีเจอร์นี้เป็นซูเปอร์เซ็ตของ android.hardware.touchscreen.multitouch

การใช้ฟีเจอร์นี้แสดงว่าแอปมีการใช้ android.hardware.touchscreen.multitouch ฟีเจอร์ ยกเว้นในกรณีต่อไปนี้ ฟีเจอร์หลักมีการประกาศด้วย android:required="false"

ฟีเจอร์ของฮาร์ดแวร์ USB

android.hardware.usb.accessory
แอปจะทำงานเหมือนอุปกรณ์ USB และเชื่อมต่อกับโฮสต์ USB
android.hardware.usb.host
แอปใช้อุปกรณ์เสริม USB ที่เชื่อมต่อกับอุปกรณ์ ทำหน้าที่เป็นโฮสต์ USB

ฟีเจอร์ของฮาร์ดแวร์ Vulkan

android.hardware.vulkan.compute
แอปใช้ฟีเจอร์การประมวลผล Vulkan ฟีเจอร์นี้ระบุว่าแอปต้องใช้การเร่งฮาร์ดแวร์ การติดตั้งใช้งาน Vulkan เวอร์ชันของฟีเจอร์ระบุว่าตัวเลือกระดับใด ฟีเจอร์การประมวลผลที่แอปต้องการนอกเหนือจากข้อกำหนด Vulkan 1.0 ตัวอย่างเช่น หากแอปของคุณ ต้องมีการรองรับการประมวลผล Vulkan ระดับ 0 โปรดประกาศฟีเจอร์ต่อไปนี้
<uses-feature
    android:name="android.hardware.vulkan.compute"
    android:version="0"
    android:required="true" />
ดูรายละเอียดเพิ่มเติมเกี่ยวกับเวอร์ชันของฟีเจอร์ได้ที่ FEATURE_VULKAN_HARDWARE_COMPUTE
android.hardware.vulkan.level
แอปใช้ฟีเจอร์ระดับ Vulkan ฟีเจอร์นี้บ่งบอกว่าแอปต้องใช้ การใช้ Vulkan ที่เร่งฮาร์ดแวร์ เวอร์ชันของฟีเจอร์ระบุว่าตัวเลือกระดับใด ฟีเจอร์ฮาร์ดแวร์ที่แอปต้องใช้ เช่น หากแอปต้องใช้ฮาร์ดแวร์ Vulkan ระดับ 0 ให้ประกาศฟีเจอร์ต่อไปนี้
<uses-feature
    android:name="android.hardware.vulkan.level"
    android:version="0"
    android:required="true" />
ดูข้อมูลเพิ่มเติมเกี่ยวกับเวอร์ชันของฟีเจอร์ได้ที่ FEATURE_VULKAN_HARDWARE_LEVEL
android.hardware.vulkan.version
แอปใช้ Vulkan ฟีเจอร์นี้ระบุว่าแอปต้องใช้การเร่งฮาร์ดแวร์ การติดตั้งใช้งาน Vulkan เวอร์ชันของฟีเจอร์จะระบุเวอร์ชันขั้นต่ำของการรองรับ Vulkan API ที่แอปต้องการ ตัวอย่างเช่น หากแอปต้องใช้การรองรับ Vulkan 1.0 ให้ประกาศ ฟีเจอร์ต่อไปนี้
<uses-feature
    android:name="android.hardware.vulkan.version"
    android:version="0x400003"
    android:required="true" />
ดูรายละเอียดเพิ่มเติมเกี่ยวกับเวอร์ชันของฟีเจอร์ได้ที่ FEATURE_VULKAN_HARDWARE_VERSION

ฟีเจอร์ของฮาร์ดแวร์ Wi-Fi

android.hardware.wifi
แอปนี้ใช้ฟีเจอร์เครือข่าย 802.11 (Wi-Fi) ในอุปกรณ์
android.hardware.wifi.direct
แอปใช้ฟีเจอร์เครือข่าย Wi-Fi Direct ในอุปกรณ์

ฟีเจอร์ซอฟต์แวร์

ส่วนนี้จะแสดงคุณลักษณะของซอฟต์แวร์ที่สนับสนุนโดย การเปิดตัวแพลตฟอร์ม เพื่อแสดงให้เห็นว่าแอปของคุณใช้หรือต้องใช้ซอฟต์แวร์ ให้ประกาศค่าที่สอดคล้องกัน โดยขึ้นต้นด้วย "android.software" ในแอตทริบิวต์ android:name ทุกครั้งที่คุณประกาศคุณลักษณะของซอฟต์แวร์ ให้ใช้ องค์ประกอบ <uses-feature>

ฟีเจอร์ของซอฟต์แวร์การสื่อสาร

android.software.sip
แอปใช้บริการ Session Initiation Protocol (SIP) ด้วยการใช้ SIP แอปสามารถรองรับการดำเนินการโทรศัพท์ทางอินเทอร์เน็ต เช่น การประชุมทางวิดีโอ และการรับส่งข้อความโต้ตอบแบบทันที
android.software.sip.voip

แอปใช้บริการ VoiceOver Internet Protocol (VoIP) ที่ใช้ SIP โดย เมื่อใช้ VoIP แอปจะรองรับการใช้งานโทรศัพท์ทางอินเทอร์เน็ตแบบเรียลไทม์ เช่น การประชุมทางวิดีโอแบบ 2 ทาง

การใช้ฟีเจอร์นี้แสดงว่าแอปมีการใช้ android.software.sip ยกเว้นฟีเจอร์หลัก ประกาศด้วย android:required="false"

android.software.webview
แอปจะแสดงเนื้อหาจากอินเทอร์เน็ต

ฟีเจอร์ของซอฟต์แวร์การป้อนข้อมูลที่กำหนดเอง

android.software.input_methods
แอปใช้วิธีการป้อนข้อมูลใหม่ ซึ่งนักพัฒนาแอปเป็นผู้กำหนดใน InputMethodService

ฟีเจอร์ของซอฟต์แวร์การจัดการอุปกรณ์

android.software.backup
แอปนี้มีตรรกะในการสำรองและกู้คืนข้อมูล
android.software.device_admin
แอปจะใช้ผู้ดูแลระบบอุปกรณ์ในการบังคับใช้นโยบายด้านอุปกรณ์
android.software.managed_users
แอปรองรับผู้ใช้รองและโปรไฟล์ที่มีการจัดการ
android.software.securely_removes_users
แอปสามารถนำผู้ใช้และผู้ใช้รายนั้นที่เกี่ยวข้องออกอย่างถาวร
android.software.verified_boot
แอปนี้มีตรรกะในการจัดการผลลัพธ์จากการเปิดเครื่องที่ได้รับการยืนยันของอุปกรณ์ ซึ่งจะตรวจจับว่าการกำหนดค่าของอุปกรณ์มีการเปลี่ยนแปลงหรือไม่ในระหว่าง รีสตาร์ทการดำเนินการ

ฟีเจอร์สำหรับซอฟต์แวร์สื่อ

android.software.midi
แอปเชื่อมต่อกับเครื่องดนตรีหรือเอาต์พุตเสียงโดยใช้ Musical โปรโตคอล Instrument Digital Interface (MIDI)
android.software.print
แอปนี้มีคำสั่งสำหรับพิมพ์เอกสารที่แสดงบนอุปกรณ์
android.software.leanback
แอปนี้ออกแบบมาให้ทำงานบนอุปกรณ์ Android TV
android.software.live_tv
แอปสตรีมรายการทีวีสด

ฟีเจอร์ของซอฟต์แวร์สำหรับอินเทอร์เฟซหน้าจอ

android.software.app_widgets
แอปใช้หรือให้บริการวิดเจ็ตของแอปและมีจุดประสงค์เพื่อ อุปกรณ์ที่มีหน้าจอหลักหรือตำแหน่งที่คล้ายกันซึ่งผู้ใช้ ฝังวิดเจ็ตของแอป
android.software.home_screen
แอปจะทำงานแทนหน้าจอหลักของอุปกรณ์
android.software.live_wallpaper
แอปใช้หรือให้บริการวอลเปเปอร์ที่มีภาพเคลื่อนไหว

สิทธิ์ที่บ่งบอกถึงข้อกำหนดของฟีเจอร์

ค่าคงที่ของฟีเจอร์ฮาร์ดแวร์และซอฟต์แวร์บางอย่างจะมีให้ แอปพลิเคชันหลัง API ที่เกี่ยวข้อง ด้วยเหตุนี้ แอปบางแอปอาจใช้ API มาก่อน พวกเขาสามารถประกาศว่าต้องการ API โดยใช้ ระบบ <uses-feature>

ในการป้องกันไม่ให้แอปเหล่านั้นพร้อมให้บริการโดยไม่ได้ตั้งใจ Google Play จะถือว่าสิทธิ์ที่เกี่ยวข้องกับฮาร์ดแวร์บางอย่างบ่งชี้ว่า ฟีเจอร์ฮาร์ดแวร์ที่จำเป็นต้องระบุโดยค่าเริ่มต้น ตัวอย่างเช่น แอปพลิเคชันที่ใช้บลูทูธต้องขอ BLUETOOTH สิทธิ์ในองค์ประกอบ <uses-permission>

สำหรับรุ่นเดิม Google Play จะถือว่าการประกาศสิทธิ์หมายความว่า ฟีเจอร์ที่จำเป็นของ android.hardware.bluetooth เป็นฟีเจอร์ที่จำเป็นตาม แอปพลิเคชัน และตั้งค่าการกรองตามคุณลักษณะนั้น รายการตาราง 2 สิทธิ์ซึ่งแสดงถึงข้อกำหนดของฟีเจอร์เทียบเท่ากับที่ประกาศไว้ใน องค์ประกอบ <uses-feature>

<uses-feature> รายการ รวมถึงประกาศ แอตทริบิวต์ android:required ที่ประกาศไว้ จะมีความสําคัญเหนือกว่าเสมอ ฟีเจอร์ที่บอกเป็นนัยคือสิทธิ์ในตาราง 2 สำหรับสิทธิ์เหล่านี้ คุณสามารถปิดการใช้งานการกรองตามคุณลักษณะโดยนัย การประกาศฟีเจอร์ในเอลิเมนต์ <uses-feature> ที่ตั้งค่าแอตทริบิวต์ required เป็น false

ตัวอย่างเช่น หากต้องการ ปิดใช้การกรองตามสิทธิ์ CAMERA ให้เพิ่ม การประกาศ <uses-feature> ต่อไปนี้ไปยังไฟล์ Manifest

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

ข้อควรระวัง: หากแอปกำหนดเป้าหมายเป็น Android 5.0 (API ระดับ 21) หรือ สูงกว่าและใช้ ACCESS_COARSE_LOCATION หรือ สิทธิ์ในการรับตำแหน่ง ACCESS_FINE_LOCATION อัปเดตจากเครือข่ายหรือ GPS ตามลำดับ คุณต้องแสดง ประกาศว่าแอปของคุณใช้android.hardware.location.network หรือ android.hardware.location.gps ฟีเจอร์ของฮาร์ดแวร์

ตาราง 2. สิทธิ์ของอุปกรณ์ที่บอกเป็นนัยถึงการใช้งานฮาร์ดแวร์ของอุปกรณ์

หมวดหมู่ สิทธิ์ ข้อกำหนดของฟีเจอร์โดยนัย
บลูทูธ BLUETOOTH android.hardware.bluetooth

ดูรายละเอียดได้ที่การจัดการพิเศษสำหรับฟีเจอร์บลูทูธ

BLUETOOTH_ADMIN android.hardware.bluetooth
กล้อง CAMERA android.hardware.camera
android.hardware.camera.autofocus
ตำแหน่ง ACCESS_MOCK_LOCATION android.hardware.location
ACCESS_LOCATION_EXTRA_COMMANDS android.hardware.location
INSTALL_LOCATION_PROVIDER android.hardware.location
ACCESS_COARSE_LOCATION

android.hardware.location

android.hardware.location.network (เมื่อระดับ API เป้าหมายเท่ากับ 20 หรือต่ำกว่าเท่านั้น)

ACCESS_FINE_LOCATION

android.hardware.location

android.hardware.location.gps (เมื่อระดับ API เป้าหมายเท่ากับ 20 หรือต่ำกว่าเท่านั้น)

ไมโครโฟน RECORD_AUDIO android.hardware.microphone
โทรศัพท์ CALL_PHONE android.hardware.telephony
CALL_PRIVILEGED android.hardware.telephony
MODIFY_PHONE_STATE android.hardware.telephony
PROCESS_OUTGOING_CALLS android.hardware.telephony
READ_SMS android.hardware.telephony
RECEIVE_SMS android.hardware.telephony
RECEIVE_MMS android.hardware.telephony
RECEIVE_WAP_PUSH android.hardware.telephony
SEND_SMS android.hardware.telephony
WRITE_APN_SETTINGS android.hardware.telephony
WRITE_SMS android.hardware.telephony
Wi-Fi ACCESS_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_MULTICAST_STATE android.hardware.wifi