ในบางครั้งแอปก็จำเป็นต้องเช็คว่าเครื่องที่กำลังใช้งานแอปอยู่นั่นเป็นมือถือ (Phone) หรือแท็บเล็ต (Tablet) กันแน่ เพื่อทำงานบางอย่างตามเงื่อนไขที่ต้องการ แต่รู้หรือไม่ว่าจริงๆแล้วบนแอนดรอยด์นั้นมีวิธีเช็คแบบง่ายๆ โดยใช้ความสามารถของ Configuration Qualifier อยู่นะ

ควรใช้เกณฑ์ในการแบ่งระหว่าง Phone กับ Tablet?

อย่างที่รู้กันว่าความแตกต่างระหว่าง Form Factor ทั้ง 2 นี้ก็คือ Physical Size หรือขนาดหน้าจอ โดยที่ขนาดน้อยกว่า 7 นิ้วลงไปจะถือว่าเป็น Phone และตั้งแต่ 7 นิ้วขึ้นไปจะถือว่าเป็น Tablet

แต่ทว่าบนแอนดรอยด์นั้นไม่สามารถเขียนเช็คได้ว่าหน้าจอของอุปกรณ์แอนดรอยด์มี Physical Size เท่าไร จึงทำให้ต้องเปลี่ยนไปใช้วิธีอื่น ซึ่งก็คือการเช็คผ่าน Screen Resolution ในหน่วย DP นั่นเอง

ทั้งนี้ก็เพราะว่า Tablet จะมี Smallest Width อยู่ที่ 540dp จึงทำให้นักพัฒนาสามารถใช้เป็นเกณฑ์เพื่อแบ่งระหว่าง Phone กับ Tablet ได้

การแบ่งประเภทระหว่าง Phone กับ Tablet ด้วย Smallest Width

แทนที่จะเขียนเช็คค่า SW ด้วยโค้ด Kotlin/Java เจ้าของบล็อกแนะนำให้ใช้ความสามารถของ Configuration Qualifier แทน เพราะว่ามีส่วนที่เป็นโค้ดน้อยและง่ายกว่า

วิธีดังกล่าวจะสร้าง Boolean ขึ้นมาไว้ใน Value Resource โดยแยก Qualifier ระหว่าง SW ที่ 540dp และให้ Boolean แต่ละตัวเก็บค่าเป็น True/False ไว้

<!-- res/values/device.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="is_phone">true</bool>
</resources>

<!-- res/values-sw540dp/device.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="is_phone">false</bool>
</resources>

เมื่อต้องการเช็คผ่านคำสั่ง Kotlin/Java จะสามารถใช้คำสั่งง่ายๆแบบนี้ได้เลย

val context: Context = ...
val isPhone = context.resources.getBoolean(R.bool.is_phone)

เห็นมั้ย สั้นๆง่ายๆ

ด้วยความสามารถของ Configuration Qualifier เพียงเท่านี้ก็สามารถเช็คได้แล้วว่าอุปกรณ์แอนดรอยด์ที่กำลังเปิดแอปอยู่นั้นเป็น Phone หรือ Tablet