2015-10-01 9 views
5

Uygulamam bir Bluetooth LE cihazına bağlanmalıdır. Genellikle mBluetoothAdapter.startLeScan(mLeScanCallback); kullanarak bir cihaz taraması gerçekleştirirsiniz. Geri arama mevcut cihazlar hakkında bilgi sağlar. Eğer özel bir cihaza bağlanmak istiyorsanızAndroid 4.4: Bluetooth Düşük Enerji; Bir BLE cihazı için tarama yapmadan bağlanın

yapmanız Bana göre o zaman

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address); 

ve

mBluetoothGatt = device.connectGatt(this, false, mGattCallback); 

gibi bir şey bu size BLE cihaza bağlanmak için gereken tek şey gibi görünüyor BLE adresini bilmek ve daha sonra yukarıdaki iki adımla ona bağlanmak. Bu yüzden bir BLE adresini zaten biliyorsanız (örneğin, BLE aygıtının etiketinde yazılıyorsa) BLE taraması yapmam gerekmiyor.

Ancak karşılaştığım şey, daha önce BLE taramasından hiç bulamadığım bir BLE aygıtım varsa, BLE adresini kullanarak doğrudan bağlanmak mümkün değildir. Android telefonumla en az bir kez taramak zorundayım. Daha sonra bir daha taramaya gerek duymuyorum ve BLE cihazına sadece BLE adresini kullanarak bağlanabiliyorum.

Böyle mi olmalıydı yoksa bir şeyi denetledim mi?

Çok teşekkürler, Stefan

+0

Bağlamadan önce [eşleştirme ve/veya bağlama] (https://piratecomm.wordpress.com/2014/01/19/ble-pairing-vs-bonding/) gerekli olabilir mi? – JimmyB

+0

BLE'yi anladığım kadarıyla, bu gerekli değildir. Ayrıca bir tarama gerçekleştirirsem, eşleştirme veya bağlama için hiçbir şey yapmam ve işe yarıyor. Sorun, bir BLE taraması yapmadan doğrudan bir aygıta bağlanmaktır. – Stefan

cevap

4

cihaz adresi sadece bluetooth cihaz için benzersiz bir tanımlayıcı olan, bu bağlantı için bilgi içermiyor. Tarama, bluetooth cihazından yayın sinyali içindeki bilgileri almak için gereklidir, böylece bir bağlantı yapılabilir. Tarama bittiğinde, bilgiler cihazda bir yere kaydedilir ve cihaz adresine bağlanır.

Eğer bluetooth adresinin değerini almaya çalışırsanız, bir kez tarandıktan sonra null değerini döndürür.

+0

Bunu doğrulayan bir kaynağınız var mı? – Andy

+1

[Kaynak] (https://developer.bluetooth.org/TechnologyOverview/Pages/Baseband.aspx) Özellikle bu ve Bluetooth protokollerinde uzman değilim, benim kesinti, cihaz adresi varken Cihazı tanımlamak için kullanılabilir, hangi kanalın iletişim kuracağını belirtmez. Protokol, birbirleriyle ilgili bilgi edinmek ve bağlantı için daha fazla talimat sağlamak için köle ve ana cihazlar için bir sorgulama kanalı belirler. Bu bilgi alındıktan sonra, master, bu bilgileri kaydedebilir ve talimatlara sahip olduğu anda bir dahaki sefere bir bağlantı kurabilir. –

+0

Bunun, bağlanmayan BLE cihazları için de geçerli olduğunu unutmayın. bir tarama tamamlandığında ve hizmet keşfi bir kez android servisleri önbelleğe alacaktır ve BluetoothDevice cihazı = mBluetoothAdapter.getRemoteDevice (adres) çağrıldığında anlamlandırıldı; 1 saniyeden daha kısa bir sürede bağlantıya neden olur. – benchuk

İlgili konular