זיהוי של Android OS

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

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

‫AIS הוא שירות GATT רגיל ויכול להיות רק מופע אחד של AIS במכשיר. ה-UUID של השירות הראשי הוא e73e0001-ef1b-4e74-8291-2e4f3164f3b5. מאפיין רמת ה-API של Android‏ (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 בשירותים הראשיים שמתגלים.