Установка настроек Bluetooth адаптера из Android




Обзор AndroidBluetooth API

Bluetooth API располагается в пакете android.bluetooth. В его состав входит несколько классов:

  • BluetoothAdapter - отвечает за работу с установленным в телефоне Bluetooth модулем. Экземпляр этого класса есть в любой программе, использующей bluetooth. В состав этого класса входят методы, позволяющие производить поиск доступных устройств, запрашивать список подключенных устройств, создавать экземпляр класса BluetoothDevice на основании известного MAC адреса и создавать BluetoothServerSocket для ожидания запроса на соединение от других устройств.
  • BluetoothDevice - класс, ассоциирующийся с удаленным Bluetooth устройством. Экземпляр этого класса используется для соединения через BluetoothSocket или для запроса информации об удаленном устройстве (имя, адресс, класс, состояние).
  • BluetoothSocket - интерфейс для Bluetoothsocket, аналогичный TCP сокетам. Это точка соединения, позволяющая обмениваться данными с удаленным устройством через InputStream и OutputStream.
  • BluetoothServerSocket - представляет открытый сокет сервера, готовый к обработке входящего запроса. Для того чтобы соединить два Android устройства, одно из них должно открыть сокет с помощью этого класса. Когда удаленное устройство пошлет запрос на соединение, BluetoothServerSocket вернет объект BluetoothSocket.
  • BluetoothClass - описывает основные параметры Bluetooth модуля. Объект этого класса доступен только в режиме чтения и может быть полезен при определении типа устройства.
  • BluetoothProfile - интерфейс, представляющий Bluetooth профиль (спецификацию беспроводного интерфейса для соединения устройств через Bluetooth). Примером профиля может служить Hands-Freeprofile, определяющий порядок работы с беспроводной гарнитурой.
  • BluetoothHeadset - обеспечивает поддержку bluetooth гарнитур. Включает в себя профили BluetoothHeadset и Hands-Free (v1.5).
  • BluetoothA2dp - Описывает AdvancedAudioDistributionProfile, определяющий передачу потока высококачественных аудиоданных через bluetooth.
  • BluetoothHealth - определяет proxy для Health Device Profile.
  • BluetoothHealthCallback - абстрактный класс, который можно использовать для реализации обратных вызовов от BluetoothHealth. Для того чтобы регистрировать изменение состояния Bluetooth устройства нужно на основе этого класса создать собственный и переопределить в нем callback методы.
  • BluetoothHealthAppConfiguration - конфигурация, которая используется для соединения с различными медицинскими bluetooth устройствами.
  • BluetoothProfile. ServiceListener - интерфейс, который посылает уведомление BluetoothProfileIPC клиентам при их подключении и отключении от сервиса.

В рамках этой статьи мы не будем углубляться в суть работы с медицинскими bluetooth устройствами и сосредоточимся на первых четырех классах.

Установка настроек Bluetooth адаптера из Android

Если Вы решили задействовать в своей программе возможности Bluetooth модуля, вам необходимо, прежде всего, подключить соответствующий пакет API.

importandroid.bluetooth.*;

Помимо этого необходимо дать приложению разрешение на использования Bluetooth модуля. Для этого в манифест программы нужно добавить строку

<uses-permissionandroid:name="android.permission.BLUETOOTH" />

Если Вы собираетесь использовать критические с точки зрения безопасности возможности, например, изменить имя устройства, то нужно дать более мощные разрешения BLUETOOTH_ADMIN:

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

При использовании разрешения BLUETOOTH_ADMIN, необходимо также указывать и BLUETOOTH.

Прежде чем соединяться с кем-нибудь и передавать данные нужно убедиться, что ваш телефон имеет bluetooth модуль. Первым делом при работе с bluetooth API нужно создать экземпляр класса BluetoothAdapter

BluetoothAdapterbluetooth= BluetoothAdapter.getDefaultAdapter();

Если ваш телефон не поддерживает bluetooth, будет возвращено значение "null". На практике нужно всегда проверять это условие, чтобы избежать ошибок.

BluetoothAdapterbluetooth= BluetoothAdapter.getDefaultAdapter();

 

if(bluetooth!= null)

{

// СBluetooth все в порядке.

}

Даже если ваш аппарат оснащен Bluetooth модулем, он может быть недоступен, поскольку пользователь просто отключил его. Для проверки доступности Bluetooth служит метод isEnabled(). В случае, если модуль отключен, можно предложить пользователю включить его.

if (bluetooth.isEnabled()) {
// Bluetooth включен. Работаем.
}
else
{
// Bluetooth выключен. Предложим пользователю включить его.
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}

Если пользователь согласился на включение адаптера, в переменную enableBtIntent будет записано значение RESULT_OK. В противном случае - RESULT_CANCELED.

После того, как все проверки выполнены, можно приступать к работе. Давайте, например, отобразим имя и адрес нашего адаптера, вызвав методы getName() и getAddress().

String status;

if(bluetooth.isEnabled()){

String mydeviceaddress= bluetooth.getAddress();

String mydevicename= bluetooth.getName();

status= mydevicename+": "+ mydeviceaddress;

}

else

{

status="Bluetooth выключен";

}

 

Toast.makeText(this, status, Toast.LENGTH_LONG).show();

Если приложение имеет разрешение BLUETOOTH_ADMIN, вы можете изменить имя Bluetooth устройства с помощью метода

bluetooth.setName("AndroidCoder");

для отображения состояния адаптера служит метод BluetoothAdapter.getState(). Этот метод может возвращать одно из следующих значений:

STATE_TURNING_ON
STATE_ON
STATE_TURNING_OFF
STATE_OFF

Часто в целях экономии заряда батареи Bluetooth выключен по умолчанию. Следующих код создает сообщение, в котором информирует пользователя о состоянии адаптера:

String state= bluetooth.getState();

status= mydevicename+ ”: ”+ mydeviceaddress+": "+ state;

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: