Arka planda iletişim kurun

Bu kılavuzda, uygulamanız arka planda çalışırken çevre birimi cihazlarıyla iletişim kurmaya yönelik temel kullanım alanlarının nasıl destekleneceğine dair bir genel bakış sunulmaktadır:

Bu kullanım alanlarının her birini destekleyecek çeşitli seçenekler vardır. Her birinin özel ihtiyaçlarınıza daha çok ya da daha az uygun olmasını sağlayabilecek avantaj ve dezavantajları vardır.

Aşağıdaki şemada, 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. BDE cihazını bulmak için aşağıdaki API'lerden birini kullanabilirsiniz:

Arka planda

Uygulama görünür değilken bu API'lerden ikisini de kullanabilirsiniz ancak her iki API'nin de hayatta kalması için uygulama sürecinize ihtiyacı vardır. Uygulama işlemi çalışmıyorsa aşağıdaki geçici çözümleri kullanabilirsiniz:

Bir cihaza bağlan

Bir cihazı bulduktan sonra ona bağlanmak için aşağıdaki kaynakların birinden cihaz için bir BluetoothDevice örneği almanız gerekir:

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

  • Doğrudan bağlantı (autoconnect = false): Doğrudan çevre birimi cihazına bağlanmayı deneyin ve cihaz mevcut değilse başarısız olun. Bağlantının kesilmesi durumunda GATT istemcisi otomatik olarak yeniden bağlanmayı denemez.
  • Otomatik bağlan (autoconnect = true): Mümkün olduğunda çevre birimi cihazına otomatik olarak bağlanmayı deneyin. Çevre birimi tarafından bir bağlantı kesilmesi veya çevre biriminin kapsama alanı dışında olması durumunda GATT istemcisi, çevre birimi kullanılabilir olduğunda otomatik olarak yeniden bağlanmayı dener.

Arka planda

İşleminiz sonlandırılırsa bağlantı kapalı olsa da uygulama arka plandayken cihaza bağlanmayla ilgili herhangi bir kısıtlama yoktur. Buna ek olarak, arka plandan (Android 10 ve sonraki sürümlerde) veya ön plan hizmetlerini (Android 12 ve sonraki sürümlerde) başlatmayla ilgili kısıtlamalar vardır.

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

Bir cihaza bağlı kalma

İdeal olarak uygulamalar, çevre birimi cihazlarıyla yalnızca gerektiği sürece bağlantı kurmalı ve görev tamamlandığında bağlantısı kesilmelidir. Bununla birlikte, 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

Bir cihaz bulmak, ona bağlanmak ve veri aktarmak zaman alan ve yoğun kaynak kullanan bir işlemdir. Kullanıcı uygulamalar arasında her geçiş yaptığında veya eş zamanlı görevleri gerçekleştirdiğinde bağlantıyı kaybetmemek ve tüm işlemi gerçekleştirmek zorunda kalmamak için işlem tamamlanana kadar bağlantıyı canlı tutmalısınız. connectedDevice türünde bir ön plan hizmeti veya tamamlayıcı cihaz varlığı API'si ile kullanabilirsiniz.

Çevre birimi bildirimlerini dinlerken

Çevre birimi bildirimlerini dinlemek için uygulamanın setCharacteristicNotification()'i çağırması, onCharacteristicChanged() kullanarak geri çağırmaları dinlemesi ve bağlantıyı sürdürmesi gerekir. Çoğu uygulama için bu kullanım alanını CompanionDeviceService ile desteklemek en iyisidir çünkü uygulamanın uzun süre dinlemeye devam etmesi gerekir. Ancak, bir ö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.