نمایه‌های بلوتوث

میانای برنامه‌سازی کاربردی بلوتوث شامل پشتیبانی از کار با نمایه‌های بلوتوث است. نمایه بلوتوث مشخصات میانای بی‌سیم برای ارتباط مبتنی بر بلوتوث بین دستگاه‌ها است، مثل نمایه «دست‌آزاد». برای اینکه دستگاه همراه به هدست بی‌سیم متصل شود، هر دو دستگاه باید از نمایه «دست‌آزاد» پشتیبانی کنند.

Bluetooth API پیاده‌سازی‌هایی را برای نمایه‌های Bluetooth زیر ارائه می‌دهد:

  • هدست. نمایه «هدست» پشتیبانی از هدست‌های بلوتوث را برای استفاده با تلفن‌های همراه فراهم می‌کند. Android کلاس BluetoothHeadset را ارائه می‌دهد که پراکسی‌ای برای کنترل «سرویس هدست بلوتوث» است. این شامل نمایه‌های «هدست بلوتوث» و «دست‌آزاد» (نسخه ۱.۵) می‌شود. کلاس BluetoothHeadset شامل پشتیبانی از فرمان‌های AT است. برای اطلاعات بیشتر درباره این موضوع، به فرمان‌های AT مختص فروشنده مراجعه کنید.
  • A2DP. نمایه «نمایه توزیع پیشرفته صدا» (A2DP) نحوه جاری‌سازی صدای باکیفیت از یک دستگاه به دستگاه دیگر را ازطریق اتصال بلوتوث تعریف می‌کند. Android کلاس BluetoothA2dp را ارائه می‌دهد که پروکسی‌ای برای کنترل «سرویس A2DP بلوتوث» است.
  • دستگاه سلامتی. Android از «نمایه دستگاه سلامت بلوتوث» (HDP) پشتیبانی می‌کند. این به شما امکان می‌دهد برنامه‌هایی ایجاد کنید که از بلوتوث برای برقراری ارتباط با دستگاه‌های سلامتی که از بلوتوث پشتیبانی می‌کنند، مانند مانیتورهای ضربان قلب، فشارسنج‌ها، دماسنج‌ها، ترازوها و غیره استفاده می‌کنند. برای مشاهده فهرست دستگاه‌های پشتیبانی‌شده و کدهای تخصصی داده‌های دستگاه مربوط به آن‌ها، به تخصص‌های داده‌های دستگاه HDP بلوتوث مراجعه کنید. این مقادیر در مشخصات ISO/IEEE 11073-20601 [7] نیز به‌عنوان MDC_DEV_SPEC_PROFILE_* در پیوست کدهای نام‌گذاری ارجاع داده شده‌اند. برای اطلاعات بیشتر درباره HDP، به نمایه دستگاه سلامت مراجعه کنید.

مراحل اصلی کار با نمایه در اینجا آمده است:

  1. آداپتور پیش‌فرض را دریافت کنید، همان‌طور که در راه‌اندازی بلوتوث توضیح داده شده است.
  2. BluetoothProfile.ServiceListener راه‌اندازی کنید. این شنونده به BluetoothProfile مشتری اطلاع می‌دهد که چه زمانی به سرویس متصل یا از آن قطع شده‌اند.
  3. از getProfileProxy() برای برقراری اتصال به شیء پراکسی نمایه مرتبط با نمایه استفاده کنید. در مثال زیر، شیء پراکسی نمایه نمونه‌ای از BluetoothHeadset است.
  4. در onServiceConnected()، یک دسته برای شیء پراکسی نمایه دریافت کنید.
  5. وقتی شیء پراکسی نمایه را دریافت کردید، از آن برای نظارت بر وضعیت اتصال و انجام عملیات دیگری که به آن نمایه مربوط است استفاده کنید.

تکه‌کد زیر نحوه اتصال به شیء پراکسی BluetoothHeadset را نشان می‌دهد تا بتوانید نمایه «هدست» را کنترل کنید:

کاتلین

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)

جاوا

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 ایجاد کنید تا فرمان‌های AT مختص فروشنده را برای هدست مدیریت کند.

نمایه دستگاه سلامتی

Android از «نمایه دستگاه سلامت بلوتوث» (HDP) پشتیبانی می‌کند. The Bluetooth Health API includes the classes BluetoothHealth, BluetoothHealthCallback, and BluetoothHealthAppConfiguration, which are described in Key classes and interfaces.

هنگام استفاده از Bluetooth Health API، درک این مفاهیم کلیدی HDP مفید است:

منبع
دستگاه سلامتی، مانند ترازوی وزن، گلوکومتر، یا دماسنج، که داده‌های پزشکی را به دستگاه هوشمندی مانند تلفن یا رایانه لوحی Android منتقل می‌کند.
روشویی
دستگاه هوشمندی که داده‌های پزشکی را دریافت می‌کند. در برنامه HDP، سینک با شیء BluetoothHealthAppConfiguration نشان داده می‌شود.
ثبت‌نام
فرایند مورداستفاده برای ثبت سینک برای برقراری ارتباط با دستگاه سلامتی خاص.
اتصال
فرایندی که برای باز کردن کانال بین دستگاه سلامتی (منبع) و دستگاه هوشمند (مقصد) استفاده می‌شود.

ایجاد برنامه HDP

مراحل اصلی ایجاد برنامه HDP در اینجا آمده است:

  1. ارجاعی به شیء پراکسی BluetoothHealth دریافت کنید. همانند دستگاه‌های نمایه A2DP و هدست معمولی، باید getProfileProxy() را با BluetoothProfile.ServiceListener و نوع نمایه HEALTH فراخوانی کنید تا اتصالی با شیء پراکسی نمایه برقرار شود.

  2. BluetoothHealthCallback ایجاد کنید و پیکربندی برنامه‌ای را ثبت کنید (BluetoothHealthAppConfiguration) که به‌عنوان سینک سلامت عمل می‌کند.

  3. برقراری اتصال با دستگاه سلامت.

  4. وقتی اتصال به دستگاه سلامت با موفقیت برقرار شد، بااستفاده از توصیف‌گر فایل، در دستگاه سلامت بخوانید و بنویسید. داده‌های دریافتی باید بااستفاده از مدیر سلامت که مشخصات IEEE 11073 را پیاده‌سازی می‌کند تفسیر شود.

  5. وقتی کارتان تمام شد، کانال سلامت را ببندید و ثبت‌نام برنامه را لغو کنید. همچنین، اگر برای مدتی طولانی فعالیتی انجام نشود، کانال بسته می‌شود.