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. Bluetooth kullanarak Android cihazlar, 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 (BLE) uygulama yeteneği sağlar. BLE API'lerinden tam olarak yararlanmak için Android Bluetooth HCI Gereksinimlerini izleyin. Nitelikli bir yonga setine sahip Android cihazlar, Klasik Bluetooth'u veya hem Klasik Bluetooth 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 tam olarak uygundur. Mevcut Bluetooth 5 özelliklerini kullanmak için cihazın Bluetooth 5 nitelikli bir yonga setine sahip olması gerekir.

Android mimarisi

Bir Bluetooth uygulaması, Bluetooth işlemiyle Binder aracılığıyla 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 şema, Bluetooth yığınının genel yapısını gösterir:

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 Bluetooth sürecini Binder IPC mekanizması aracılığıyla çağırır.
Bluetooth sistem servisi
packages/apps/Bluetooth içinde bulunan Bluetooth sistem hizmeti, bir Android uygulaması olarak paketlenmiştir ve Bluetooth hizmetlerini ve 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, package packages/apps/Bluetooth/jni . JNI kodu, aygıtları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 system/bt . Yığın, genel Bluetooth HAL'ı uygular ve onu uzantılar ve yapılandırma değişiklikleriyle özelleştirir.
Satıcı uygulaması
Satıcı cihazları, Donanım Arayüzü Tasarım Dili'ni (HIDL) kullanarak Bluetooth yığınıyla etkileşime girer.

HIDL

HIDL , Bluetooth yığını ile satıcı uygulaması arasındaki arabirimi tanımlar. Bluetooth HIDL dosyalarını oluşturmak için Bluetooth arabirim dosyalarını HIDL oluşturma aracına aktarın. Arayüz dosyaları hardware/interfaces/bluetooth .

Bluetooth yığını geliştirme

Android Bluetooth yığını, tam nitelikli bir Bluetooth yığınıdır. Kalifikasyon listesi, Bluetooth SIG web sitesinde QDID 169365 altında yer almaktadır .

Çekirdek Bluetooth yığını system/bt içinde bulunur. Geliştirme AOSP'de gerçekleşir ve katkılara açığız.

Android 7.x ve önceki mimari

Bir Bluetooth sistem hizmeti, Bluetooth yığınıyla JNI aracılığıyla ve uygulamalarla Binder IPC aracılığıyla iletişim kurar. Sistem hizmeti, geliştiricilere çeşitli Bluetooth profillerine erişim sağlar. Bu şema, Bluetooth yığınının genel yapısını gösterir:

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 Bluetooth sürecini Binder IPC mekanizması aracılığıyla çağırır.
Bluetooth sistem servisi
packages/apps/Bluetooth içinde bulunan Bluetooth sistem hizmeti, bir Android uygulaması olarak paketlenmiştir 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, package packages/apps/Bluetooth/jni . JNI kodu, HAL katmanını arar ve aygıtların bulunması gibi belirli Bluetooth işlemleri gerçekleştiğinde 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 arabirimi tanımlar. Bluetooth HAL için başlık dosyası hardware/libhardware/include/hardware/bluetooth.h . Ek olarak, tüm hardware/libhardware/include/hardware/bt_*.h dosyalarını inceleyin.
Bluetooth yığını
Varsayılan Bluetooth yığını sizin için sağlanır ve system/bt . Yığın, genel Bluetooth HAL'ı uygular ve onu uzantılar ve yapılandırma değişiklikleriyle özelleştirir.
Satıcı uzantıları
İzleme için özel uzantılar ve bir HCI katmanı eklemek için bir libbt-vendor modülü oluşturabilir ve bu bileşenleri belirtebilirsiniz.

HAL'ı uygulamak

Bluetooth HAL, /hardware/libhardware/include/hardware/bluetooth.h içinde /hardware/libhardware/include/hardware/bluetooth.h . bluetooth.h dosyası, Bluetooth yığını için temel arabirimi 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 .