Bluetooth

Android Bluetooth HAL simgesi

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:

Android Bluetooth yığınının katmanlarını gösteren şema.

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:

Android 7.x ve önceki sürümlerdeki Bluetooth mimarisi katmanlarının şeması.

Ş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.