پروفایل های بلوتوث

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

بلوتوث API پیاده سازی هایی را برای پروفایل های بلوتوث زیر فراهم می کند:

  • هدست . نمایه Headset از هدست های بلوتوث برای استفاده در تلفن های همراه پشتیبانی می کند. اندروید کلاس BluetoothHeadset را ارائه می‌کند که یک پروکسی برای کنترل سرویس هدست بلوتوث است. این شامل هر دو پروفایل هدست بلوتوث و هندزفری (نسخه 1.5) می شود. کلاس BluetoothHeadset شامل پشتیبانی از دستورات AT است. برای اطلاعات بیشتر در مورد این موضوع، دستورات AT خاص فروشنده را ببینید.
  • A2DP . نمایه Advanced Audio Distribution Profile (A2DP) تعریف می کند که چگونه می توان صدای با کیفیت بالا را از یک دستگاه به دستگاه دیگر از طریق اتصال بلوتوث پخش کرد. اندروید کلاس BluetoothA2dp را ارائه می کند که یک پروکسی برای کنترل سرویس بلوتوث A2DP است.
  • دستگاه بهداشتی . اندروید از نمایه دستگاه سلامت بلوتوث (HDP) پشتیبانی می کند. این به شما امکان می‌دهد برنامه‌هایی بسازید که از بلوتوث برای برقراری ارتباط با دستگاه‌های بهداشتی که از بلوتوث پشتیبانی می‌کنند، مانند نمایشگرهای ضربان قلب، سنج‌های خون، دماسنج، ترازو و غیره استفاده کنید. برای فهرستی از دستگاه‌های پشتیبانی‌شده و کدهای تخصصی داده‌های دستگاه مربوطه، به بخش تخصصی داده‌های دستگاه HDP HDP مراجعه کنید. این مقادیر همچنین در مشخصات ISO/IEEE 11073-20601 [7] به عنوان MDC_DEV_SPEC_PROFILE_* در ضمیمه کدهای نامگذاری ارجاع شده اند. برای اطلاعات بیشتر در مورد HDP، نمایه دستگاه بهداشتی را ببینید.

در اینجا مراحل اولیه کار با نمایه وجود دارد:

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

قطعه کد زیر نحوه اتصال به یک شی پراکسی BluetoothHeadset را نشان می دهد تا بتوانید نمایه Headset را کنترل کنید:

کاتلین

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

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

اندروید از نمایه دستگاه سلامت بلوتوث (HDP) پشتیبانی می کند. Bluetooth Health API شامل کلاس‌های BluetoothHealth ، BluetoothHealthCallback ، و BluetoothHealthAppConfiguration است که در کلاس‌ها و رابط‌های کلیدی توضیح داده شده‌اند.

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

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

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

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

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

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

  3. اتصال به یک دستگاه بهداشتی را ایجاد کنید.

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

  5. پس از اتمام، کانال سلامت را ببندید و برنامه را لغو ثبت کنید. کانال همچنین در صورت عدم فعالیت طولانی مدت بسته می شود.