Android, merkezi rolde Bluetooth Düşük Enerji (BDE) için yerleşik platform desteği sağlar ve uygulamaların cihazları keşfetmek, hizmet sorgulamak ve bilgi aktarmak için kullanabileceği API'ler sunar.
Yaygın kullanım alanları şunlardır:
- Yakındaki cihazlar arasında az miktarda veri aktarımı
- Kullanıcılara mevcut konumlarına göre özelleştirilmiş bir deneyim sunmak için yakınlık sensörleriyle etkileşimde bulunma.
Klasik Bluetooth'un aksine BDE, önemli ölçüde daha düşük güç tüketimi için tasarlanmıştır. Bu sayede uygulamalar, yakınlık sensörleri, nabız ölçerler ve fitness cihazları gibi daha katı güç gereksinimleri olan BLE cihazlarla iletişim kurabilir.
Dikkat: Kullanıcı, BLE'yi kullanarak cihazını başka bir cihazla eşlediğinde, iki cihaz arasında paylaşılan veriler kullanıcının cihazındaki tüm uygulamalar tarafından erişilebilir.
Bu nedenle, uygulamanız hassas verileri yakalarsa bu verilerin gizliliğini korumak için uygulama katmanı güvenliğini uygulamanız gerekir.
Temel bilgiler
BLE özellikli cihazların birbirleriyle veri aktarabilmesi için öncelikle bir iletişim kanalı oluşturmaları gerekir. Bluetooth LE API'lerinin kullanılması için manifest dosyanızda çeşitli izinleri beyan etmeniz gerekir. Uygulamanız Bluetooth kullanma iznine sahip olduktan sonra BluetoothAdapter
erişmesi ve cihazda Bluetooth'un kullanılıp kullanılamadığını belirlemesi gerekir. Bluetooth kullanılabiliyorsa cihaz yakındaki BLE cihazları tarar.
Bir cihaz bulunduğunda BDE cihazındaki GATT sunucusuna bağlanarak BDE cihazının özellikleri keşfedilir.
Bağlantı kurulduktan sonra, mevcut hizmetlere ve özelliklere bağlı olarak veriler bağlı cihazla aktarılabilir.
Anahtar terimler ve kavramlar
Aşağıda, önemli BDE terimleri ve kavramlarının bir özeti verilmiştir:
- Genel Özellik Profili (GATT)
- GATT profili, BDE bağlantısı üzerinden "özellikler" olarak bilinen kısa veri parçalarını gönderip almaya yönelik genel bir spesifikasyondur. Mevcut tüm BLE uygulama profilleri, GATT'yi temel almaktadır. Daha fazla bilgi edinmek için GitHub'daki Android BluetoothLeGatt örneğini inceleyin.
- Profiller
- Bluetooth SIG, BLE cihazlar için birçok profil tanımlar. Profil, bir cihazın belirli bir uygulamada nasıl çalıştığına dair bir özelliktir. Bir cihazın birden fazla profil uygulayabileceğini unutmayın. Örneğin, bir cihazda nabız monitörü ve pil seviyesi dedektörü bulunabilir.
- Özellik Protokolü (ATT)
- GATT, Özellik Protokolü (ATT) temel alınarak oluşturulmuştur. Buna GATT/ATT da denir. ATT, BDE cihazlarda çalışacak şekilde optimize edilmiştir. Bu doğrultuda, mümkün olduğunca birkaç bayt kullanır. Her özellik, bilgileri benzersiz bir şekilde tanımlamak için kullanılan dize kimliği için standartlaştırılmış 128 bitlik bir biçim olan Evrensel Benzersiz Tanımlayıcı (UUID) ile benzersiz bir şekilde tanımlanır. ATT tarafından aktarılan özellikler özellikler ve hizmetler olarak biçimlendirilir.
- Özellik
- Bir özellik, tek bir değer ve özelliğin değerini açıklayan 0-n tanımlayıcıları içerir. Bir özellik, sınıfa benzer bir tür olarak düşünülebilir.
- Tanımlayıcı
- Tanımlayıcılar, bir karakteristik değeri tanımlayan tanımlanmış özelliklerdir. Örneğin bir tanımlayıcı, kullanıcılar tarafından okunabilen bir açıklama, bir özelliğin değeri için kabul edilebilir bir aralık veya bir özelliğin değerine özel bir ölçü birimini belirtebilir.
- Hizmet
- Hizmet, bir özellik koleksiyonudur. Örneğin, "nabız ölçümü" gibi özellikleri içeren "nabız monitörü" adlı bir hizmetiniz olabilir. Mevcut GATT tabanlı profillerin ve hizmetlerin listesini bluetooth.org adresinde bulabilirsiniz.
Roller ve sorumluluklar
Bir cihaz BLE cihazıyla etkileşime geçtiğinde roller ve sorumluluklar iki farklı şekilde bölünür:
Merkezi ve çevre birimi. Bu, BLE bağlantısı için geçerlidir. Merkezi roldeki cihaz, reklam arayışında taramalar yapar ve çevresel roldeki cihaz reklam yayınlar. Yalnızca çevre birimi rolünü destekleyen iki cihaz birbiriyle iletişim kuramaz. Yalnızca merkezi rolü destekleyen iki cihaz da iletişim kuramaz.
GATT sunucusu ve GATT istemcisi Bu, bağlantıyı kurduktan sonra iki cihazın birbiriyle nasıl iletişim kurduğunu belirler. İstemci rolündeki cihaz, veri istekleri gönderir ve sunucu rolündeki cihaz bu istekleri yerine getirir.
Merkezi-çevre birimi ve sunucu-istemci rol bölümleri arasındaki farkı anlamak için bir Android telefonunuz ve sensör verilerini telefona bildiren BLE özellikli bir aktivite takip cihazınız olduğunu varsayalım.
Telefon (merkezi cihaz), BLE cihazlarını etkin olarak tarar. Etkinlik izleyici (çevre birimi cihazı) reklam yapar ve bağlantı isteği almayı bekler.
Telefon ve etkinlik izleyici bağlantı kurduktan sonra, GATT meta verilerini birbirine aktarmaya başlar. Bu durumda, telefonda çalışan uygulama veri istekleri gönderir ve bu nedenle GATT istemcisi olarak çalışır. Aktivite takip cihazı bu istekleri yerine getirdiği için GATT sunucusu olarak çalışır.
Uygulamanın alternatif bir tasarımında, telefon bunun yerine GATT sunucusu rolünü oynayabilir. Daha fazla bilgi için BluetoothGattServer
bölümüne bakın.