Arka planda iletişim kurun

Bu kılavuzda, uygulamanız arka planda çalışırken çevre birimleriyle iletişim kurmak için temel kullanım alanlarını nasıl destekleyeceğinizle ilgili genel bilgiler verilmektedir:

Bu kullanım alanlarının her birini destekleyen birden fazla seçenek vardır. Her birinin, özel ihtiyaçlarınıza uygunluğunu etkileyebilecek avantajları ve dezavantajları vardır.

Aşağıdaki diyagramda, bu sayfadaki kılavuzun basitleştirilmiş bir görünümü gösterilmektedir:

Cihaz bulun

Öncelikle uygulamanızın bağlanacağı bir cihaz bulması gerekir. BLE cihazı bulmak için aşağıdaki API'lerden birini kullanabilirsiniz:

Arka planda

Uygulama görünür değilken bu API'lerden birini kullanma konusunda herhangi bir sınırlama yoktur ancak her ikisi de uygulama işleminizin etkin olmasını gerektirir. Uygulama işlemi çalışmıyorsa aşağıdaki geçici çözümleri kullanabilirsiniz:

Bir cihaza bağlan

Bulduğunuz bir cihaza bağlanmak için aşağıdaki kaynaklardan birinden cihaz için bir BluetoothDevice örneği almanız gerekir:

BluetoothDevice örneğiniz olduktan sonra connectGatt() yöntemlerinden birini çağırarak ilgili cihaza bağlantı isteği başlatabilirsiniz. autoConnect boole değerine ilettiğiniz değer, GATT istemcisinin aşağıdaki iki bağlantı modundan hangisini kullanacağını tanımlar:

  • Doğrudan bağlan (autoconnect = false): Çevre birimine doğrudan bağlanmaya çalışır ve cihaz kullanılamıyorsa başarısız olur. Bağlantı kesilirse GATT istemcisi otomatik olarak yeniden bağlanmaya çalışmaz.
  • Otomatik bağlan (autoconnect = true): Çevre birimine her kullanılabilir olduğunda otomatik olarak bağlanmaya çalışır. Çevre birimi tarafından başlatılan veya çevre biriminin kapsama alanı dışında olması nedeniyle bağlantının kesilmesi durumunda GATT istemcisi, çevre birimi kullanılabilir olduğunda otomatik olarak yeniden bağlanmaya çalışır.

Arka planda

Uygulama arka plandayken bir cihaza bağlanma konusunda herhangi bir kısıtlama yoktur ancak işleminiz sonlandırılırsa bağlantı kapatılır. Ayrıca, arka planda etkinlik başlatma (Android 10 ve sonraki sürümlerde) veya ön plan hizmetleri (Android 12 ve sonraki sürümlerde) ile ilgili kısıtlamalar vardır.

Bu nedenle, uygulamalar arka plandayken bağlantı kurmak için aşağıdaki çözümleri kullanabilir:

Bir cihaza bağlı kalma

İdeal olarak, uygulamalar çevre birimleriyle bağlantıları yalnızca gerektiği sürece sürdürmeli ve görev tamamlandıktan sonra bağlantıyı kesmelidir. Ancak bir uygulamanın bağlantıyı süresiz olarak canlı tutması gereken iki durum vardır:

Her iki durumda da aşağıdaki seçenekler kullanılabilir:

Uygulamalar arasında geçiş yaparken

Cihaz bulmak, cihaza bağlanmak ve veri aktarmak zaman alıcı ve kaynak yoğun bir işlemdir. Bağlantının kesilmesini ve kullanıcı uygulamalar arasında geçiş yaptığında veya eşzamanlı görevler gerçekleştirdiğinde tüm işlemi her seferinde baştan yapmak zorunda kalmamak için işlem tamamlanana kadar bağlantıyı etkin tutmanız gerekir. connectedDevice türünde bir ön plan hizmeti veya ikincil cihaz varlığı API'si'ni kullanabilirsiniz.

Çevre birimi bildirimlerini dinlerken

Uygulamanın çevre birimi bildirimlerini dinlemek için setCharacteristicNotification() yöntemini çağırması, onCharacteristicChanged() kullanarak geri çağırmaları dinlemesi ve bağlantıyı canlı tutması gerekir. Uygulamanın uzun süre dinlemeye devam etmesi gerekeceğinden çoğu uygulamada bu kullanım alanını CompanionDeviceService ile desteklemek en iyisidir. Ancak ön plan hizmeti de kullanabilirsiniz.

Her iki durumda da, sonlandırılan bir işlemden sonra Cihaza bağlanma bölümündeki talimatları uygulayarak yeniden bağlanabilirsiniz.