BLUETOOTH в Android додатку

&nbsp

Назва цієї технології в перекладі на російську мову означає «Синьозубий» Це було прізвисько короля Харальда Датського У статті на сайті розробників компанії Sun (http://developerssuncom/mobility/midp/articfes/bluetoothl/) детально розповідається про цю технологію і є в тому числі анекдотичне зауваження про те, що на рунічному камені, спорудженому на честь Харальда, були висічені такі слова:

Харальд хрестив данів

Харальд підкорив Данію і Норвегію

Харальд вважає, що комунікація між мобільними телефонами і ноутбуками повинна йти як по маслу

Щоб продемонструвати, як в Android використовуються класи, що забезпечують звязок за технологією Bluetooth, ми напишемо утиліту для установки зєднання і передачі даних між пристроями, що підтримують Bluetooth Цей код заснований на прикладі BluetoothChat з комплекту Android SDK Даний код був зроблений більш універсальним, щоб охопити більш широкий спектр додатків з Bluetooth, а також спрощено, щоб вам було зручніше адаптувати його для своїх цілей

Досліджуючи різні API Android для роботи з Bluetooth, ми розглянемо, як ці АРІ задіюються в розглянутому коді і як їх можна використовувати для цілей, повязаних з конкретним додатком, в тому числі в діагностичному інструменті, вживаному в ході розробки для Bluetooth

Спочатку розглянемо, як працює Bluetooth і як ця технологія реалізована в Android

Стек протоколів Bluetooth

Цей розділ присвячений стандартам і протоколам, з яких складається стек протоколів Bluetooth (рис 171) Ці протоколи і стандарти вичерпно характеризують Bluetooth: ті види даних, для передачі яких призначений Bluetooth, кількість пристроїв, між якими можна одночасно встановити звязок, час затримки при передачі і т д

Рис 171 Стек протоколів Bluetooth в Android

Bluetooth зявився як особливий рід мережевих взаємодій, оскільки він являє собою персональну, або особисту, мережу Такі мережі також називаються абревіатурою PAN, або пікомереж Bluetooth призначений для зєднання до восьми пристроїв і для передачі даних з максимальною швидкістю до 3 Мбіт / с Сполучені пристрої повинні розташовуватися близько один до одного: у межах 10 м Bluetooth споживає дуже малу кількість енергії, що обчислюються мілівати Це означає, що навіть найменшої батареї надовго вистачає для такого звязку Навушники Bluetooth з малесенькою, невагомою батареєю можуть годинами забезпечувати голосовий звязок – приблизно стільки ж витримує набагато більш велика батарея мобільного телефону, оскільки мобільний радіосигнал з телефону повинен досягати значно більш віддаленій антени

До приладів, з якими корисно використовувати Bluetooth, відносяться пристрої з низькою і середньою швидкістю передачі даних – зокрема, клавіатури, миші, планшети, принтери, мікрофони, навушники (в тому числі з мікрофонами), а також мобільні та персональні компютерні пристрої, якщо з їх периферійними компонентами може знадобитися звязок Bluetooth також дозволяє встановлювати зєднання між ПК і мобільними телефонами

Протоколи, специфічні для Bluetooth, і запозичені протоколи

Говорячи про стек протоколів Bluetooth, важливо розділяти ці протоколи на специфічні для Bluetooth і запозичені, тобто такі, які працюють «поверх» Bluetooth Разом всі ці протоколи – як відносяться безпосередньо до Bluetooth, так і запозичені – можуть бути дуже складні Але якщо на хвилину абстрагуватися від того, що над Bluetooth знаходяться такі складні протоколи, як OBEX і TCP / IP, то все стає набагато зрозуміліше Тому ми почнемо з більш низьких рівнів Bluetooth і покажемо, як ці рівні допомагають «оформити» нашу роботу з Bluetooth

Ще одна важлива абстракція при роботі з Bluetooth зводиться до того, що ця технологія заміняє порти послідовного введення-виведення Це означає, що нижні рівні Bluetooth емулюють віртуальний набір послідовних кабелів між сполучаються пристроями і дозволяють вам управляти цими кабелями Саме з таким протоколом Bluetooth ми і будемо працювати Таким чином, ми зможемо користуватися для зчитування і запису даних простими класами введення-виведення Java іо: InputStream і OutputStream

Bluez: реалізація Bluetooth для Linux

Мобільний пристрій може зєднуватися по Bluetooth з якими завгодно іншими пристроями – чого не скажеш про периферійні пристрої, які можуть підключатися тільки до компютера або мобільного пристрою Це означає, що на мобільному пристрої нам буде потрібно практично повна реалізація Bluetooth і всіх запозичених протоколів, а також користувальницький інтерфейс, що забезпечує необхідні взаємодії для встановлення і використання зєднань, а також для роботи в додатках, що звязуються по Bluetooth

В Android використовується стек Bluez Bluetooth – найбільш поширений стек для роботи з Bluetooth, застосовуваний в Linux Він прийшов на зміну проекту, називається Open Вт Інформація про Bluez міститься на сайті проекту Bluez – http://wwwbluezorg

Bluez, розроблений в Qualcomm, увійшов до складу ядра Linux Проект розпочався в 2001 році і досі активний, добре підтримується Крім того, Bluez – це стабільна реалізація, що володіє хорошою сумісністю, – Ще одна причина, по якій варто використовувати Linux в операційних системах для мобільних пристроїв

Використання Bluetooth в додатках Android

Під використанням Bluetooth в Android розуміється застосування класів, спеціально розроблених для того, щоб инкапсулировать принцип, за яким Bluetooth працює в операційній системі Android Стек Bluez надає методи для перерахування пристроїв, слухання зєднань і використання сполук У пакеті Java іо надаються класи для зчитування і запису даних а класи Handler і Message забезпечують можливості побудови звязків (мостів) між користувача інтерфейсом, з одного боку, і потоками, керуючими введенням і виведенням в Bluetooth, – з іншого Розглянемо код і приклади використання цих класів

Компіляція і запуск коду допомагають зрозуміти, що можуть робити класи Bluetooth в додатках Android, призначених для встановлення звязку між пристроями, які розташовані поблизу один від одного

Почнемо випробування програми, що використовує Bluetooth, з найпростішого: спробуємо зєднати мобільний телефон з персональним компютером Потім нам знадобиться програма, яка спостерігала б за тією інформацією, яку отримує ПК по Bluetooth, і стежила, яка саме послана вами інформація дійшла до ПК У даному випадку застосовується утиліта Linux, звана hcidump

Запустіть програму в режимі налагодження і встановіть точки зупину у частинах додатки, які займаються відкриттям і прийняттям зєднання Можна створити зєднання зі свого ПК (в Linux для цього використовується апплет Blueman) або ж з програми Після створення зєднання запустіть на терміналі програму hcidump і переконайтеся, що інформація, яку ви ввели, потрапила на ПК Користуйтеся перерахованими нижче прапорами, щоб відображати тільки той вміст, яке надходить по Bluetooth:

sudo hcidump -a -R

Тепер інформація, яку ви послали з пристрою, повинна відобразитися в якості висновку hcidump на вашому ПК

Bluetooth і повязані з ним класи введення / виведення

Ця програма при роботі спирається на клас BluetoothAdapter, що забезпечує керування адаптером Bluetooth на пристрої, клас BluetoothDevice, який представляє стан підключеного пристрою, і клас BluetoothSocket, що надає сокети для слухання і встановлення зєднань:

У класі BtHelperHandler визначається ряд констант, а також надається трохи обгорткового коду (wrapper code), який дозволяє зробити чистішим методи, повязані з передачею повідомлень

Клас BtSPPHel per Java інкапсулює роботу з протоколом Bluetooth SPP (протокол послідовного порту):

Клас BtSPPHel per обєднує використання всіх цих класів, а також містить визначення вкладених підкласів потоку Thread, які займаються слуханням, встановленням зєднань і їх обслуговуванням

Саме тут пакет Java io стикується з Android Bluetooth: обєкти BI uetoothSocket містять методи, які повертають посилання на обєкти InputStream і OutputStream, які, в свою чергу, будуть використовуватися для зчитування і запису даних при встановленому сокет-зєднанні:

Клас DeviceListActivity

Ця активність відображає діалогове вікно, в якому перераховуються відомі пристрої і користувач може активувати пошук (сканування) пристроїв На відміну від частин додатки, в яких підкласи Thread застосовуються для реалізації асинхронного введення / виводу, а підкласи Handler – для передачі результатів потоку для користувача інтерфейсу, метод startDiscovery класу BluetoothAdapter запускає окремий потік і повідомляє результати за допомогою широкомовних намірів Тут для обробки результатів використовується приймач широкомовних намірів BroadcastReceiver

Клас BtConsoleActivity

Клас BtConsol eActivity створює активність для обміну миттєвими повідомленнями (зразок чату) для взаємодії з пристроєм Bluetooth Меню цієї активності дозволяють підключатися до пристрою, а основний вид у складі даної активності – це прокручуваний список тих даних, які відправляються і приймаються У нижній частині екрана розташоване текстове поле Edi tText Сюди вводиться текст, який потім відправляється на інший кінець SPP-зєднання

Класи обробників використовуються для «склеювання» однопотокового користувальницького інтерфейсу з потоками, що займаються слуханням, зєднанням і здійсненням операцій введення / висновку за сокетних зєднанням

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*