Arka planda iletişim kurun

Bu kılavuzda, uygulamanız arka planda çalışırken çevre birimleri ile iletişim kurmayla ilgili temel kullanım alanlarının nasıl destekleneceğine dair genel bilgiler verilmektedir:

Bu kullanım alanlarının her birini desteklemek için birden fazla seçenek vardır. Her birinin, belirli ihtiyaçlarınıza daha fazla veya daha az uygun olmasını sağlayabilecek avantajları ve dezavantajları vardır.

Aşağıdaki şemada, bu sayfadaki bilgilerin 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 herhangi birinin kullanılmasıyla ilgili bir sınırlama yoktur ancak her ikisinin de uygulama işleminizin etkin olması gerekir. 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 birinde cihazın BluetoothDevice örneğini almanız gerekir:

Bir BluetoothDevice örneği oluşturduktan sonra, connectGatt() yöntemlerinden birini çağırarak ilgili cihaza bağlantı isteği gönderebilirsiniz. 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ğlantı (autoconnect = false): Çevresel cihaza doğrudan bağlanmayı deneyin ve cihaz kullanılamıyorsa bağlantıyı sonlandırın. Bağlantı kesilirse GATT istemcisi otomatik olarak yeniden bağlanmaya çalışmaz.
  • Otomatik bağlan (autoconnect = true): Mümkün olduğunda çevre birimi cihaza otomatik olarak bağlanmayı deneyin. Çevresel birim tarafından başlatılan veya çevresel birim kapsama alanında olmadığı için bağlantı kesilirse GATT istemcisi, çevresel birim kullanılabilir olduğunda otomatik olarak yeniden bağlanmaya çalışır.

Arka planda

Uygulama arka plandayken 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, arka planda bağlantı kurmak için uygulamalar aşağıdaki çözümleri kullanabilir:

Bir cihaza bağlı kalma

İdeal olarak, uygulamalar çevre birimi cihazlarla bağlantılarını 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 açık tutması gerekebileceği iki durum vardır:

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

Uygulamalar arasında geçiş yaparken

Cihaz bulmak, ona bağlanmak ve veri aktarmak zaman alıcı ve yoğun kaynak gerektiren bir işlemdir. Bağlantıyı kaybetmemek ve kullanıcı uygulamalar arasında geçiş yaptığında veya eşzamanlı görevler gerçekleştirdiğinde işlemin tamamını tekrarlamak zorunda kalmamak için işlem tamamlanana kadar bağlantıyı açık tutmanız gerekir. connectedDevice türüne sahip bir ön plan hizmeti veya companion device presence API'yi kullanabilirsiniz.

Çevre birimi bildirimlerini dinlerken

Uygulama, çevre birimi bildirimlerini dinlemek için setCharacteristicNotification() çağrısını yapmalıdır, onCharacteristicChanged() kullanarak geri çağırma çağrılarını dinlemelidir ve bağlantıyı açık tutmalıdır. Çoğu uygulamada, uygulamanın uzun süre boyunca dinlemeye devam etmesi gerekeceğinden bu kullanım alanını CompanionDeviceService ile desteklemek en iyisidir. Bununla birlikte, ön plan hizmeti de kullanabilirsiniz.

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