Bluetooth

Android Bluetooth HAL simgesi

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:

Android Bluetooth mimarisi
Şekil 1. 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. 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:

Android Bluetooth mimarisi
Şekil 2. Android 7.x ve önceki 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. 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.