פרופילים של Bluetooth

Bluetooth API כולל תמיכה בעבודה עם פרופילים של Bluetooth. א' פרופיל Bluetooth הוא מפרט של ממשק אלחוטי מבוסס-Bluetooth תקשורת בין מכשירים, למשל פרופיל 'דיבורית'. בנייד כדי להתחבר לאוזניות אלחוטיות, שני המכשירים חייבים לתמוך פרופיל בהפעלה קולית.

Bluetooth API מספק הטמעות לפונקציות Bluetooth הבאות פרופילים:

  • אוזניות. פרופיל האוזניות מספק תמיכה באוזניות Bluetooth בשימוש בטלפונים ניידים. Android מספק BluetoothHeadset כיתה, שהוא שרת proxy לשליטה על שירות אוזניות Bluetooth. המידע הזה כולל פרופיל Bluetooth עם אוזניות Bluetooth ומערכת דיבורית (גרסה 1.5). BluetoothHeadset class כולל תמיכה בפקודות AT. למידע נוסף על הנושא הזה, אפשר לעיין בקישור הבא: פקודות AT ספציפיות לספקים.
  • A2DP. הפרופיל המתקדם של הפצת אודיו (A2DP) מגדיר את האופן שבו ניתן לשדר אודיו באיכות גבוהה ממכשיר אחד לאחר באמצעות Bluetooth חיבור כזה. Android מספק BluetoothA2dp, כלומר שרת proxy לשליטה על שירות Bluetooth A2DP.
  • מכשיר בריאות. מערכת Android מספקת תמיכה ב-Bluetooth Health Device פרופיל (HDP). ההרשאה הזו מאפשרת ליצור אפליקציות שמשתמשות ב-Bluetooth כדי לתקשר עם מכשירי בריאות שתומכים ב-Bluetooth, כמו מוניטורים של דופק, דם מטרים, מדי חום, סולמות וכו'. לרשימה של מכשירים נתמכים ניתן לקרוא על קודי ההתמחות של מכשירים תואמים ב-HDP של Bluetooth נתוני המכשיר תחומי התמחות. הערכים האלה מוזכרים במפרט ISO/IEEE 11073-20601 [7] כמו MDC_DEV_SPEC_PROFILE_* בנספח קודי המינויים. לקבלת מידע נוסף מידע על HDP זמין בפרופיל של מכשיר הבריאות.

אלה השלבים הבסיסיים לעבודה עם פרופיל:

  1. משיגים את מתאם ברירת המחדל, כמו שמתואר ב הגדרת Bluetooth.
  2. הגדרת BluetoothProfile.ServiceListener המאזינים האלה שולחים התראה BluetoothProfile לקוחות כשהם חוברו לשירות או התנתקו ממנו.
  3. כדאי להשתמש getProfileProxy() כדי ליצור חיבור לאובייקט ה-Proxy של הפרופיל המשויך פרופיל. בדוגמה הבאה, אובייקט ה-Proxy של הפרופיל הוא מופע של BluetoothHeadset
  4. לחשבון onServiceConnected() מקבלים כינוי לאובייקט ה-Proxy של הפרופיל.
  5. אחרי שמקבלים את אובייקט ה-Proxy של הפרופיל, משתמשים בו כדי לעקוב אחרי המצב של ולבצע פעולות אחרות שרלוונטיות לאותו פרופיל.

קטע הקוד הבא מראה איך להתחבר לשרת proxy של BluetoothHeadset כדי שתוכלו לשלוט בפרופיל של אוזניות הכפתור:

Kotlin

var bluetoothHeadset: BluetoothHeadset? = null

// Get the default adapter
val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()

private val profileListener = object : BluetoothProfile.ServiceListener {

    override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) {
        if (profile == BluetoothProfile.HEADSET) {
            bluetoothHeadset = proxy as BluetoothHeadset
        }
    }

    override fun onServiceDisconnected(profile: Int) {
        if (profile == BluetoothProfile.HEADSET) {
            bluetoothHeadset = null
        }
    }
}

// Establish connection to the proxy.
bluetoothAdapter?.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET)

// ... call functions on bluetoothHeadset

// Close proxy connection after use.
bluetoothAdapter?.closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset)

Java

BluetoothHeadset bluetoothHeadset;

// Get the default adapter
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

private BluetoothProfile.ServiceListener profileListener = new BluetoothProfile.ServiceListener() {
    public void onServiceConnected(int profile, BluetoothProfile proxy) {
        if (profile == BluetoothProfile.HEADSET) {
            bluetoothHeadset = (BluetoothHeadset) proxy;
        }
    }
    public void onServiceDisconnected(int profile) {
        if (profile == BluetoothProfile.HEADSET) {
            bluetoothHeadset = null;
        }
    }
};

// Establish connection to the proxy.
bluetoothAdapter.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET);

// ... call functions on bluetoothHeadset

// Close proxy connection after use.
bluetoothAdapter.closeProfileProxy(bluetoothHeadset);

פקודות AT ספציפיות לספקים

אפליקציות יכולות להירשם לקבלת שידורים של מערכת עם הרשאות AT ספציפיות לספק מוגדר מראש פקודות שנשלחות על ידי אוזניות (למשל פקודת Plantronics +XEVENT). לדוגמה, אפליקציה יכולה לקבל שידורים שמציינים את רמת הטעינה של הסוללה של מכשיר מחובר והם יכולים להודיע למשתמש או לבצע פעולה אחרת לפי הצורך. יצירת שידור המקבל של ACTION_VENDOR_SPECIFIC_HEADSET_EVENT Intent לטפל בפקודות AT ספציפיות לספק עבור האוזניות.

הפרופיל של מכשיר הבריאות

מערכת Android תומכת בפרופיל של מכשיר Bluetooth Health (HDP). תקינות ה-Bluetooth ה-API כולל את המחלקות. BluetoothHealth BluetoothHealthCallback, וגם BluetoothHealthAppConfiguration, שמתוארים במחלקות מפתחות ממשקים.

כשמשתמשים ב-Bluetooth Health API, כדאי להבין את הגורמים הבאים: של המושגים:

מקור
מכשיר בריאותי כמו סולם משקל, מד סוכר או מדחום, מעביר נתונים רפואיים למכשיר חכם, כמו טלפון או טאבלט עם Android.
כיור
המכשיר החכם שמקבל את הנתונים הרפואיים. באפליקציית HDP, sink מיוצג על ידי אובייקט BluetoothHealthAppConfiguration.
הרשמה
התהליך המשמש לרישום sink לתקשורת עם בריאות מסוימת במכשיר.
חיבור
התהליך המשמש לפתיחת ערוץ בין מכשיר בריאות (מקור) לבין מכשיר חכם (sink).

יצירה של אפליקציית HDP

אלו השלבים הבסיסיים ליצירת אפליקציית HDP:

  1. מקבלים הפניה לאובייקט ה-Proxy BluetoothHealth. כמו בסרטונים רגילים אוזניות ומכשירי פרופיל A2DP, עליך להתקשר אל getProfileProxy() באמצעות BluetoothProfile.ServiceListener וגם סוג הפרופיל HEALTH כדי ליצור חיבור עם אובייקט ה-Proxy של הפרופיל.

  2. יצירת BluetoothHealthCallback ורישום הגדרת אפליקציה (BluetoothHealthAppConfiguration) שמשמש כיור בריאות.

  3. יצירת חיבור למכשיר בריאות.

  4. אחרי החיבור בהצלחה למכשיר בריאות, צריך לקרוא ולכתוב ב-Health באמצעות מתאר הקובץ. צריך לפרש את הנתונים שהתקבלו באמצעות מנהל תקינות, שמטמיע את תקן IEEE 11073 מפרטים.

  5. בסיום, צריך לסגור את ערוץ הבריאות ולבטל את הרישום של האפליקציה. הערוץ גם נסגר כשיש חוסר פעילות למשך זמן ארוך.