
Android, hem Classic Bluetooth'u hem de Bluetooth Düşük Enerji'yi destekleyen varsayılan bir Bluetooth yığını sağlar. Android cihazlar, Bluetooth'u kullanarak yakındaki Bluetooth cihazlarıyla veri göndermek ve almak için kişisel alan ağları oluşturabilir.
Android 4.3 ve sonraki sürümlerde Android Bluetooth yığını, Bluetooth Düşük Enerji'nin (BLE) uygulanmasını sağlar. BDE API'lerini tam olarak kullanmak için Android Bluetooth HCI Gereksinimleri'ni uygulayın. Uygun yonga setine sahip Android cihazlar Classic Bluetooth'u veya hem Classic Bluetooth hem de BLE'yi uygulayabilir. BLE, eski Bluetooth yonga setleriyle geriye dönük olarak uyumlu değildir.
Android 8.0'da Bluetooth yığını, Bluetooth 5 için tamamen niteliklidir. Kullanılabilir Bluetooth 5 özelliklerini kullanmak için cihazda Bluetooth 5 sertifikalı bir yonga seti olması gerekir.
Android mimarisi
Bir Bluetooth uygulaması, Binder aracılığıyla Bluetooth süreciyle iletişim kurar. Bluetooth işlemi, Bluetooth yığınıyla iletişim kurmak için JNI'yi kullanır ve geliştiricilere çeşitli Bluetooth profillerine erişim sağlar. Bu şemada Bluetooth yığınının genel yapısı gösterilmektedir:
1.şekil Android Bluetooth mimarisi.
- uygulama çerçevesi
-
Uygulama çerçevesi düzeyinde, Bluetooth donanımıyla etkileşim kurmak için
android.bluetooth
API'lerini kullanan uygulama kodu bulunur. Bu kod, dahili olarak Binder IPC mekanizması aracılığıyla Bluetooth sürecini çağırır. - Bluetooth uygulaması
-
packages/modules/Bluetooth/android/app
konumundaki Bluetooth uygulaması, Android uygulaması olarak paketlenir ve Bluetooth profillerini Android çerçeve katmanında uygular. Bu uygulama, JNI aracılığıyla Bluetooth yığınına çağrı yapar. - JNI
-
android.bluetooth ile ilişkili JNI kodu,
packages/modules/Bluetooth/android/app/jni
konumunda bulunur. JNI kodu, cihazların keşfedilmesi gibi belirli Bluetooth işlemleri gerçekleştiğinde Bluetooth yığınına çağrı yapar. - Bluetooth yığını
-
Varsayılan Bluetooth yığını AOSP'de sağlanır ve
packages/modules/Bluetooth/system
konumunda bulunur. Yığın, genel Bluetooth HAL'ı uygular ve uzantılar ile yapılandırma değişiklikleriyle özelleştirir. - tedarikçi uygulaması
- Tedarikçi cihazları, Donanım Arayüzü Tasarım Dili (HIDL) kullanarak Bluetooth yığınıyla etkileşime girer.
HIDL
HIDL, Bluetooth yığını ile satıcı uygulaması arasındaki arayüzü tanımlar. Bluetooth HIDL dosyalarını oluşturmak için Bluetooth arayüz dosyalarını HIDL oluşturma aracına iletin. Arayüz dosyaları hardware/interfaces/bluetooth
konumunda bulunur.
Bluetooth yığını geliştirme
Android Bluetooth yığını, tam nitelikli bir Bluetooth yığınıdır. Uygunluk listesi, Bluetooth SIG web sitesinde QDID 169365 altında yer alır.
Temel Bluetooth yığını
packages/modules/Bluetooth
içinde bulunur. Geliştirme AOSP'de yapılır ve katkılar kabul edilir.
Android 7.x ve önceki sürümlerin mimarisi
Bir Bluetooth sistem hizmeti, JNI aracılığıyla Bluetooth yığınıyla, Binder IPC aracılığıyla da uygulamalarla iletişim kurar. Sistem hizmeti, geliştiricilere çeşitli Bluetooth profillerine erişim sağlar. Bu şemada Bluetooth yığınının genel yapısı gösterilmektedir:
Şekil 2. Android 7.x ve önceki sürümlerde Bluetooth mimarisi.
- uygulama çerçevesi
-
Uygulama çerçevesi düzeyinde, Bluetooth donanımıyla etkileşim kurmak için
android.bluetooth
API'lerini kullanan uygulama kodu bulunur. Bu kod, dahili olarak Binder IPC mekanizması aracılığıyla Bluetooth sürecini çağırır. - Bluetooth sistem hizmeti
-
packages/apps/Bluetooth
konumundaki Bluetooth sistem hizmeti, Android uygulaması olarak paketlenir ve Bluetooth hizmetini ve profillerini Android çerçeve katmanında uygular. Bu uygulama, JNI aracılığıyla HAL katmanını çağırıyor. - JNI
-
android.bluetooth
ile ilişkili JNI kodu
packages/apps/Bluetooth/jni
konumundadır. JNI kodu, HAL katmanını çağırır ve cihazların bulunması gibi belirli Bluetooth işlemleri gerçekleştiğinde HAL'den geri çağırma alır. - HAL
-
Donanım soyutlama katmanı,
android.bluetooth
API'lerinin ve Bluetooth sürecinin çağrı yaptığı standart arayüzü tanımlar. Bluetooth donanımınızın doğru şekilde çalışması için bu arayüzü uygulamanız gerekir. Bluetooth HAL'nin başlık dosyası
hardware/libhardware/include/hardware/bluetooth.h
'dır. Ayrıca,hardware/libhardware/include/hardware/bt_*.h
dosyalarının tümünü inceleyin. - Bluetooth yığını
-
Varsayılan Bluetooth yığını sizin için sağlanır ve
system/bt
konumunda bulunur. Yığın, genel Bluetooth HAL'yi uygular ve uzantılarla ve yapılandırma değişiklikleriyle özelleştirir. - sağlayıcı uzantıları
- İzleme için özel uzantılar ve bir HCI katmanı eklemek üzere bir libbt-vendor modülü oluşturabilir ve bu bileşenleri belirtebilirsiniz.
HAL'yi uygulama
Bluetooth HAL'ı /hardware/libhardware/include/hardware/bluetooth.h
konumundadır. bluetooth.h
dosyası, Bluetooth yığını için temel arayüzü içerir ve işlevlerini uygulamanız gerekir.
Profile özgü dosyalar aynı dizinde bulunur. Ayrıntılar için HAL Dosya Referansı'na bakın.