זיהוי של Android OS

החל מגרסה Android 16, מסגרת Android כוללת שירות מאפיין גנרי (GATT) שנקרא Android information service‏ (AIS), שמאפשר למכשירי Bluetooth לקרוא את רמת Android API כמאפיין GATT של השירות. השירות הזה מאפשר ליצרני מכשירי Bluetooth לדעת אם התקן היקפי של Bluetooth מתחבר למכשיר מרכזי שפועלת בו מערכת ההפעלה Android, ולנהל לוגיקה מיוחדת על סמך רמת ה-API.

שירות המידע של Android‏ (AIS)

AIS הוא שירות GATT רגיל, ויכולה להיות רק מופע אחד של AIS במכשיר. מזהה ה-UUID הראשי של השירות הוא e73e0001-ef1b-4e74-8291-2e4f3164f3b5. המאפיין Android API level (UUID:‏ e73e0002-ef1b-4e74-8291-2e4f3164f3b5) מכיל את רמת ה-API של המכשיר כמספר שלם ללא סימן של 32 סיביות בפורמט בינארי (little-endian). הערך של המאפיין של רמת ה-API של Android הוא באורך 4 אוקטטים (לדוגמה, רמת API 36 היא 0x24_00_00_00). כשהמכשיר גלוי, אפשר לקרוא את הערך של המאפיין של רמת ה-API של Android בלי אימות או הרשאה. כשהמכשיר לא גלוי, אפשר לקרוא את המאפיין של רמת ה-API של Android רק באמצעות אימות והרשאה.

הצגת השירות

מכשיר ה-Bluetooth נמצא בתפקיד הלקוח ב-GATT ומכשיר Android נמצא בתפקיד השרת. כדי לזהות את AIS ולקרוא את רמת ה-API של Android, מכשירי Bluetooth משתמשים בתהליכים של פרופיל GATT, כמו גילוי השירות הראשי, גילוי המאפיינים וקריאת ערך המאפיינים. פרטים על התהליכים האלה מופיעים במפרט הפרופיל של GATT.

רמת ה-API מוגדרת על ידי מאפיין המערכת ro.build.version.sdk. אם לא ניתן לזהות את השירות הראשי, סימן שנכס המערכת לא מוגדר או שהערך מוגדר כריק, או שמערכת ההפעלה המארחת היא לא Android.

אימות

כדי לוודא שאפשר לזהות את AIS, מריצים בדיקה ידנית על ידי התאמת התקן היקפי של Bluetooth למכשיר Android, ולאחר מכן מחפשים את UUID של שירות AIS בשירותים הראשיים שזוהו.