![Ikon HAL Bluetooth Android](https://source.android.com/static/docs/core/connect/bluetooth/images/ape_fwk_hal_bluetooth.png?authuser=6&hl=id)
Android menyediakan tumpukan Bluetooth default yang mendukung Bluetooth Klasik dan Bluetooth Hemat Energi. Menggunakan Bluetooth, perangkat Android dapat membuat jaringan area pribadi untuk mengirim dan menerima data dengan perangkat Bluetooth terdekat.
Di Android 4.3 dan yang lebih baru, Android Bluetooth stack menyediakan kemampuan untuk mengimplementasikan Bluetooth Low Energy (BLE). Untuk sepenuhnya memanfaatkan BLE API, ikuti Persyaratan Android Bluetooth HCI . Perangkat Android dengan chipset yang memenuhi syarat dapat mengimplementasikan Bluetooth Klasik atau Bluetooth Klasik dan BLE. BLE tidak kompatibel dengan chipset Bluetooth lama.
Di Android 8.0, tumpukan Bluetooth asli sepenuhnya memenuhi syarat untuk Bluetooth 5. Untuk menggunakan fitur Bluetooth 5 yang tersedia, perangkat harus memiliki chipset Bluetooth 5 yang memenuhi syarat.
Arsitektur Android
Aplikasi Bluetooth berkomunikasi dengan proses Bluetooth melalui Binder. Proses Bluetooth menggunakan JNI untuk berkomunikasi dengan tumpukan Bluetooth dan memberi pengembang akses ke berbagai profil Bluetooth. Diagram ini menunjukkan struktur umum tumpukan Bluetooth:
![Arsitektur Bluetooth Android](https://source.android.com/static/docs/core/connect/bluetooth/images/fluoride_architecture.png?authuser=6&hl=id)
- Kerangka aplikasi
- Pada tingkat kerangka aplikasi, terdapat kode aplikasi yang menggunakan API android.bluetooth untuk berinteraksi dengan perangkat keras Bluetooth. Secara internal, kode ini memanggil proses Bluetooth melalui mekanisme Binder IPC.
- Aplikasi Bluetooth
- Aplikasi Bluetooth, terletak di
packages/modules/Bluetooth/android/app
, dikemas sebagai aplikasi Android dan mengimplementasikan profil Bluetooth pada lapisan kerangka Android. Aplikasi ini memanggil tumpukan Bluetooth asli melalui JNI. - JNI
- Kode JNI yang terkait dengan android.bluetooth terletak di
packages/modules/Bluetooth/android/app/jni
. Kode JNI memanggil tumpukan Bluetooth ketika operasi Bluetooth tertentu terjadi, seperti ketika perangkat ditemukan. - Tumpukan Bluetooth
- Tumpukan Bluetooth default disediakan di AOSP dan terletak di
packages/modules/Bluetooth/system
. Tumpukan mengimplementasikan Bluetooth HAL generik dan menyesuaikannya dengan ekstensi dan perubahan konfigurasi. - Implementasi vendor
- Perangkat vendor berinteraksi dengan tumpukan Bluetooth menggunakan Hardware Interface Design Language (HIDL).
TERSEMBUNYI
HIDL mendefinisikan antarmuka antara tumpukan Bluetooth dan implementasi vendor. Untuk menghasilkan file HIDL Bluetooth, teruskan file antarmuka Bluetooth ke alat pembuatan HIDL. File antarmuka terletak di hardware/interfaces/bluetooth
.
Pengembangan tumpukan Bluetooth
Tumpukan Bluetooth Android adalah tumpukan Bluetooth yang sepenuhnya memenuhi syarat. Daftar kualifikasi ada di situs web Bluetooth SIG di bawah QDID 169365 .
Tumpukan inti Bluetooth berada di packages/modules/Bluetooth
. Pengembangan terjadi di AOSP, dan kontribusinya sangat diharapkan.
Android 7.x dan arsitektur sebelumnya
Layanan sistem Bluetooth berkomunikasi dengan tumpukan Bluetooth melalui JNI dan dengan aplikasi melalui Binder IPC. Layanan sistem memberi pengembang akses ke berbagai profil Bluetooth. Diagram ini menunjukkan struktur umum tumpukan Bluetooth:
![Arsitektur Bluetooth Android](https://source.android.com/static/docs/core/connect/bluetooth/images/ape_fwk_bluetooth.png?authuser=6&hl=id)
- Kerangka aplikasi
- Pada tingkat kerangka aplikasi, terdapat kode aplikasi yang memanfaatkan API android.bluetooth untuk berinteraksi dengan perangkat keras Bluetooth. Secara internal, kode ini memanggil proses Bluetooth melalui mekanisme Binder IPC.
- Layanan sistem Bluetooth
- Layanan sistem Bluetooth, terletak di
packages/apps/Bluetooth
, dikemas sebagai aplikasi Android dan mengimplementasikan layanan dan profil Bluetooth pada lapisan kerangka kerja Android. Aplikasi ini memanggil lapisan HAL melalui JNI. - JNI
- Kode JNI yang terkait dengan android.bluetooth terletak di
packages/apps/Bluetooth/jni
. Kode JNI memanggil lapisan HAL dan menerima panggilan balik dari HAL ketika operasi Bluetooth tertentu terjadi, seperti ketika perangkat ditemukan. - HAL
- Lapisan abstraksi perangkat keras mendefinisikan antarmuka standar yang digunakan oleh API android.bluetooth dan proses Bluetooth dan yang harus Anda implementasikan agar perangkat keras Bluetooth Anda berfungsi dengan benar. File header untuk Bluetooth HAL adalah
hardware/libhardware/include/hardware/bluetooth.h
. Selain itu, tinjau semua filehardware/libhardware/include/hardware/bt_*.h
. - Tumpukan Bluetooth
- Tumpukan Bluetooth default disediakan untuk Anda dan terletak di
system/bt
. Tumpukan mengimplementasikan Bluetooth HAL generik dan menyesuaikannya dengan ekstensi dan perubahan konfigurasi. - Ekstensi vendor
- Untuk menambahkan ekstensi khusus dan lapisan HCI untuk penelusuran, Anda dapat membuat modul libbt-vendor dan menentukan komponen ini.
Melaksanakan HAL
Bluetooth HAL terletak di /hardware/libhardware/include/hardware/bluetooth.h
. File bluetooth.h
berisi antarmuka dasar untuk tumpukan Bluetooth, dan Anda harus mengimplementasikan fungsinya.
File khusus profil terletak di direktori yang sama. Untuk detailnya, lihat Referensi File HAL .