Android, hem Klasik Bluetooth'u hem de Bluetooth Düşük Enerjiyi destekleyen varsayılan bir Bluetooth yığını sağlar. Android cihazlar, Bluetooth'u kullanarak yakındaki Bluetooth cihazlarıyla 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 Enerjiyi (BLE) uygulama yeteneği sağlar. BLE API'lerinden tam olarak yararlanmak için Android Bluetooth HCI Gereksinimlerini izleyin. Nitelikli yonga setine sahip Android cihazlar, Klasik Bluetooth'u veya hem Klasik Bluetooth'u hem de BLE'yi uygulayabilir. BLE, eski Bluetooth yonga setleriyle geriye dönük olarak uyumlu değildir.
Android 8.0'da, yerel Bluetooth yığını tamamen Bluetooth 5 için uygundur. Mevcut Bluetooth 5 özelliklerini kullanmak için cihazın Bluetooth 5 uyumlu bir yonga setine sahip olması gerekir.
Android mimarisi
Bir Bluetooth uygulaması, Binder aracılığıyla Bluetooth işlemiyle iletişim kurar. Bluetooth işlemi, Bluetooth yığınıyla iletişim kurmak için JNI'yı 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şim kurmak için android.bluetooth API'lerini kullanan uygulama kodu bulunur. Dahili olarak bu kod, Binder IPC mekanizması aracılığıyla Bluetooth işlemini çağırır.
- Bluetooth uygulaması
-
packages/modules/Bluetooth/android/app
içinde bulunan Bluetooth uygulaması bir Android uygulaması olarak paketlenir ve Bluetooth profillerini Android çerçeve katmanında uygular. Bu uygulama JNI aracılığıyla yerel 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
içinde bulunur. Yığın, genel Bluetooth HAL'yi uygular ve onu uzantılar ve yapılandırma değişiklikleriyle özelleştirir. - Satıcı uygulaması
- Satıcı aygıtları, Donanım Arayüzü Tasarım Dilini (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 aktarın. 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. Yeterlilik listesi Bluetooth SIG web sitesinde QDID 169365 altında yer almaktadır.
Çekirdek Bluetooth yığını packages/modules/Bluetooth
bulunur. Geliştirme AOSP'de gerçekleşir ve katkılar memnuniyetle karşılanır.
Android 7.x ve önceki mimari
Bir Bluetooth sistem hizmeti, JNI aracılığıyla Bluetooth yığınıyla ve Binder IPC aracılığıyla 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şim kurmak için android.bluetooth API'lerini kullanan uygulama kodu bulunur. Dahili olarak bu kod, Binder IPC mekanizması aracılığıyla Bluetooth işlemini çağırır.
- Bluetooth sistem servisi
-
packages/apps/Bluetooth
içinde bulunan Bluetooth sistem hizmeti bir Android uygulaması olarak paketlenir ve Bluetooth hizmetini ve profillerini Android çerçeve katmanında uygular. Bu uygulama JNI aracılığıyla HAL katmanına çağrı yapar. - JNI
- android.bluetooth ile ilişkili JNI kodu
packages/apps/Bluetooth/jni
dosyasında bulunur. JNI kodu, HAL katmanını çağırır ve belirli Bluetooth işlemleri gerçekleştiğinde (örneğin, cihazların keşfedilmesi durumunda) HAL'den geri aramalar alır. - HAL
- Donanım soyutlama katmanı, android.bluetooth API'lerinin ve Bluetooth işleminin çağırdığı ve Bluetooth donanımınızın doğru şekilde ç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
şeklindedir. Ayrıca,hardware/libhardware/include/hardware/bt_*.h
dosyalarının tamamını inceleyin. - Bluetooth yığını
- Varsayılan Bluetooth yığını sizin için sağlanmıştır ve
system/bt
dosyasında bulunur. Yığın, genel Bluetooth HAL'yi uygular ve onu uzantılar ve yapılandırma değişiklikleriyle özelleştirir. - Satıcı uzantıları
- İzleme amacıyla özel uzantılar ve bir HCI katmanı eklemek için bir libbt-vendor modülü oluşturabilir ve bu bileşenleri belirtebilirsiniz.
HAL'in uygulanması
Bluetooth HAL, /hardware/libhardware/include/hardware/bluetooth.h
dosyasında bulunur. bluetooth.h
dosyası, Bluetooth yığınının temel arayüzünü içerir ve onun işlevlerini uygulamanız gerekir.
Profile özgü dosyalar aynı dizinde bulunur. Ayrıntılar için HAL Dosya Referansına bakın.