
Android, hem Klasik Bluetooth hem de Bluetooth Düşük Enerji'yi destekleyen varsayılan bir Bluetooth grubu sağlar. Android cihazlar, Bluetooth'u kullanarak yakındaki Bluetooth cihazlarla veri gönderip 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 (BDE) uygulama olanağı sunar. BLE API'lerinden tam olarak yararlanmak için Android Bluetooth HCI Şartları'nı uygulayın. Uygun bir yonga setine sahip Android cihazlar, Classic Bluetooth'u veya hem Classic Bluetooth'u hem de BLE'yi uygulayabilir. BLE, eski Bluetooth yonga setleriyle geriye dönük uyumlu değildir.
Android 8.0'da yerel Bluetooth yığını, Bluetooth 5 için tamamen uygundur. Mevcut Bluetooth 5 özelliklerini kullanmak için cihazın Bluetooth 5 sertifikalı bir yonga setine sahip olması gerekir.
Android mimarisi
Bluetooth uygulamaları, Binder aracılığıyla Bluetooth işlemiyle 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:

- Uygulama çerçevesi
- Uygulama çerçevesi düzeyinde, Bluetooth donanımıyla etkileşime geçmek için android.bluetooth API'lerini kullanan uygulama kodu bulunur. Bu kod, dahili olarak Binder IPC mekanizması üzerinden Bluetooth işlemini çağırır.
- Bluetooth uygulaması
-
packages/modules/Bluetooth/android/app
içinde bulunan Bluetooth uygulaması, Android uygulaması olarak paketlenir ve Bluetooth profillerini Android çerçeve katmanında uygular. Bu uygulama, JNI aracılığıyla yerel Bluetooth yığınını çağırıyor. - JNI
-
android.bluetooth ile ilişkili JNI kodu
packages/modules/Bluetooth/android/app/jni
içinde bulunur. JNI kodu, cihazların bulunduğu durumlar gibi belirli Bluetooth işlemleri gerçekleştiğinde Bluetooth yığınını çağırır. - Bluetooth yığını
-
AOSP'de sağlanan varsayılan Bluetooth yığını
packages/modules/Bluetooth/system
içinde bulunur. Yığın, genel Bluetooth HAL'i uygular ve uzantılar ile yapılandırma değişiklikleriyle özelleştirir. - Tedarikçi firma uygulaması
- Tedarikçi firma cihazları, Donanım Arayüzü Tasarım Dili'ni (HIDL) kullanarak Bluetooth yığınıyla etkileşim kurar.
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 aktarın. Arayüz dosyaları hardware/interfaces/bluetooth
içinde bulunur.
Bluetooth yığın geliştirme
Android Bluetooth yığını, tam nitelikli bir Bluetooth yığınıdır. Uygunluk listelemesi, Bluetooth SIG web sitesinde QDID 169365 altındadır.
Ana Bluetooth yığını
packages/modules/Bluetooth
içinde bulunur. Geliştirme AOSP'de gerçekleşir ve katkılar memnuniyetle karşılanır.
Android 7.x ve önceki sürümlerin mimarisi
Bluetooth sistem hizmeti, JNI üzerinden Bluetooth yığınıyla ve Binder IPC üzerinden 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:

- Uygulama çerçevesi
-
Uygulama çerçevesi düzeyinde, Bluetooth donanımıyla etkileşime geçmek için
android.bluetooth
API'lerini kullanan uygulama kodu bulunur. Bu kod, dahili olarak Binder IPC mekanizması üzerinden Bluetooth işlemini çağırır. - Bluetooth sistem hizmeti
-
packages/apps/Bluetooth
içinde bulunan 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
içinde yer alı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ığı ve Bluetooth donanımınızın düzgün çalışması için uygulamanız gereken standart arayüzü tanımlar. Bluetooth HAL'in başlık dosyası
hardware/libhardware/include/hardware/bluetooth.h
'tür. Ayrıca, tümhardware/libhardware/include/hardware/bt_*.h
dosyalarını inceleyin. - Bluetooth yığını
-
Varsayılan Bluetooth paketi sizin için sağlanır ve
system/bt
konumunda bulunur. Yığın, genel Bluetooth HAL'i uygular ve uzantılar ile yapılandırma değişiklikleriyle özelleştirir. - Tedarikçi uzantıları
- İzleme için özel uzantılar ve HCI katmanı eklemek üzere bir libbt-vendor modülü oluşturabilir ve bu bileşenleri belirtebilirsiniz.
HAL'i uygulama
Bluetooth HAL, /hardware/libhardware/include/hardware/bluetooth.h
içinde bulunur. bluetooth.h
dosyası, Bluetooth yığınının temel arayüzünü içerir ve işlevlerini uygulamanız gerekir.
Profillere özgü dosyalar aynı dizinde bulunur. Ayrıntılar için HAL Dosya Referansı'na bakın.