1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gumpyang-cordova-plugin-ble-background-central

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Bluetooth Low Energy (BLE) Central Plugin для Apache Cordova

Этот плагин позволяет осуществлять коммуникацию между телефоном и периферийными устройствами Bluetooth Low Energy (BLE).

Плагин предоставляет простой JavaScript API для iOS и Android.

  • Сканирование периферийных устройств.
  • Подключение к периферийному устройству.
  • Чтение значения характеристики.
  • Запись нового значения в характеристику.
  • Получение уведомления об изменении значения характеристики.

При сканировании периферийных устройств возвращается рекламная информация. При подключении к периферийному устройству возвращаются данные о службе, характеристике и свойстве. Весь доступ осуществляется через служебные и характеристические UUID. Плагин управляет дескрипторами внутри.

Поддерживаются одновременные подключения к нескольким периферийным устройствам.

Примеры использования этого плагина можно найти на странице https://github.com/don/cordova-plugin-ble-central/tree/master/examples.

Поддерживаемые платформы

  • iOS.
  • Android (4.3 или выше).

Установка

Cordova

$ cordova plugin add cordova-plugin-ble-central

PhoneGap

$ phonegap plugin add cordova-plugin-ble-central

PhoneGap Build

Отредактируйте config.xml, чтобы установить плагин для PhoneGap Build.

<gap:plugin name="cordova-plugin-ble-central" source="npm" />
<preference name="phonegap-version" value="cli-6.1.0" />

Приложение PhoneGap Developer

Этот плагин включён в версии приложения PhoneGap Developer App для iOS и Android.

Обратите внимание, что идентификатор этого плагина изменился с com.megster.cordova.ble на cordova-plugin-ble-central в рамках миграции с репозитория плагинов Cordova на npm.

iOS 10

Для iOS 10 приложения будут аварийно завершать работу, если они не включают описание использования для типов данных, к которым они обращаются. Для Bluetooth необходимо определить NSBluetoothPeripheralUsageDescription.

Это можно сделать при установке плагина с использованием переменной BLUETOOTH_USAGE_DESCRIPTION.

$ cordova plugin add cordova-plugin-ble-central --variable BLUETOOTH_USAGE_DESCRIPTION="Ваше описание здесь"

API

Методы

scan

Сканируйте и обнаруживайте периферийные устройства BLE.

ble.scan(services, seconds, success, failure);

Описание

Функция scan сканирует на наличие устройств BLE. Обратный вызов успеха вызывается каждый раз, когда обнаруживается периферийное устройство. Сканирование автоматически останавливается после указанного количества секунд.

{
    "name": "TI SensorTag",
    "id": "BD922605-1B07-4D55-8D09-B66653E51BBA",
    "rssi": -79,
    "advertising": /* ArrayBuffer или map */
}

Формат рекламной информации зависит от вашей платформы. Дополнительную информацию см. в разделе Рекламные данные.

Параметры

  • services: Список служб для обнаружения или [] для поиска всех устройств.
  • seconds: Количество секунд для выполнения обнаружения.
  • success: Функция обратного вызова успеха, которая вызывается при каждом обнаруженном устройстве.
  • failure: Функция обратного вызова ошибки, вызываемая при возникновении ошибки. [необязательно]

Быстрый пример

ble.scan([], 5, function(device) {
    console.log(JSON.stringify(device));
}, failure); **Подключение (connect)**

Подключение к периферийному устройству.

ble.connect(device_id, connectSuccess, connectFailure);

Описание

Функция connect подключает к BLE периферийному устройству. Обратный вызов выполняется длительное время. При успешном подключении вызывается функция success. Информация о службе и характеристиках будет передана в функцию обратного вызова в объекте peripheral. Функция failure вызывается при сбое подключения или позже, если периферийное устройство отключается. В функцию failure передаётся объект периферийного устройства.

Примечание: обратный вызов сбоя подключения будет вызван, если периферийное устройство отключится.

Параметры

— device_id: UUID или MAC-адрес периферийного устройства; — connectSuccess:

Сканирование (startScan)

Сканирование на наличие периферийных устройств BLE. Сканирование продолжается до тех пор, пока не будет вызвана функция stopScan.

callback is called each time a peripheral is discovered. Scanning will continue until stopScan is called.

{
    "name": "TI SensorTag",
    "id": "BD922605-1B07-4D55-8D09-B66653E51BBA",
    "rssi": -79,
    "advertising": /* ArrayBuffer or map */
}

Advertising information format varies depending on your platform. See Advertising Data for more information.

Параметры

— services: список служб для обнаружения или [] для поиска всех устройств; — success: функция обратного вызова успеха, которая вызывается для каждого обнаруженного устройства; — failure: функция обратного вызова ошибки, вызываемая при возникновении ошибки. [Необязательно]

Быстрый пример

ble.startScan([], function(device) { console.log(JSON.stringify(device)); }, failure);

setTimeout(ble.stopScan, 5000, function() { console.log("Scan complete"); }, function() { console.log("stopScan failed"); } );

startScanWithOptions

Сканируйте и обнаруживайте периферийные устройства BLE, задавая параметры сканирования.

ble.startScanWithOptions(services, options, success, failure);

Описание

Функция startScanWithOptions сканирует на наличие устройств BLE. Она работает аналогично функции startScan, но позволяет указать дополнительные параметры (например, разрешить дублирование отчётов об устройствах). Функция обратного вызова success вызывается каждый раз при обнаружении периферийного устройства. Сканирование будет продолжаться до тех пор, пока не будет вызвана функция stopScan.

{
    "name": "TI SensorTag",
    "id": "BD922605-1B07-4D55-8D09-B66653E51BBA",
    "rssi": -79,
    "advertising": /* ArrayBuffer or map */
}

Advertising information format varies depending on your platform. See Advertising Data for more information.

Параметры

— services: список служб для обнаружения или [] для поиска всех устройств; — options: объект, определяющий набор пар имя-значение. В настоящее время допустимыми параметрами являются: — reportDuplicates_: true, если следует сообщать о повторяющихся устройствах, false (по умолчанию), если устройства должны сообщаться только один раз. [Необязательно]; — success: функция обратного вызова успеха, которая вызывается для каждого обнаруженного устройства; — failure: функция обратного вызова ошибки, вызываемая при возникновении ошибки. [Необязательно].

Быстрый пример

ble.startScan([], { reportDuplicates: true } function(device) { console.log(JSON.stringify(device)); }, failure);

setTimeout(ble.stopScan, 5000, function() { console.log("Scan complete"); }, function() { console.log("stopScan failed"); } );

stopScan

Остановите сканирование на наличие периферийных устройств BLE.

ble.stopScan(success, failure);

Описание

Функция stopScan останавливает сканирование на наличие устройств BLE.

Параметры

— success: функция обратного вызова успеха, вызываемая после остановки сканирования. [Необязательно]; — failure: функция обратного вызова ошибки, вызываемая при возникновении ошибки. [Необязательно].

Быстрый пример

ble.startScan([], function(device) { console.log(JSON.stringify(device)); }, failure);

setTimeout(ble.stopScan, 5000, function() { console.log("Scan complete"); }, function() { console.log("stopScan failed"); } );

/* Alternate syntax setTimeout(function() { ble.stopScan( function() { console.log("Scan complete"); }, function() { console.log("stopScan failed"); } ); }, 5000); */

connect

Подключайтесь к периферийному устройству.

ble.connect(device_id, connectSuccess, connectFailure);

Описание

Функция connect подключается к периферийному устройству BLE. Обратный вызов является длительным. Успех будет вызван при успешном подключении. Информация о службах и характеристиках будет передаваться в функцию обратного вызова в периферийном объекте. Ошибка вызывается, если подключение не удаётся, или позже, если периферийное устройство отключается. Объект периферийного устройства передаётся в функцию сбоя.

Примечание: обратный вызов сбоя подключения будет вызываться, если периферийное устройство отключится. Функция обратного вызова при успешном подключении, которая вызывается при установлении соединения.

connectFailure: функция обратного вызова ошибки, вызываемая при возникновении ошибки или разрыве соединения.

Отключение (disconnect)

Отключает выбранное устройство.

ble.disconnect(device_id, [success], [failure]);

Описание

Функция disconnect отключает выбранное устройство.

Параметры

  • device_id: UUID или MAC-адрес периферийного устройства.
  • success: функция обратного вызова успеха, вызываемая при успешном соединении. [Необязательно]
  • failure: функция обратного вызова ошибки, вызываемая при ошибке. [Необязательно]

Чтение (read)

Считывает значение характеристики.

ble.read(device_id, service_uuid, characteristic_uuid, success, failure);

Описание

Функция read считывает значение характеристики.

Исходные данные передаются из нативного кода в обратный вызов как ArrayBuffer (#typed-arrays).

Параметры

  • device_id: UUID или MAC-адрес периферийного устройства.
  • service_uuid: UUID службы BLE.
  • characteristic_uuid: UUID характеристики BLE.
  • success: функция обратного вызова успеха, вызываемая при успешном соединении. [Необязательно]
  • failure: функция обратного вызова ошибки, вызываемая при ошибке. [Необязательно]

Запись (write)

Записывает данные в характеристику.

ble.write(device_id, service_uuid, characteristic_uuid, data, success, failure);

Описание

Функция write записывает данные в характеристику.

Параметры

  • device_id: UUID или MAC-адрес периферийного устройства.
  • service_uuid: UUID службы BLE.
  • characteristic_uuid: UUID характеристики BLE.
  • data: двоичные данные, используйте ArrayBuffer (#typed-arrays).
  • success: функция обратного вызова успеха, вызываемая при успешном соединении. [Необязательно]
  • failure: функция обратного вызова ошибки, вызываемая при ошибке. [Необязательно]

Быстрый пример

Используйте ArrayBuffer (#typed-arrays) при записи данных.

// отправляем 1 байт для включения света
var data = new Uint8Array(1);
data[0] = 1;
ble.write(device_id, "FF10", "FF11", data.buffer, success, failure);

// отправляем значение из 3 байтов с цветом RGB
var data = new Uint8Array(3);
data[0] = 0xFF; // красный
data[1] = 0x00; // зелёный
data[2] = 0xFF; // синий
ble.write(device_id, "ccc0", "ccc1", data.buffer, success, failure);

// отправляем 32-битное целое число
var data = new Uint32Array(1);
data[0] = counterInput.value;
ble.write(device_id, SERVICE, CHARACTERISTIC, data.buffer, success, failure);

writeWithoutResponse

Записывает данные в характеристику без подтверждения от периферийного устройства.

ble.writeWithoutResponse(device_id, service_uuid, characteristic_uuid, data, success, failure);

Описание

Функция writeWithoutResponse записывает данные в характеристику без ответа от периферийного устройства. Вы не будете уведомлены, если запись завершится неудачно в стеке BLE. Функция обратного вызова успеха будет вызвана после успешной записи характеристики.

Параметры

  • device_id: UUID или MAC-адрес периферийного устройства.
  • service_uuid: UUID службы BLE.
  • characteristic_uuid: UUID характеристики BLE.
  • data: двоичные данные, используйте ArrayBuffer (#typed-arrays).
  • success: функция обратного вызова успеха, вызываемая при успешном соединении. [Необязательно]
  • failure: функция обратного вызова ошибки, вызываемая при ошибке. [Необязательно]

startNotification

Регистрирует уведомления при изменении значения характеристики.

ble.startNotification(device_id, service_uuid, characteristic_uuid, success, failure);

Описание

Функция startNotification регистрирует обратный вызов, который вызывается каждый раз, когда изменяется значение характеристики. Этот метод обрабатывает как уведомления, так и индикации. Функция обратного вызова успеха вызывается несколько раз.

Исходные данные передаются из нативного кода в успешный обратный вызов как ArrayBuffer (#typed-arrays).

См. раздел «Фоновые уведомления на iOS» (#background-notifications-on-ios).

Параметры

  • device_id: UUID или MAC-адрес периферийного устройства. characteristic_uuid: UUID характеристики BLE.

  • success: функция обратного вызова Success вызывается каждый раз, когда происходит уведомление.

  • failure: функция обратного вызова Failure вызывается при возникновении ошибки. [необязательно]

Быстрый пример

var onData = function(buffer) {
    // Декодируем ArrayBuffer в типизированный массив на основе ожидаемых данных
    var data = new Uint8Array(buffer);
    alert("Состояние кнопки изменилось на " + data[0]);
}

ble.startNotification(device_id, "FFE0", "FFE1", onData, failure);

stopNotification

Прекратить получение уведомлений при изменении значения характеристики.

ble.stopNotification(device_id, service_uuid, characteristic_uuid, success, failure);

Описание

Функция stopNotification останавливает ранее зарегистрированный обратный вызов уведомления.

Параметры

  • device_id: UUID или MAC-адрес периферийного устройства.
  • service_uuid: UUID службы BLE.
  • characteristic_uuid: UUID характеристики BLE.
  • success: Функция обратного вызова success вызывается, когда уведомление удаляется. [необязательно].
  • failure: Функция обратного вызова failure вызывается при возникновении ошибки. [необязательно].

isConnected

Сообщает о состоянии подключения.

ble.isConnected(device_id, success, failure);

Описание

Функция isConnected вызывает функцию обратного вызова success, когда периферийное устройство подключено, и функцию обратного вызова failure, когда не подключено.

Параметры

  • device_id: UUID или MAC-адрес периферийного устройства.
  • success: Функция обратного вызова success вызывается с логическим значением для статуса подключения.
  • failure: Функция обратного вызова failure вызывается при возникновении ошибки. [необязательно].

Быстрый пример

ble.isConnected(
    'FFCA0B09-CB1D-4DC0-A1EF-31AFD3EDFB53',
    function() {
        console.log("Периферийное устройство подключено");
    },
    function() {
        console.log("Периферийное устройство *не* подключено");
    }
);

isEnabled

Сообщает, включён ли Bluetooth.

ble.isEnabled(success, failure);

Описание

Функция isEnabled вызывает функцию обратного вызова success, если Bluetooth включён, и функцию обратного вызова failure, если Bluetooth не включён.

Параметры

  • success: Функция обратного вызова success вызывается, когда Bluetooth включён.
  • failure: Функция обратного вызова failure вызывается, когда Bluetooth отключён.

Быстрый пример

ble.isEnabled(
    function() {
        console.log("Bluetooth включён");
    },
    function() {
        console.log("Bluetooth *не* включён");
    }
);

startStateNotifications

Регистрирует уведомления об изменении состояния Bluetooth на устройстве.

ble.startStateNotifications(success, failure);

Описание

Функция startStateNotifications вызывает функцию обратного вызова success при включении или отключении Bluetooth на устройстве.

States

  • «on»
  • «off»
  • «turningOn» (только Android)
  • «turningOff» (только Android)
  • «unknown» (только iOS)
  • «resetting» (только iOS)
  • «unsupported» (только iOS)
  • «unauthorized» (только iOS).

Параметры

  • success: Функция обратного вызова success вызывается со строкой для состояния Bluetooth.
  • failure: Функция обратного вызова failure вызывается при возникновении ошибки. [необязательно].

Быстрый пример

ble.startStateNotifications(
    function(state) {
        console.log("Bluetooth находится в состоянии " + state);
    }
);

stopStateNotifications

Останавливает уведомления о состоянии.

ble.startStateNotifications(success, failure);

Описание

Функция stopStateNotifications вызывает функцию обратного вызова success после остановки уведомлений о состоянии Bluetooth.

showBluetoothSettings

Показывает настройки Bluetooth на устройстве.

ble.showBluetoothSettings(success, failure);

Описание

Функция showBluetoothSettings открывает настройки Bluetooth для операционных систем.

iOS

showBluetoothSettings не поддерживается на iOS.

Параметры

  • success: Функция обратного вызова [необязательно].
  • failure: Функция обратного вызова, вызываемая при возникновении ошибки. [необязательно].

Быстрый пример

ble.showBluetoothSettings();

enable Платформы в будущих версиях. Если у вас есть идеи, пожалуйста, свяжитесь со мной.

Android

{
    "name": "demo",
    "id": "00:1A:7D:DA:71:13",
    "advertising": ArrayBuffer,
    "rssi": -37
}

Преобразуйте рекламную информацию в Uint8Array для обработки. var adData = new Uint8Array(peripheral.advertising)

iOS

Обратите внимание, что iOS использует строковое значение констант для ключей извлечения данных рекламы Advertisement Data Retrieval Keys. Вероятно, это изменится в будущем.

{
    "name": "demo",
    "id": "D8479A4F-7517-BCD3-91B5-3302B2F81802",
    "advertising": {
        "kCBAdvDataChannel": 37,
        "kCBAdvDataServiceData": {
            "FED8": {
                "byteLength": 7 // данные не показаны
            }
        },
        "kCBAdvDataLocalName": "demo",
        "kCBAdvDataServiceUUIDs": ["FED8"],
        "kCBAdvDataManufacturerData": {
            "byteLength": 7  // данные не показаны
        },
        "kCBAdvDataTxPowerLevel": 32,
        "kCBAdvDataIsConnectable": true
    },
    "rssi": -53
}

Типизированные массивы

Этот плагин использует типизированные массивы или ArrayBuffers для отправки и получения данных.

Это означает, что вам необходимо преобразовать свои данные в ArrayBuffers перед отправкой и из ArrayBuffers при получении.

// ASCII только
function stringToBytes(string) {
   var array = new Uint8Array(string.length);
   for (var i = 0, l = string.length; i < l; i++) {
       array[i] = string.charCodeAt(i);
    }
    return array.buffer;
}

// ASCII only
function bytesToString(buffer) {
    return String.fromCharCode.apply(null, new Uint8Array(buffer));
}

Вы можете прочитать больше о типизированных массивах в этих статьях на MDN и HTML5 Rocks.

UUID

UUID всегда являются строками, а не числами. Некоторые 16-битные UUID, такие как '2220', выглядят как целые числа, но это не так. (Целое число 2220 равно 0x8AC в шестнадцатеричном формате.) Это не проблема с 128-битными UUID, поскольку они выглядят как строки 82b9e6e1-593a-456f-be9b-9215160ebcac. Все 16-битные UUID также должны передаваться методам в виде строк.

# Фоновое сканирование и уведомления на iOS

Приложения для Android будут продолжать получать уведомления, пока приложение находится в фоновом режиме.

Приложениям для iOS требуется дополнительная настройка, чтобы разрешить работу Bluetooth в фоновом режиме.

Установите плагин cordova-custom-config.

cordova plugin add cordova-custom-config

Добавьте новый раздел в config.xml

<platform name="ios">
    <config-file parent="UIBackgroundModes" target="*-Info.plist">
        <array>
            <string>bluetooth-central</string>
        </array>
    </config-file>
</platform>

См. пример проекта ble-background для получения более подробной информации.

Тестирование плагина

Для тестов требуется Cordova Plugin Test Framework.

Создайте новый проект

git clone https://github.com/don/cordova-plugin-ble-central
cordova create ble-test com.example.ble.test BLETest
cd ble-test
cordova platform add android
cordova plugin add ../cordova-plugin-ble-central
cordova plugin add ../cordova-plugin-ble-central/tests
cordova plugin add cordova-plugin-test-framework

Измените стартовую страницу в config.xml

<content src="cdvtests/index.html" />

Запустите приложение на своём телефоне

cordova run android --device

Лицензия

Apache 2.0

Обратная связь

Попробуйте код. Если вы обнаружите проблему или отсутствующую функцию, создайте задачу или запрос на вытягивание.

Другие плагины Bluetooth

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

На основе исходного кода попытайтесь выполнить сканирование Bluetooth в фоновом режиме. Расширить Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/gumpyang-cordova-plugin-ble-background-central.git
git@gitlife.ru:oschina-mirror/gumpyang-cordova-plugin-ble-background-central.git
oschina-mirror
gumpyang-cordova-plugin-ble-background-central
gumpyang-cordova-plugin-ble-background-central
master