Bluetooth

Bu dokümanda, Bluetooth, Bluetooth Yuva ve Bluetooth Düşük Enerji API'leri, Bluetooth ve Bluetooth Düşük Enerji cihazlarıyla iletişim kurar.

Bluetooth hakkında arka plan bilgisi için resmi Bluetooth özelliklerine bakın.

Manifest ile ilgili gereksinimler

Bluetooth kullanan Chrome Uygulamaları için bluetooth girişini manifest dosyasına ekleyin ve ve uygulamak istediğiniz profillerin, protokollerin veya hizmetlerin UUID'leri ile birlikte bunları soket ve/veya Düşük Enerji API'leriyle uygulamak istiyorsunuz.

Örneğin, bir yuva uygulaması için:

"bluetooth": {
  "uuids": [ "1105", "1106" ],
  "socket": true
}

Düşük Enerji uygulaması için de:

"bluetooth": {
  "uuids": [ "180D", "1809", "180F" ],
  "low_energy": true
}

Yalnızca adaptör durumuna erişmek, yakındaki cihazları keşfetmek ve cihazlarla ilgili temel bilgileri edinmek için Yalnızca girişin kendisi gereklidir:

"bluetooth": {}

Bağdaştırıcı bilgileri

Bağdaştırıcı durumunu alma

Bluetooth adaptörün durumunu öğrenmek için bluetooth.getAdapterState yöntemini kullanın:

chrome.bluetooth.getAdapterState(function(adapter) {
  console.log("Adapter " + adapter.address + ": " + adapter.name);
});

Bağdaştırıcı bildirimleri

Adaptör durumu her değiştiğinde bluetooth.onAdapterStateChanged etkinliği gönderilir. Bu Örneğin, adaptör radyosunun ne zaman açık veya kapalı olduğunu belirlemek için kullanılır.

var powered = false;
chrome.bluetooth.getAdapterState(function(adapter) {
  powered = adapter.powered;
});

chrome.bluetooth.onAdapterStateChanged.addListener(
  function(adapter) {
    if (adapter.powered != powered) {
      powered = adapter.powered;
      if (powered) {
        console.log("Adapter radio is on");
      } else {
        console.log("Adapter radio is off");
      }
    }
  });

Cihaz bilgileri

Bilinen cihazları listeleme

Bluetooth adaptörü tarafından bilinen cihazların listesini almak için bluetooth.getDevices öğesini kullanın. yöntem:

chrome.bluetooth.getDevices(function(devices) {
  for (var i = 0; i < devices.length; i++) {
    console.log(devices[i].address);
  }
});

Eşlenen cihazlar ve yakın zamanda keşfedilen cihazlar da dahil olmak üzere tüm cihazlar iade edilir. Bu durumda yeni cihazları keşfetmeye başlamak (bkz. Yakındaki cihazları keşfetme).

Cihaz bildirimleri alma

bluetooth.getDevices öğesini sürekli olarak çağırmak yerine bluetooth.onDeviceAdded, bluetooth.onDeviceChanged ve bluetooth.onDeviceRemoved bildirimleri almak için etkinlikler.

Bir cihaz adaptör tarafından her keşfedildiğinde veyabluetooth.onDeviceAdded bağdaştırıcıyla bağlantı kurduğundan emin olun:

chrome.bluetooth.onDeviceAdded.addListener(function(device) {
  console.log(device.address);
});

Bu etkinlik için işleyici eklenmesi, cihazların keşfedilmesini başlatmıyor (bkz. Yakındakileri keşfetme cihazlar).

Daha önce keşfedilen cihazların eşlenmesi de dahil olmak üzere cihazlarda yapılan değişiklikler bluetooth.onDeviceChanged etkinliği hakkında bilgi verilmiştir:

chrome.bluetooth.onDeviceChanged.addListener(function(device) {
  console.log(device.address);
});

Son olarak, bluetooth.onDeviceRemoved etkinliği veya keşfedilen cihaz yakın zamanda görülmemişse:

chrome.bluetooth.onDeviceRemoved.addListener(function(device) {
  console.log(device.address);
});

Yakındaki cihazlar keşfediliyor

Yakındaki cihazları bulmaya başlamak için bluetooth.startDiscovery yöntemini kullanın. Keşif, Bu nedenle, işiniz bittiğinde bluetooth.stopDiscovery dosyasını çağırmanız gerekir.

Uygulamanızın yakındaki cihazları keşfetmesi gerektiğinde bluetooth.startDiscovery'yi çağırmalısınız. Çağrıyı, bluetooth.AdapterState özelliğinin discovering özelliği üzerinde koşullu yapmayın. İlgili içeriği oluşturmak için kullanılan çağrısı, başka bir uygulama yakındaki cihazları keşfedse bile başarılı olur ve adaptörün, diğer uygulama durdurulduktan sonra da keşif yapmaya devam eder.

Yeni keşfedilen her cihazla ilgili bilgiler bluetooth.onDeviceAdded yöntemi kullanılarak alınır unutmayın. Yakın zamanda keşfedilmiş veya daha önce veya etkinlik gönderilmez. Bunun yerine bluetooth.getDevices öğesini çağırmanız ve e-posta ile bildirim almak için bluetooth.onDeviceChanged etkinliğini kullanın ve gerçekleşebilecek başka bir değişikliktir.

Örnek:

var device_names = {};
var updateDeviceName = function(device) {
  device_names[device.address] = device.name;
};
var removeDeviceName = function(device) {
  delete device_names[device.address];
}

// Add listeners to receive newly found devices and updates
// to the previously known devices.
chrome.bluetooth.onDeviceAdded.addListener(updateDeviceName);
chrome.bluetooth.onDeviceChanged.addListener(updateDeviceName);
chrome.bluetooth.onDeviceRemoved.addListener(removeDeviceName);

// With the listeners in place, get the list of devices found in
// previous discovery sessions, or any currently active ones,
// along with paired devices.
chrome.bluetooth.getDevices(function(devices) {
  for (var i = 0; i < devices.length; i++) {
    updateDeviceName(devices[i]);
  }
});

// Now begin the discovery process.
chrome.bluetooth.startDiscovery(function() {
  // Stop discovery after 30 seconds.
  setTimeout(function() {
    chrome.bluetooth.stopDiscovery(function() {});
  }, 30000);
});

Kullanıcı Bluetooth radyoyu kapatırsa tüm keşif oturumları sonlandırılır ve devam ettirilmez radyo açıldığında otomatik olarak. Bu, uygulamanız için önemliyse aşağıdakileri göz önünde bulundurmalısınız: bluetooth.onAdapterStateChanged etkinliğidir. discovering özelliği false olarak değişirse uygulamanızın devam ettirmek için bluetooth.startDiscovery öğesini tekrar çağırması gerekir. Dikkatli olun: keşif sürecinin yoğun bir kaynağıdır.

Cihazları tanımlama

Google for Work tarafından döndürülen cihazların tanımlanması için bluetooth.getDevices ve ilgili etkinlikler.

Cihaz, Bluetooth Cihaz Kimliği spesifikasyonunu destekliyorsa Söz konusu spesifikasyon ile tanımlanan alanları içeren Cihaz nesnesi. Örnek:

chrome.bluetooth.getDevices(function(devices) {
  for (var i = 0; i < devices.length; i++) {
    if (devices[0].vendorIdSource != undefined) {
      console.log(devices[0].address + ' = ' +
                  devices[0].vendorIdSource + ':' +
                  devices[0].vendorId.toString(16) + ':' +
                  devices[0].productId.toString(16) + ':' +
                  devices[0].deviceId.toString(16));
    }
  }
});

Cihaz kimliği spesifikasyonu genellikle belirli bir modelin tanımlanması ve hatta bu modelin düzeltilmesi için yeterlidir. bir tedarikçi olabilir. Böyle bir bilgi yoksa onun yerine konu hakkındaki bilgilere cihazın sınıfı veya türü (isteğe bağlı olarak address içindeki üretici önekiyle birlikte).

Çoğu Bluetooth cihazı Cihaz Sınıfı bilgilerini Ana Bant Atanan Numaralar dokümanına göz atın. Bu bit alanı, deviceClass içinde kullanılabilir

chrome.bluetooth.getDevices(function(devices) {
  for (var i = 0; i < devices.length; i++) {
    if (devices[0].vendorIdSource != undefined) {
      console.log(devices[0].address + ' = ' +
                  devices[0].deviceClass.toString(16));
    }
  }
});

Alanın ayrıştırılması karmaşık bir iş olabilir. Bu nedenle, en yaygın cihaz türlerinde Chrome bu işlemi sizin için yapar ve type alanını ayarlar. Bunun mümkün olmadığı veya gereksinimleriniz için yetersiz olduğu durumlarda, deviceClass öğesini kendiniz ayrıştırın.

chrome.bluetooth.getDevices(function(devices) {
  for (var i = 0; i < devices.length; i++) {
    if (devices[0].vendorIdSource != undefined) {
      console.log(devices[0].address + ' = ' + devices[0].type);
    }
  }
});

RFCOMM ve L2CAP'yi kullanma

Chrome Uygulamaları, RFCOMM veya L2CAP hizmetlerini destekleyen herhangi bir cihaza bağlanabilir. Buna şunlar dâhildir: Piyasadaki klasik Bluetooth cihazların çoğuna sahip.

Yuvaya bağlanılıyor

Bir cihazla bağlantı kurmak için üç şeye ihtiyacınız vardır. Bağlantı için bir yuva with bluetoothSocket.create kullanılarak oluşturulan; bağlanmak istediğiniz cihazın adresini, ve hizmetin UUID'si.

Bağlantıyı kurmadan önce bluetooth.getDevice veya cihaz keşif API'lerini kullanabilirsiniz.

Temel bağlantıyı kurmak için gerekli bilgiler. Buna, RFCOMM veya L2CAP protokolünün kullanılması gerekir ve hangi kanal veya PSM'nin olanak tanır.

Örnek:

var uuid = '1105';
var onConnectedCallback = function() {
  if (chrome.runtime.lastError) {
    console.log("Connection failed: " + chrome.runtime.lastError.message);
  } else {
    // Profile implementation here.
  }
};

chrome.bluetoothSocket.create(function(createInfo) {
  chrome.bluetoothSocket.connect(createInfo.socketId,
    device.address, uuid, onConnectedCallback);
});

Daha sonra bu cihaza veri (bluetoothSocket.send) gönderebilmek için socketId'de herkese açık kullanıcı adı tutun. soket.

Yuvadan alma ve sokete gönderme

Bir yuvadan veri alınırken ve sokete gönderirken ArrayBuffer nesne kullanılır. ArrayBuffers hakkında bilgi edinmek için JavaScript türünde diziler'i ve ArrayBuffer nasıl dönüştürülür? String ile arasında.

arrayBuffer ürününde sahip olduğunuz verileri göndermek için bluetoothSocket.send komutunu kullanın:

chrome.bluetoothSocket.send(socketId, arrayBuffer, function(bytes_sent) {
  if (chrome.runtime.lastError) {
    console.log("Send failed: " + chrome.runtime.lastError.message);
  } else {
    console.log("Sent " + bytes_sent + " bytes")
  }
})

Veri gönderme yönteminin aksine veriler, yalnızca etkinlik sırasında alınır. (bluetoothSocket.onReceive. Yuvalar duraklatılmadan oluşturulur (bkz. bluetoothSocket.setPaused) Bu nedenle, bu etkinliğin işleyicisi genellikle bluetoothSocket.create ve bluetoothSocket.connect ile bağlantı kurabilirsiniz.

chrome.bluetoothSocket.onRecieve.addListener(function(receiveInfo) {
  if (receiveInfo.socketId != socketId)
    return;
  // receiveInfo.data is an ArrayBuffer.
});

Yuva hataları alma ve bağlantı kesilmesi

Bağlantı kesme dahil yuva hatalarıyla ilgili bildirim almak için şuraya bir işleyici ekleyin: bluetoothSocket.onReceiveError etkinliğindey.

chrome.bluetoothSocket.onReceiveError.addListener(function(errorInfo) {
  // Cause is in errorInfo.error.
  console.log(errorInfo.errorMessage);
});

Priz bağlantısını kesme

Bağlantıyı kapatmak ve yuvanın bağlantısını kesmek için bluetoothSocket.disconnect bağlantısını kullanın.

chrome.bluetoothSocket.disconnect(socketId);

Yayıncılık hizmetleri

Chrome Uygulamaları, cihazlara giden bağlantılar yapmanın yanı sıra aşağıdaki gibi hizmetler de yayınlayabilir: RFCOMM veya L2CAP'yi destekleyen herhangi bir cihaz tarafından kullanılır.

Prizde dinleme

İki tür yayınlanmış hizmet desteklenir. RFCOMM en yaygın kullanılan türdür ve cihazlar ve profillerin çoğu:

var uuid = '1105';
chrome.bluetoothSocket.create(function(createInfo) {
  chrome.bluetoothSocket.listenUsingRfcomm(createInfo.socketId,
    uuid, onListenCallback);
});

Diğeri ise L2CAP'dir ve diğer cihaz türlerini ve donanım yazılımı gibi tedarikçiye özgü kullanımları kapsar. yükleniyor.

var uuid = '0b87367c-f188-47cd-bc20-a5f4f70973c6';
chrome.bluetoothSocket.create(function(createInfo) {
  chrome.bluetoothSocket.listenUsingL2cap(createInfo.socketId,
    uuid, onListenCallback);
});

Her iki durumda da belirli bir bileşeni ayırmak için isteğe bağlı bir bluetoothSocket.ListenOptions iletilebilir kanal veya PSM'dir. Geri çağırma, chrome.runtime.lastError boyunca hata olduğunu ve başarılı olduğunu belirtiyor aksi takdirde. Bağlantıları daha sonra kabul edebilmek için socketId'de bir herkese açık kullanıcı adı tutun (bluetoothSocket.onAccept) gibi bir alt veri girişi modelini kullanır.

İstemci bağlantıları kabul ediliyor

İstemci bağlantıları bluetoothSocket.onAccept etkinliğinde görüntülemek gerekir.

chrome.bluetoothSocket.onAccept.addListener(function(acceptInfo) {
  if (info.socketId != serverSocketId)
    return;

  // Say hello...
  chrome.bluetoothSocket.send(acceptInfo.clientSocketId,
    data, onSendCallback);

  // Accepted sockets are initially paused,
  // set the onReceive listener first.
  chrome.bluetoothSocket.onReceive.addListener(onReceive);
  chrome.bluetoothSocket.setPaused(false);
});

İstemci bağlantılarını kabul etmeyi durdur

İstemci bağlantılarını kabul etmeyi durdurmak ve hizmeti yayından kaldırmak için bluetoothSocket.disconnect'i kullanın.

chrome.bluetoothSocket.disconnect(serverSocketId);

Düşük Enerji özellikli cihazlarla etkileşim

Bluetooth Düşük Enerji veya (Bluetooth Smart), düşük gücü hedefleyen kablosuz bir teknolojidir tüketim. Bluetooth Düşük Enerji API'si, uygulamaların her türlü çalışmada merkezi rolü bir LE bağlantısı olabilir. Aşağıdaki bölümlerde nasıl keşfedeceğiniz, bağlanacağınız ve bağlantı kuracağınız Bluetooth Düşük Enerji çevre birimleriyle etkileşimde bulunun.

Çevre birimlerini keşfetme ve bunlara bağlanma

Geleneksel Bluetooth cihazlarda olduğu gibi LE çevre birimleri, açıklanan yöntemler kullanılarak keşfedilebilir. Yakındaki cihazları keşfetme konusuna bakın . Bir LE cihazı, veri paketleri göndererek kendini bulunabilir hale getirir adı verilen "Reklam Verileri" ve cihazın reklam modunda olduğu söyleniyor. Reklamcılık verileri cihazda kullanılabilen hizmetlerin UUID'lerini içerebilir. Varsa bu UUID'ler İlgili bluetooth.Device nesnesinin uuids özelliği kullanılarak erişilebilir.

Bir LE cihazı, keşfedildikten sonra bluetoothLowEnergy.connect çağrısı yapılarak bağlanabilir. sağlamalısınız:

chrome.bluetooth.onDeviceAdded.addListener(function(device) {
  var uuid = '0000180d-0000-1000-8000-00805f9b34fb';
  if (!device.uuids || device.uuids.indexOf(uuid) < 0)
    return;

  // The device has a service with the desired UUID.
  chrome.bluetoothLowEnergy.connect(device.address, function () {
    if (chrome.runtime.lastError) {
      console.log('Failed to connect: ' + chrome.runtime.lastError.message);
      return;
    }

    // Connected! Do stuff...
    ...
  });
});

Bağlandıktan sonra, ilgili bluetooth.Device nesnesinin connected özelliği true değerine sahiptir. bluetoothLowEnergy.connect çağrısı yapıldığında, fiziksel bağlantıdaki uygulamadır. Cihazla fiziksel bir bağlantı olabilir bluetoothLowEnergy.connect çağrısı yapmadan (örneğin, başka bir uygulama nedeniyle) İçinde Bu durumda, uygulamanız cihazın hizmetleriyle etkileşim kurmaya devam edebilse de başka bir uygulamanınbluetoothLowEnergy.connect fiziksel bağlantı.

Uygulamanızın artık bağlanmasına gerek kalmadığında uygulama, bluetoothLowEnergy.disconnect aranıyor:

chrome.bluetoothLowEnergy.disconnect(deviceAddress);

Cihazın fiziksel bağlantısını kaldırmak gerekmez, çünkü bağlantıda başka bağlantılar tüm uygulamaları kapsamaktadır. Bazen cihaz uygulamanın kontrolü dışındaki nedenlerle (ör. cihazın kaybolduğunda veya işletim sisteminin yardımcı programları aracılığıyla kullanıcı tarafından açıkça bağlantısı kesildiğinde). Değişikliklerle ilgili bildirim almak için uygulamanızda bluetooth.onDeviceChanged etkinliğini gözlemlemesi gerekir bağlantıyı yeniden kurun ve gerekirse yeniden bağlanın.

Bağlandıktan sonra Chrome'u çalıştıran cihaz merkezi rol olarak adlandırılan uzak cihazın çevre birimi rolüne sahip olduğu söylenir. Bu noktada uygulamanız, aşağıdaki bölümde açıklanan yöntemleri kullanarak cihazdaki hizmetlerle değiştirin. Not: API'ler şu anda LE çevre birimi olarak çalışmayı desteklememektedir; uygulamaları yalnızca merkezi rolü yürütebilir.

Hizmetler, Özellikler ve Tanımlayıcılar

Bluetooth Düşük Enerji, Özellik Protokolü adı verilen basit bir istek-yanıt protokolüne dayanır (ATT) olarak değiştirin. Merkezi bir cihaz, ATT kullanarak çevre birimi cihazı üzerindeki sözde özelliklerle etkileşime geçer Genel Özellik Profili (GATT) adı verilen özel bir Bluetooth profiline uygun olarak. GATT şu üst düzey kavramları tanımlar:

  • Hizmet: GATT hizmeti, belirli bir işlemi gerçekleştirmek için veri koleksiyonunu ve ilişkili davranışları temsil eder bir işleve sahip olması. Örneğin, bir nabız monitörü genellikle en az bir "Nabız Hizmeti". GATT hizmetiyle ilgili bilgiler bluetoothLowEnergy.Service nesnesini tanımlayın.
  • Özellik: GATT özelliği, bir GATT hizmetini oluşturmak için kullanılan temel bir veri öğesidir. bir değer içeren ve bu değere nasıl erişilebileceğini tanımlayan özellikleri içerir. Örneğin, "Nabız Hizmeti" "Nabız Ölçümü"ne sahip elde etmek için kullanılan Kullanıcının nabız değeri. GATT özelliklerine ilişkin bilgiler bir bluetoothLowEnergy.Characteristic nesnesi hakkında daha fazla bilgi edinin.
  • Açıklayıcı: GATT'nin özellik tanımlayıcısı, bir özellikle ilgili daha fazla bilgi içerir. GATT özelliklerini tanımlayan bilgiler bluetoothLowEnergy.Descriptor nesnesini tanımlayın.

Bluetooth Düşük Enerji API'si, uygulamaların bir cihazın enerji kaynağıyla ilgili bilgileri bulmasını sağlar. hizmetleri, özellikleri ve tanımlayıcıları bluetoothLowEnergy.getServices bluetoothLowEnergy.getCharacteristics ve bluetoothLowEnergy.getDescriptors. Uygulamalar şunları yapabilir: uuid alanlarını istenen GATT UUID'si:

chrome.bluetoothLowEnergy.getServices(deviceAddress, function(services) {
  ...
  for (var i = 0; i < services.length; i++) {
    if (services[i].uuid == HEART_RATE_SERVICE_UUID) {
      heartRateService = services[i];
      break;
    }
  }
  ...
});

API üzerinden erişilebilen her hizmet, özellik ve tanımlayıcıya benzersiz bir atanır instanceId alanı kullanılarak elde edilebilecek örnek tanımlayıcısıdır. Bu örnek kimliği bir GATT nesnesini tanımlamak ve nesne üzerinde belirli işlemler gerçekleştirmek için kullanılır:

chrome.bluetoothLowEnergy.getCharacteristics(heartRateService.instanceId,
                                             function(chracteristics) {
  ...
  for (var i = 0; i < characteristics.length; i++) {
    if (characteristics[i].uuid == HEART_RATE_MEASUREMENT_UUID) {
      measurementChar = characteristics[i];
      break;
    }
  }
  ...
  chrome.bluetoothLowEnergy.getDescriptors(measurementChar.instanceId,
                                           function(descriptors) {
    ...
  });
});

Hizmet etkinlikleri

Bir cihaz bağlandıktan sonra Chrome cihazın hizmetlerini keşfeder. Hizmetler keşfedildikçe ve durumunda, uygulama bluetoothLowEnergy.onServiceAdded ve bluetoothLowEnergy.onServiceRemoved etkinlikleri:

  var initializeService = function(service) {
    if (!service) {
      console.log('No service selected!');
      // Reset UI, etc.
      ...
      return;
    }

    myService = service;

    // Get all the characteristics and descriptors and bootstrap the app.
    ...
  };

  chrome.bluetoothLowEnergy.onServiceAdded.addListener(function(service) {
    if (service.uuid == MY_SERVICE_UUID)
      initializeService(service);
  });

  chrome.bluetoothLowEnergy.onServiceRemoved.addListener(function(service) {
    if (service.instanceId == myService.instanceId)
      initializeService(null);
  });

Chrome, bir hizmetin tüm özelliklerini ve tanımlayıcılarını eşzamansız olarak keşfeder ve Keşif tamamlandıktan sonra bluetoothLowEnergy.onServiceAdded etkinliği. Bir çevre birimi sonlandırılırsa Chrome, ilgili tüm hizmetleri kaldırır ve bluetoothLowEnergy.onServiceRemoved etkinliği için bir değer ifade eder.

Bazı çevre birimleri kendi hizmetlerinde değişiklik yapabilir.Ör. hizmet özellikleri değişebilir hizmet tamamen eklenebilir ve kaldırılabilir. Chrome, bluetoothLowEnergy.onServiceChanged, bluetoothLowEnergy.onServiceAdded ve bluetoothLowEnergy.onServiceRemoved etkinliği

  chrome.bluetoothLowEnergy.onServiceChanged.addListener(function(service) {
    if (service.instanceId != myService.instanceId)
      return;

    updateMyService(service);
  });

Bir özelliğin değerini okuma ve yazma

GATT özelliği, hizmetinin bir yönünü kodlar. Merkezi bir uygulama aşağıdakileri okur, değiştirir ve üzerinde işlem yapar bir özelliğin değeri üzerinde çalışarak çevre biriminin hizmetinin durumu. Özelliğin değeri, bir bayt dizisidir ve anlamı, değeri tanımlayan üst düzey belirtim tarafından bir özellik olabilir. Örneğin, Nabız Ölçümü özelliğinin değeri Vücut Sensörü, kullanıcının nabzını ve yakılan toplam kalori miktarını kodlar. Konum özelliği, nabız sensörünün vücudun neresinde giyilmesi gerektiğini kodlar.

Chrome, bir öğenin değerini okumak için bluetoothLowEnergy.readCharacteristicValue yöntemini sağlar özellik:

chrome.bluetoothLowEnergy.readCharacteristicValue(chrc.instanceId,
                                                  function(result) {
  if (chrome.runtime.lastError) {
    console.log('Failed to read value: ' + chrome.runtime.lastError.message);
    return;
  }

  var bytes = new Uint8Array(result.value);

  // Do stuff with the bytes.
  ...
});

Bazı özellikler, özellikle de yazı yazmanın "Kontrol Noktaları" olarak davranan değerin yan etkileri var. Örneğin, Nabız Kontrol Noktası özelliği, bir nabız sensörüne, yakılan toplam kaloriyi sıfırlamasını söyler ve yalnızca yazma işlemlerini destekler. Alıcı: Chrome bunun için bluetoothLowEnergy.writeCharacteristicValue yöntemini sağlar:

var myBytes = new Uint8Array([ ... ]);
chrome.bluetoothLowEnergy.writeCharacteristicValue(chrc.instanceId,
                                                   myBytes.buffer,
                                                   function() {
  if (chrome.runtime.lastError) {
    console.log('Failed to write value: ' +
                chrome.runtime.lastError.message);
    return;
  }

  // Value is written now.
});

Karakteristik tanımlayıcılar da aynı şekilde davranır ve okunabilir ve/veya yazılabilir. Chrome, bluetoothLowEnergy.readDescriptorValue ve bluetoothLowEnergy.writeDescriptorValue yöntemini kullanarak bir açıklayıcının değerini okuma ve yazma.

Bir uygulama, bir özelliğin okuma veya yazma işlemlerini destekleyip desteklemediğini kontrol etmek için properties öğesini kontrol edebilir. bluetoothLowEnergy.Characteristic nesnesinin alanı. Bu alan şunları içermez: veya bir değere erişmek için gereken güvenlik şartları hakkında bilgi verir; genel olarak desteklediğini çözmektir.

Değer bildirimlerini işleme

Bazı özellikler, öğelerin değerlerini bildirimler veya göstergeler aracılığıyla anlaşılır hale getirir. Örneğin Nabız Ölçümü özelliği okunabilir veya yazılabilir değildir ancak güncel değere göre ayarlayın. Uygulamalar, şunu kullanarak bu bildirimleri dinleyebilir: bluetoothLowEnergy.onCharacteristicValueChanged etkinliği için gönderilen etkinliktir.

  chrome.bluetoothLowEnergy.onCharacteristicValueChanged.addListener(
      function(chrc) {
    if (chrc.instanceId != myCharId)
      return;

    var bytes = new Uint8Array(chrc.value);

    // Do stuff with the bytes.
    ...
  });

Bir özellik bildirimleri/göstergeleri desteklese bile, varsayılan olarak etkin değildir. Bu uygulama bluetoothLowEnergy.startCharacteristicNotifications öğesini çağırır ve Bu özelliği almayı başlatmak veya durdurmak için bluetoothLowEnergy.stopCharacteristicNotifications yöntemi bluetoothLowEnergy.onCharacteristicValueChanged etkinliği.

  // Start receiving characteristic value notifications.
  var notifying = false;
  chrome.bluetoothLowEnergy.startCharacteristicNotifications(chrc.instanceId,
                                                             function() {
    if (chrome.runtime.lastError) {
      console.log('Failed to enable notifications: ' +
                  chrome.runtime.lastError.message);
      return;
    }

    notifying = true;
  });

  ...

  // No longer interested in notifications from this characteristic.
  if (notifying) {
    chrome.bluetoothLowEnergy.stopCharacteristicNotifications(
        chrc.instanceId);
  }

Bildirimler başlatıldığında uygulama, bluetoothLowEnergy.onCharacteristicValueChanged bildirimi veya göstergeniz olduğunda alınan sonuçlardır. Bu özellik okumaları destekliyorsa bu etkinlik de bluetoothLowEnergy.readCharacteristicValue başarılı çağrısından sonra gönderilir. Bu, uygulamalara izin verir Okuma isteği ve bildirimler aracılığıyla tetiklenen bir değer güncellemesinin kontrol akışını birleştirmek için:

  chrome.bluetoothLowEnergy.onCharacteristicValueChanged.addListener(
      function(chrc) {
    // Process the value.
    ...
  });

  chrome.bluetoothLowEnergy.startCharacteristicNotifications(chrc.instanceId,
                                                             function() {
    // Notifications started. Read the initial value.
    chrome.bluetoothLowEnergy.readCharacteristicValue(chrc.instanceId,
                                                      function(result) {
      ...
      // No need to do anything here since onCharacteristicValueChanged
      // will handle it.
    });
  });

Bir özellik, bildirimleri destekliyorsa properties alanı "notify" veya "indicate" mülkü.

NOT: Bir özellik, bildirimleri/göstergeleri destekliyorsa "İstemci Karakteristik Yapılandırma" açıklayıcıya dokunarak bildirimleri etkinleştirin/devre dışı bırakın. Chrome izin vermez uygulamaların bu tanımlayıcıya yazmasını sağlar. Uygulamalar bunun yerine bluetoothLowEnergy.startCharacteristicNotifications ve bluetoothLowEnergy.stopCharacteristicNotifications yöntemlerini kontrol edin.