Bluetooth

Android Bluetooth HAL simgesi

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:

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

Android Bluetooth mimarisi
Şekil 2. Android 7.x ve önceki sürümlerin Bluetooth mimarisi
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üm hardware/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.