การเขียนบทความที่ครอบคลุมเกี่ยวกับวิธีตรวจสอบว่าตำแหน่งเปิดใช้งานบนอุปกรณ์ Android หรือไม่ อาจต้องมีความเข้าใจอย่างมากเกี่ยวกับการเขียนโปรแกรม Java และการใช้ไลบรารี Android ต่างๆ เรามาเจาะลึกเรื่องนี้กันดีกว่า
ในภาพรวมแอปพลิเคชันบนมือถือร่วมสมัย การเข้าถึงตำแหน่งของผู้ใช้ถือเป็นสิ่งสำคัญในการมอบประสบการณ์ส่วนบุคคลตามตำแหน่งทางภูมิศาสตร์ของผู้ใช้ ฟังก์ชันนี้มีให้ใช้งานมากมายในอุปกรณ์ที่ขับเคลื่อนโดย Android อย่างไรก็ตาม การพิจารณาว่าสถานที่นั้นเปิดใช้งานอยู่หรือไม่นั้นถือเป็นประเด็นสำคัญเช่นกัน
public boolean isLocationEnabled(Context context) {
int locationMode = 0;
String locationProviders;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
try {
locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
}
return locationMode != Settings.Secure.LOCATION_MODE_OFF;
} else {
locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
return !TextUtils.isEmpty(locationProviders);
}
}
ทำความเข้าใจโค้ด
รหัสที่ระบุข้างต้นจะตรวจสอบว่าบริการระบุตำแหน่งเปิดใช้งานบนอุปกรณ์ Android ใด ๆ หรือไม่ในสองขั้นตอนหลัก:
– หากอุปกรณ์เป็นเวอร์ชัน KitKat หรือสูงกว่า อุปกรณ์จะพยายามรับการตั้งค่าโหมดตำแหน่งและตรวจสอบว่าเป็นอย่างอื่นนอกเหนือจาก 'โหมดตำแหน่งปิด' หรือไม่ หากเป็นเช่นนั้น จะเป็นการยืนยันว่าตำแหน่งนั้นเปิดใช้งานอยู่
– สำหรับอุปกรณ์ที่ทำงานบนเวอร์ชันที่เก่ากว่า KitKat อุปกรณ์จะรับรายชื่อผู้ให้บริการตำแหน่งที่ได้รับอนุญาตและตรวจสอบว่าว่างเปล่าหรือไม่ หากรายการไม่ว่างเปล่า แสดงว่ามีการเปิดใช้งานตำแหน่งแล้ว
บทบาทของไลบรารีและฟังก์ชันต่างๆ
ในโค้ดนี้ เราได้ใช้ฟังก์ชันและไลบรารีเฉพาะบางประการ โดยส่วนใหญ่มาจากชุดนักพัฒนา Android:
- รุ่น.SDK_INT: นี่คือฟิลด์ที่เก็บเวอร์ชัน SDK ของแพลตฟอร์มที่ทำงานบนอุปกรณ์ในปัจจุบัน
- การตั้งค่าปลอดภัย: นี่คือคลาสที่จัดการการเข้าถึงการตั้งค่าระบบความปลอดภัยส่วนกลาง โดยหลักแล้วการตั้งค่าระบบที่ส่งผลต่อความเป็นส่วนตัวของผู้ใช้
- การตั้งค่า Secure.getInt: วิธีการนี้จะส่งกลับค่าการตั้งค่าจำนวนเต็มที่ปลอดภัยสำหรับชื่อที่กำหนด
- การตั้งค่า.Secure.LOCATION_MODE: ใช้เพื่อรับการตั้งค่าโหมดตำแหน่งปัจจุบัน
- การตั้งค่า Secure.LOCATION_PROVIDERS_ALLOWED: รับรายชื่อผู้ให้บริการสถานที่ที่ได้รับอนุญาต
อ่านเพิ่มเติม