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 คือ |
ผลลัพธ์ |
---|---|---|
<uses-sdk> |
<= 4 | Google Play ไม่กรองแอปพลิเคชันออกจากอุปกรณ์ใดๆ
ตามรายงานการสนับสนุนสำหรับ android.hardware.bluetooth
|
<= 4 | มากกว่าหรือเท่ากับ 5 | Google Play จะกรองแอปพลิเคชันออกจากอุปกรณ์ใดๆ ที่ไม่สนับสนุนฟีเจอร์ android.hardware.bluetooth (รวมถึง
รุ่นก่อนหน้า) |
มากกว่าหรือเท่ากับ 5 | มากกว่าหรือเท่ากับ 5 |
ตัวอย่างต่อไปนี้จะแสดงผลลัพธ์ในการกรองแบบต่างๆ ตาม Google Play จะจัดการฟีเจอร์บลูทูธ
-
ในตัวอย่างแรก แอปพลิเคชันที่ออกแบบมาเพื่อทำงานใน API ระดับที่เก่ากว่า
ประกาศสิทธิ์ของบลูทูธ แต่ไม่ประกาศฟีเจอร์บลูทูธใน
องค์ประกอบ
- ผลลัพธ์: Google Play ไม่กรองแอปพลิเคชันออกจากอุปกรณ์ใดๆ
<uses-feature>
<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>
-
สุดท้าย ในกรณีต่อไปนี้ แอปพลิเคชันเดียวกันจะเพิ่ม
- ผลลัพธ์: Google Play ปิดใช้การกรองตามบลูทูธ การสนับสนุนฟีเจอร์สำหรับอุปกรณ์ทั้งหมด
android:required="false"
<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 ใช้ในการ
จะระบุฟีเจอร์ที่แอปพลิเคชันของคุณต้องการ
ในการใช้เครื่องมือ ให้ทำตามขั้นตอนต่อไปนี้
- สร้างและส่งออกแอปพลิเคชันของคุณเป็น APK ที่ไม่ได้รับรอง
หากคุณพัฒนาใน Android Studio ให้สร้างแอปพลิเคชันด้วย Gradle ดังนี้
- เปิดโครงการและเลือกเรียกใช้ > แก้ไขการกำหนดค่า
- เลือกเครื่องหมายบวกใกล้มุมบนซ้ายของหน้าเรียกใช้/แก้ไขข้อบกพร่อง การกำหนดค่า
- เลือก Gradle
- ป้อน "APK ที่ไม่ได้รับรอง" ใน Name
- เลือกโมดูลจากส่วนโปรเจ็กต์ Gradle
- ป้อน "ประกอบ" ใน Tasks
- เลือกตกลงเพื่อกำหนดค่าใหม่ให้เสร็จสมบูรณ์
- ตรวจสอบว่าได้เลือกการกำหนดค่าการเรียกใช้ APK ที่ไม่ได้ลงชื่อไว้ ในแถบเครื่องมือ จากนั้นเลือก เรียกใช้ > เรียกใช้ "APK ที่ไม่ได้รับรอง"
<ProjectName>/app/build/outputs/apk/
- ค้นหาเครื่องมือ
aapt2
หากยังไม่ได้อยู่ใน PATH หากคุณกำลังใช้เครื่องมือ SDK r8 ขึ้นไป คุณสามารถค้นหาaapt2
ได้ใน วันที่<SDK>/build-tools/<tools version number>
ไดเรกทอรีหมายเหตุ: คุณต้องใช้เวอร์ชันของ
aapt2
ที่มีให้สำหรับคอมโพเนนต์ Build-Tools ล่าสุดที่พร้อมใช้งาน ถ้า คุณไม่มีคอมโพเนนต์ Build-Tools ล่าสุด ให้ดาวน์โหลดโดยใช้ Android SDK Manager - เรียกใช้
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 |
|
|
ACCESS_FINE_LOCATION |
|
|
ไมโครโฟน | 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 |