API Bluetooth didukung di mPaaS 10.1.60 dan versi yang lebih baru.
Debugging di developer tools saat ini tidak didukung. Anda harus menggunakan perangkat fisik untuk memanggil API Bluetooth miniapp.
my.openBluetoothAdapter
Menginisialisasi modul Bluetooth miniapp. Inisialisasi berlaku sejak my.openBluetoothAdapter dipanggil hingga my.closeBluetoothAdapter dipanggil atau miniapp dihapus. Selama periode ini, Anda dapat memanggil API Bluetooth miniapp lainnya dan menerima callback event on terkait modul Bluetooth.
Parameter input
Name | Type | Required | Description |
autoClose | Boolean | No | Menentukan apakah koneksi Bluetooth akan secara otomatis terputus saat meninggalkan halaman saat ini. Jika tidak ditentukan, nilai default-nya adalah true. Penting Fitur ini hanya didukung di Android. |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Nilai kembali sukses
Name | Type | Description |
isSupportBLE | Boolean | Menunjukkan apakah Bluetooth Low Energy (BLE) didukung. |
Deskripsi kode kesalahan
error | Description | Solution |
12 | Bluetooth tidak diaktifkan. | Coba aktifkan Bluetooth. |
13 | Koneksi ke layanan sistem sementara terputus. | Coba sambungkan ulang. |
14 | Klien tidak memiliki otorisasi untuk menggunakan Bluetooth. | Berikan otorisasi kepada klien untuk menggunakan Bluetooth. |
15 | Kesalahan tidak diketahui. | - |
Contoh kode
<!-- .axml-->
<view class="page">
<view class="page-description">API Bluetooth</view>
<view class="page-section">
<view class="page-section-title">Status adapter Bluetooth lokal</view>
<view class="page-section-demo">
<button type="primary" onTap="openBluetoothAdapter">Inisialisasi Bluetooth</button>
<button type="primary" onTap="closeBluetoothAdapter">Tutup Bluetooth lokal</button>
<button type="primary" onTap="getBluetoothAdapterState">Dapatkan status Bluetooth</button>
</view>
<view class="page-section-title">Pindai perangkat Bluetooth</view>
<view class="page-section-demo">
<button type="primary" onTap="startBluetoothDevicesDiscovery">Mulai pencarian</button>
<button type="primary" onTap="getBluetoothDevices">Semua perangkat yang ditemukan</button>
<button type="primary" onTap="getConnectedBluetoothDevices">Semua perangkat yang terhubung</button>
<button type="primary" onTap="stopBluetoothDevicesDiscovery">Hentikan pencarian</button>
</view>
<view class="page-section-title">Hubungkan ke perangkat</view>
<view class="page-section-demo">
<input class="input" onInput="bindKeyInput" type="{{text}}" placeholder="Masukkan deviceId perangkat yang akan dihubungkan"></input>
<button type="primary" onTap="connectBLEDevice">Hubungkan ke perangkat</button>
<button type="primary" onTap="getBLEDeviceServices">Dapatkan layanan perangkat</button>
<button type="primary" onTap="getBLEDeviceCharacteristics">Dapatkan karakteristik baca/tulis</button>
<button type="primary" onTap="disconnectBLEDevice">Putuskan koneksi dari perangkat</button>
</view>
<view class="page-section-title">Baca dan tulis data</view>
<view class="page-section-demo">
<button type="primary" onTap="notifyBLECharacteristicValueChange">Dengarkan perubahan nilai karakteristik</button>
<button type="primary" onTap="readBLECharacteristicValue">Baca data</button>
<button type="primary" onTap="writeBLECharacteristicValue">Tulis data</button>
<button type="primary" onTap="offBLECharacteristicValueChange">Batalkan pendengar nilai karakteristik</button>
</view>
<view class="page-section-title">Event lainnya</view>
<view class="page-section-demo">
<button type="primary" onTap="bluetoothAdapterStateChange">Perubahan status Bluetooth lokal</button>
<button type="primary" onTap="offBluetoothAdapterStateChange">Batalkan pendengar status Bluetooth lokal</button>
<button type="primary" onTap="BLEConnectionStateChanged">Perubahan status koneksi Bluetooth</button>
<button type="primary" onTap="offBLEConnectionStateChanged">Batalkan pendengar status koneksi Bluetooth</button>
</view>
</view>
</view>// .js
Page({
data: {
devid: '0D9C82AD-1CC0-414D-9526-119E08D28124',
serid: 'FEE7',
notifyId: '36F6',
writeId: '36F5',
charid: '',
alldev: [{ deviceId: '' }],
},
// Dapatkan status adapter Bluetooth lokal
openBluetoothAdapter() {
my.openBluetoothAdapter({
success: res => {
if (!res.isSupportBLE) {
my.alert({ content: 'Maaf, Bluetooth tidak tersedia di ponsel Anda.' });
return;
}
my.alert({ content: 'Inisialisasi berhasil!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
closeBluetoothAdapter() {
my.closeBluetoothAdapter({
success: () => {
my.alert({ content: 'Bluetooth berhasil ditutup!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
getBluetoothAdapterState() {
my.getBluetoothAdapterState({
success: res => {
if (!res.available) {
my.alert({ content: 'Maaf, Bluetooth tidak tersedia di ponsel Anda.' });
return;
}
my.alert({ content: JSON.stringify(res) });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Pindai perangkat Bluetooth
startBluetoothDevicesDiscovery() {
my.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false,
success: () => {
my.onBluetoothDeviceFound({
success: res => {
// my.alert({content:'Mendengarkan perangkat baru'+JSON.stringify(res)});
var deviceArray = res.devices;
for (var i = deviceArray.length - 1; i >= 0; i--) {
var deviceObj = deviceArray[i];
// Cocokkan perangkat target berdasarkan nama perangkat atau data broadcast, lalu catat deviceID untuk penggunaan selanjutnya
if (deviceObj.name == this.data.name) {
my.alert({ content: 'Perangkat target ditemukan' });
my.offBluetoothDeviceFound();
this.setData({
deviceId: deviceObj.deviceId,
});
break;
}
}
},
fail: error => {
my.alert({ content: 'Gagal mendengarkan perangkat baru' + JSON.stringify(error) });
},
});
},
fail: error => {
my.alert({ content: 'Gagal memulai pemindaian' + JSON.stringify(error) });
},
});
},
// Hentikan pemindaian
stopBluetoothDevicesDiscovery() {
my.stopBluetoothDevicesDiscovery({
success: res => {
my.offBluetoothDeviceFound();
my.alert({ content: 'Operasi berhasil!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Dapatkan perangkat yang terhubung
getConnectedBluetoothDevices() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung!' });
return;
}
my.alert({ content: JSON.stringify(res) });
devid = res.devices[0].deviceId;
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Dapatkan semua perangkat yang ditemukan
getBluetoothDevices() {
my.getBluetoothDevices({
success: res => {
my.alert({ content: JSON.stringify(res) });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
bindKeyInput(e) {
this.setData({
devid: e.detail.value,
});
},
// Hubungkan ke perangkat
connectBLEDevice() {
my.connectBLEDevice({
deviceId: this.data.devid,
success: res => {
my.alert({ content: 'Koneksi berhasil' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Putuskan koneksi
disconnectBLEDevice() {
my.disconnectBLEDevice({
deviceId: this.data.devid,
success: () => {
my.alert({ content: 'Koneksi berhasil diputus!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Dapatkan layanan perangkat yang terhubung. Ini harus dilakukan saat terhubung.
getBLEDeviceServices() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
my.getBLEDeviceServices({
deviceId: this.data.devid,
success: res => {
my.alert({ content: JSON.stringify(res) });
this.setData({
serid: res.services[0].serviceId,
});
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
});
},
// Dapatkan charid perangkat yang terhubung. Ini harus dilakukan saat terhubung. (Ini menyaring karakteristik baca dan tulis.)
getBLEDeviceCharacteristics() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.getBLEDeviceCharacteristics({
deviceId: this.data.devid,
serviceId: this.data.serid,
success: res => {
my.alert({ content: JSON.stringify(res) });
// Lihat dokumen untuk properti objek karakteristik. Cocokkan dan catat karakteristik baca/tulis untuk penggunaan selanjutnya.
this.setData({
charid: res.characteristics[0].characteristicId,
});
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
});
},
// Baca dan tulis data
readBLECharacteristicValue() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.readBLECharacteristicValue({
deviceId: this.data.devid,
serviceId: this.data.serid,
characteristicId: this.data.notifyId,
// 1. Layanan baca Android
// serviceId:'0000180d-0000-1000-8000-00805f9b34fb',
// characteristicId:'00002a38-0000-1000-8000-00805f9b34fb',
success: res => {
my.alert({ content: JSON.stringify(res) });
},
fail: error => {
my.alert({ content: 'Baca gagal' + JSON.stringify(error) });
},
});
},
});
},
writeBLECharacteristicValue() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.writeBLECharacteristicValue({
deviceId: this.data.devid,
serviceId: this.data.serid,
characteristicId: this.data.charid,
// Layanan tulis Android
//serviceId:'0000180d-0000-1000-8000-00805f9b34fb',
//characteristicId:'00002a39-0000-1000-8000-00805f9b34fb',
value: 'ABCD',
success: res => {
my.alert({ content: 'Data berhasil ditulis!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
});
},
notifyBLECharacteristicValueChange() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.notifyBLECharacteristicValueChange({
state: true,
deviceId: this.data.devid,
serviceId: this.data.serid,
characteristicId: this.data.notifyId,
success: () => {
// Dengarkan perubahan nilai karakteristik
my.onBLECharacteristicValueChange({
success: res => {
// my.alert({content: 'Nilai karakteristik berubah: '+JSON.stringify(res)});
my.alert({ content: 'Data respons diterima = ' + res.value });
},
});
my.alert({ content: 'Pendengar berhasil diaktifkan' });
},
fail: error => {
my.alert({ content: 'Gagal mengaktifkan pendengar' + JSON.stringify(error) });
},
});
},
});
},
offBLECharacteristicValueChange() {
my.offBLECharacteristicValueChange();
},
// Event lainnya
bluetoothAdapterStateChange() {
my.onBluetoothAdapterStateChange(this.getBind('onBluetoothAdapterStateChange'));
},
onBluetoothAdapterStateChange() {
if (res.error) {
my.alert({ content: JSON.stringify(error) });
} else {
my.alert({ content: 'Status Bluetooth lokal berubah: ' + JSON.stringify(res) });
}
},
offBluetoothAdapterStateChange() {
my.offBluetoothAdapterStateChange(this.getBind('onBluetoothAdapterStateChange'));
},
getBind(name) {
if (!this[`bind${name}`]) {
this[`bind${name}`] = this[name].bind(this);
}
return this[`bind${name}`];
},
BLEConnectionStateChanged() {
my.onBLEConnectionStateChanged(this.getBind('onBLEConnectionStateChanged'));
},
onBLEConnectionStateChanged(res) {
if (res.error) {
my.alert({ content: JSON.stringify(error) });
} else {
my.alert({ content: 'Status koneksi berubah: ' + JSON.stringify(res) });
}
},
offBLEConnectionStateChanged() {
my.offBLEConnectionStateChanged(this.getBind('onBLEConnectionStateChanged'));
},
onUnload() {
this.offBLEConnectionStateChanged();
this.offBLECharacteristicValueChange();
this.offBluetoothAdapterStateChange();
this.closeBluetoothAdapter();
},
});Bug dan tips
Bug: Jika Bluetooth pengguna dimatikan atau ponselnya tidak mendukung Bluetooth, pemanggilan
my.openBluetoothAdapterakan mengembalikan kesalahan. Untuk informasi lebih lanjut tentang kode kesalahan, lihat Tabel Kode Kesalahan API Bluetooth. Pada titik ini, modul Bluetooth miniapp sudah diinisialisasi, dan Anda dapat menggunakanmy.onBluetoothAdapterStateChangeuntuk mendengarkan perubahan status Bluetooth ponsel.Tip: Jika Anda memanggil API modul Bluetooth lain sebelum memanggil API
my.openBluetoothAdapter, kesalahan akan dikembalikan.Kode kesalahan: 10000
Deskripsi kesalahan: Adapter Bluetooth belum diinisialisasi
Solusi: Panggil
my.openBluetoothAdapter.
my.closeBluetoothAdapter
Mematikan modul Bluetooth lokal.
Parameter input
Name | Type | Required | Description |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Contoh kode
my.closeBluetoothAdapter({
success: (res) => {
},
fail:(res) => {
},
complete: (res)=>{
}
});Bug dan tips
Tip: Memanggil metode ini akan memutus semua koneksi Bluetooth yang telah dibuat dan melepaskan sumber daya sistem.
Tip: Panggil metode ini ketika proses Bluetooth miniapp berakhir. Metode ini harus dipasangkan dengan
my.openBluetoothAdapter.Tip: Pelepasan sumber daya dengan memanggil
my.closeBluetoothAdaptermerupakan operasi asinkron. Jangan gunakanmy.closeBluetoothAdapterdanmy.openBluetoothAdapterdalam alur penanganan eksepsi. Hal ini setara dengan menutup lalu membuka kembali untuk menginisialisasi ulang, yang tidak efisien dan dapat menyebabkan masalah sinkronisasi thread.
my.getBluetoothAdapterState
Mengambil status modul Bluetooth lokal.
Parameter input
Name | Type | Required | Description |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Nilai kembali sukses
Name | Type | Description |
discovering | Boolean | Apakah sedang berlangsung pencarian perangkat? |
available | Boolean | Menunjukkan apakah modul Bluetooth tersedia. Perangkat harus mendukung BLE dan memiliki Bluetooth yang diaktifkan. |
Contoh kode
my.getBluetoothAdapterState({
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});my.startBluetoothDevicesDiscovery
Memulai pencarian perangkat peripheral Bluetooth di sekitar. Hasil pencarian dikembalikan dalam event my.onBluetoothDeviceFound.
Parameter input
Name | Type | Required | Description |
services | Array | No | Daftar UUID layanan utama perangkat Bluetooth. |
allowDuplicatesKey | Boolean | No | Menentukan apakah perangkat yang sama dilaporkan beberapa kali. Jika diatur ke true, metode |
interval | Integer | No | Interval pelaporan perangkat. Nilai default-nya adalah 0, yang berarti perangkat baru dilaporkan segera setelah ditemukan. Jika tidak, perangkat dilaporkan pada interval yang ditentukan. |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Contoh kode
my.startBluetoothDevicesDiscovery({
services: ['fff0'],
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});Bug dan tips
Tip: Operasi ini mengonsumsi sumber daya sistem yang signifikan. Panggil metode
stopuntuk menghentikan pencarian setelah Anda menemukan dan menghubungkan ke perangkat.
my.stopBluetoothDevicesDiscovery
Menghentikan pencarian perangkat peripheral Bluetooth di sekitar.
Parameter input
Name | Type | Required | Description |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Contoh kode
my.stopBluetoothDevicesDiscovery({
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});my.getBluetoothDevices
Mengambil semua perangkat Bluetooth yang ditemukan, termasuk yang sudah terhubung ke perangkat lokal.
Parameter input
Name | Type | Required | Description |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Nilai kembali sukses
Name | Type | Description |
devices | Array | Daftar perangkat yang ditemukan. |
Objek Perangkat
Name | Type | Description |
name | String | Nama perangkat Bluetooth. Beberapa perangkat mungkin tidak memiliki nama. |
deviceName (untuk kompatibilitas mundur) | String | Nilainya sama dengan |
localName | String | Nama perangkat broadcast. |
deviceId | String | ID perangkat. |
RSSI | Number | Kekuatan sinyal perangkat. |
advertisData | Hex String | Konten broadcast perangkat. |
manufacturerData | Hex String | Data pabrikan perangkat. |
Contoh kode
my.getBluetoothDevices({
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});Bug dan tips
Tip: Emulator mungkin tidak dapat mengambil
advertisDatadanRSSI. Gunakan perangkat fisik untuk debugging.Tip:
deviceIdyang diperoleh dari developer tools dan Android adalah alamat MAC perangkat. Di iOS, ini adalah UUID perangkat. Oleh karena itu, jangan hard-codedeviceId. Anda harus menanganinya secara berbeda untuk setiap platform. Di iOS, Anda dapat mencocokkan perangkat secara dinamis berdasarkan propertinya, sepertilocalName,advertisData, ataumanufacturerData.
my.getConnectedBluetoothDevices
Mengambil semua perangkat yang terhubung.
Parameter input
Name | Type | Required | Description |
deviceId | String | No | ID perangkat Bluetooth. |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Contoh kode
my.getConnectedBluetoothDevices({
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});Bug dan tips
Tip: Jika miniapp sebelumnya telah menemukan perangkat Bluetooth, Anda dapat langsung meneruskan
deviceIdyang diperoleh dari pencarian untuk menghubungkan ke perangkat tanpa perlu mencari lagi.Tip: Jika perangkat Bluetooth yang ditentukan sudah terhubung, menghubungkan ulang akan langsung mengembalikan
success.
my.connectBLEDevice
Menghubungkan ke perangkat Bluetooth Low Energy (BLE).
Parameter input
Name | Type | Required | Description |
deviceId | String | Yes | ID perangkat Bluetooth. |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Contoh kode
my.connectBLEDevice({
// deviceId di sini perlu diperoleh dari API getBluetoothDevices atau onBluetoothDeviceFound.
deviceId: deviceId,
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});Bug dan tips
Tip: Jika miniapp sebelumnya telah menemukan perangkat Bluetooth, Anda dapat langsung meneruskan
deviceIdyang diperoleh dari pencarian untuk menghubungkan ke perangkat tanpa perlu mencari lagi.Tip: Jika perangkat Bluetooth yang ditentukan sudah terhubung, menghubungkan ulang akan langsung mengembalikan success.
Tip: Fitur ini didukung pada klien iOS dan klien Android 5.0 atau yang lebih baru.
my.disconnectBLEDevice
Memutus koneksi dari perangkat BLE.
Parameter input
Name | Type | Required | Description |
deviceId | String | Yes | ID perangkat Bluetooth. |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Contoh kode
my.disconnectBLEDevice({
deviceId: deviceId,
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});Bug dan tips
Tip: Koneksi Bluetooth dapat terputus kapan saja. Dengarkan event callback
my.onBLEConnectionStateChangeduntuk menyambungkan ulang jika diperlukan.Tip: Jika Anda memanggil API baca/tulis data untuk perangkat yang tidak terhubung atau terputus, kode kesalahan 10006 akan dikembalikan. Untuk informasi lebih lanjut, lihat Tabel Kode Kesalahan API Bluetooth. Kami menyarankan Anda menyambungkan ulang.
Tip: Fitur ini didukung pada klien iOS dan klien Android 5.0 atau yang lebih baru.
my.writeBLECharacteristicValue
Menulis data ke karakteristik perangkat BLE.
Parameter input
Name | Type | Required | Description |
deviceId | String | Yes | ID perangkat Bluetooth. Lihat objek |
serviceId | String | Yes | UUID |
characteristicId | String | Yes | UUID karakteristik Bluetooth. |
value | Hex String | Yes | Nilai untuk karakteristik, dalam bentuk string heksadesimal. Nilai ini dibatasi hingga 20 byte. |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Contoh kode
my.writeBLECharacteristicValue({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId,
value: 'fffe',
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});Bug dan tips
Tip: Karakteristik perangkat harus mendukung operasi tulis agar pemanggilan ini berhasil. Periksa atribut
propertiesdari karakteristik tersebut.Tip: Data biner yang akan ditulis harus di-encode dalam format heksadesimal.
Tip: Fitur ini didukung pada klien iOS dan klien Android 5.0 atau yang lebih baru.
my.readBLECharacteristicValue
Membaca data dari karakteristik perangkat BLE. Setelah pemanggilan, data dikembalikan dalam event my.onBLECharacteristicValueChange().
Parameter input
Name | Type | Required | Description |
deviceId | String | Yes | ID perangkat Bluetooth. Lihat objek |
serviceId | String | Yes | UUID |
characteristicId | String | Yes | UUID karakteristik Bluetooth. |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Nilai kembali sukses
Name | Type | Description |
characteristic | Object | Informasi karakteristik perangkat. |
objek characteristic
Informasi tentang karakteristik perangkat Bluetooth.
Name | Type | Description |
characteristicId | String | UUID karakteristik perangkat Bluetooth. |
serviceId | String | UUID layanan tempat karakteristik tersebut berada. |
value | Hex String | Nilai karakteristik perangkat Bluetooth. |
Contoh kode
my.readBLECharacteristicValue({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId,
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});Bug dan tips
Tip: Karakteristik perangkat harus mendukung operasi baca agar pemanggilan ini berhasil. Periksa atribut
propertiesdari karakteristik tersebut.Tip: Memanggil API baca dan tulis secara paralel dapat menyebabkan kegagalan.
Tip: Jika operasi baca mengalami timeout dengan kode kesalahan 10015, antarmuka
my.onBLECharacteristicValueChangemungkin tetap mengembalikan data nanti, yang harus Anda tangani sesuai. Untuk informasi lebih lanjut tentang kode kesalahan dan solusi, lihat Referensi Kode Kesalahan API Bluetooth.Tip: Fitur ini didukung pada klien iOS dan klien Android 5.0 atau yang lebih baru.
my.notifyBLECharacteristicValueChange
Mengaktifkan fitur notifikasi untuk perubahan nilai karakteristik pada perangkat BLE.
Parameter input
Name | Type | Required | Description |
deviceId | String | Yes | ID perangkat Bluetooth. Lihat objek |
serviceId | String | Yes | UUID |
characteristicId | String | Yes | UUID karakteristik Bluetooth. |
descriptorId | String | No | UUID |
state | Boolean | No | Menentukan apakah notifikasi atau indikasi diaktifkan. |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Contoh kode
my.notifyBLECharacteristicValueChange({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId,
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});Bug dan tips
Tip: Karakteristik perangkat harus mendukung notifikasi atau indikasi agar pemanggilan ini berhasil. Periksa atribut
propertiesdaricharacteristic.Tip: Anda harus mengaktifkan notifikasi sebelum dapat mendengarkan event
characteristicValueChangeperangkat.Tip: Setelah langganan berhasil, perangkat harus secara aktif memperbarui nilai karakteristik untuk memicu
my.onBLECharacteristicValueChange.Tip: Berlangganan lebih efisien daripada membaca. Kami menyarankan Anda menggunakan langganan alih-alih metode baca.
my.getBLEDeviceServices
Anda dapat mengambil semua perangkat Bluetooth yang ditemukan, termasuk yang telah terhubung ke perangkat lokal.
Parameter input
Name | Type | Required | Description |
deviceId | String | Yes | ID perangkat Bluetooth. Lihat objek |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Nilai kembali sukses
Name | Type | Description |
services | Array | Daftar layanan perangkat yang ditemukan. Lihat tabel berikut untuk informasi karakteristik. |
objek service
Informasi tentang layanan perangkat Bluetooth.
Name | Type | Description |
serviceId | String | UUID layanan perangkat Bluetooth. |
isPrimary | Boolean | Menunjukkan apakah ini adalah layanan utama.
|
Contoh kode
// Dapatkan layanan perangkat yang terhubung. Ini harus dilakukan saat terhubung.
getBLEDeviceServices() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
my.getBLEDeviceServices({
deviceId: this.data.devid,
success: res => {
my.alert({ content: JSON.stringify(res) });
this.setData({
serid: res.services[0].serviceId,
});
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
});
},Contoh nilai kembali
{
"services": [{
"isPrimary": true,
"serviceId": "00001800-0000-1000-8000-00805f9b34fb"
}, {
"isPrimary": true,
"serviceId": "00001801-0000-1000-8000-00805f9b34fb"
}, {
"isPrimary": true,
"serviceId": "d0611e78-bbb4-4591-a5f8-487910ae4366"
}, {
"isPrimary": true,
"serviceId": "9fa480e0-4967-4542-9390-d343dc5d04ae"
}]
}Bug dan tips
Tip: Setelah Anda membuat koneksi, jalankan
my.getBLEDeviceServicesdanmy.getBLEDeviceCharacteristicssebelum berinteraksi dengan perangkat Bluetooth.Tip: Fitur ini didukung pada klien iOS dan klien Android 5.0 atau yang lebih baru.
my.getBLEDeviceCharacteristics
Mengambil semua characteristics perangkat Bluetooth.
Parameter input
Name | Type | Required | Description |
deviceId | String | Yes | ID perangkat Bluetooth. Lihat objek |
serviceId | String | Yes | UUID |
success | Function | No | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | No | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | No | Fungsi callback yang dieksekusi di akhir pemanggilan, baik pemanggilan berhasil maupun gagal. |
Nilai kembali sukses
Name | Type | Description |
characteristics | Array | Daftar karakteristik perangkat. |
objek characteristic
Informasi tentang characteristic perangkat Bluetooth.
Name | Type | Description |
characteristicId | String | UUID karakteristik perangkat Bluetooth. |
serviceId | String | UUID layanan tempat karakteristik tersebut berada. |
value | Hex String | Nilai heksadesimal karakteristik perangkat Bluetooth. |
properties | Object | Operasi yang didukung oleh karakteristik ini. |
objek properties
Name | Type | Description |
read | Boolean | Menunjukkan apakah karakteristik ini mendukung operasi baca. |
write | Boolean | Menunjukkan apakah karakteristik ini mendukung operasi tulis. |
notify | Boolean | Menunjukkan apakah karakteristik ini mendukung operasi notifikasi. |
indicate | Boolean | Menunjukkan apakah karakteristik ini mendukung operasi indikasi. |
Contoh kode
my.getBLEDeviceCharacteristics({
deviceId: deviceId,
serviceId: serviceId,
success: (res) => {
console.log(res)
},
fail:(res) => {
},
complete: (res)=>{
}
});Bug dan tips
Tip: Setelah Anda membuat koneksi, jalankan
my.getBLEDeviceServicesdanmy.getBLEDeviceCharacteristicssebelum berinteraksi dengan perangkat Bluetooth.Tip: Fitur ini didukung pada klien iOS dan klien Android 5.0 atau yang lebih baru.
my.onBluetoothDeviceFound(callback)
Event ini dipicu ketika perangkat Bluetooth baru ditemukan.
Parameter input
Name | Type | Required | Description |
callback | Function | Yes | Fungsi callback untuk event tersebut. |
Nilai kembali callback
Name | Type | Description |
devices | Array | Daftar perangkat yang baru ditemukan. |
Objek perangkat
Name | Type | Description |
name | String | Nama perangkat Bluetooth. Beberapa perangkat mungkin tidak memiliki nama. |
deviceName (untuk kompatibilitas mundur) | String | Nilainya sama dengan |
localName | String | Nama perangkat broadcast. |
deviceId | String | ID perangkat. |
RSSI | Number | Kekuatan sinyal perangkat. |
advertisData | Hex String | Konten broadcast perangkat. |
Contoh kode
Page({
onLoad() {
this.callback = this.callback.bind(this);
my.onBluetoothDeviceFound(this.callback);
},
onUnload() {
my.offBluetoothDeviceFound(this.callback);
},
callback(res) {
console.log(res);
},
})Bug dan tips
Tip: Emulator mungkin tidak dapat mengambil
advertisDatadanRSSI. Gunakan perangkat fisik untuk debugging.Tip: `deviceId` yang diperoleh dari developer tools adalah alamat MAC perangkat di Android, sedangkan di iOS adalah UUID perangkat. Oleh karena itu, jangan hard-code `deviceId`. Anda harus menanganinya secara berbeda untuk setiap platform. Di iOS, Anda dapat mencocokkan perangkat secara dinamis berdasarkan propertinya, seperti
localName,advertisData, ataumanufacturerData.Tip: Saat callback
my.onBluetoothDeviceFoundmenemukan perangkat Bluetooth, perangkat tersebut ditambahkan ke array yang dikembalikan oleh APImy.getBluetoothDevices.
my.offBluetoothDeviceFound
Menghapus pendengar untuk event penemuan perangkat Bluetooth baru.
Contoh kode
my.offBluetoothDeviceFound();Apakah perlu meneruskan nilai callback?
Jika Anda tidak meneruskan nilai callback, semua pendengar untuk event ini dihapus. Kode berikut memberikan contohnya:
my.offBluetoothDeviceFound();Jika Anda meneruskan nilai callback, hanya pendengar yang sesuai yang dihapus. Kode berikut memberikan contohnya:
my.offBluetoothDeviceFound(this.callback);
Bug dan tips
Tip: Untuk mencegah banyak callback untuk event yang sama, panggil metode
offuntuk menghapus pendengar yang ada sebelum memanggil metodeon.
my.onBLECharacteristicValueChange(callback)
Mendengarkan perubahan nilai karakteristik pada perangkat BLE.
Parameter input
Name | Type | Required | Description |
callback | Function | Yes | Fungsi callback event. |
Nilai kembali callback
Name | Type | Description |
deviceId | String | ID perangkat Bluetooth. Lihat objek |
connected | Boolean | Status koneksi saat ini. |
Contoh kode
Page({
onLoad() {
this.callback = this.callback.bind(this);
my.onBLECharacteristicValueChange(this.callback);
},
onUnload() {
my.offBLECharacteristicValueChange(this.callback);
},
callback(res) {
console.log(res);
},
})Bug dan tips
Tip: Untuk mencegah banyak callback untuk satu event, panggil metode
offuntuk menghapus pendengar yang ada sebelum memanggil metodeon.
my.offBLECharacteristicValueChange
Menghapus pendengar untuk perubahan nilai karakteristik pada perangkat BLE.
Parameter input
Tipe datanya adalah fungsi callback yang parameter inputnya berupa Object dengan properti berikut:
Property | Type | Description |
deviceId | String | ID perangkat Bluetooth. Lihat objek |
serviceId | String | UUID |
characteristicId | String | UUID karakteristik Bluetooth. |
value | Hex String | Nilai heksadesimal terbaru dari karakteristik. |
Meneruskan nilai callback
Jika Anda tidak meneruskan nilai callback, semua pendengar untuk event ini dihapus. Kode berikut memberikan contohnya:
my.offBLECharacteristicValueChange();Jika Anda meneruskan nilai callback, hanya pendengar yang sesuai yang dihapus. Kode berikut memberikan contohnya:
my.offBLECharacteristicValueChange(this.callback);
Contoh kode
Page({
onLoad() {
this.callback = this.callback.bind(this);
my.onBLECharacteristicValueChange(this.callback);
},
onUnload() {
my.offBLECharacteristicValueChange(this.callback);
},
callback(res) {
console.log(res);
},
})my.onBLEConnectionStateChanged(callback)
Mendengarkan event perubahan status koneksi BLE, termasuk kehilangan perangkat dan pemutusan koneksi yang tidak normal.
Parameter input
Name | Type | Required | Description |
callback | Function | Yes | Fungsi callback event. |
Nilai kembali callback
Name | Type | Description |
deviceId | String | ID perangkat Bluetooth. Lihat objek |
connected | Boolean | Status koneksi saat ini. |
Contoh kode
/* .acss */
.help-info {
padding:10px;
color:#000000;
}
.help-title {
padding:10px;
color:#FC0D1B;
}// .json
{
"defaultTitle": "Bluetooth"
}<!-- .axml-->
<view class="page">
<view class="page-description">API Bluetooth</view>
<view class="page-section">
<view class="page-section-title">Status adapter Bluetooth lokal</view>
<view class="page-section-demo">
<button type="primary" onTap="openBluetoothAdapter">Inisialisasi Bluetooth</button>
<button type="primary" onTap="closeBluetoothAdapter">Tutup Bluetooth lokal</button>
<button type="primary" onTap="getBluetoothAdapterState">Dapatkan status Bluetooth</button>
</view>
<view class="page-section-title">Pindai perangkat Bluetooth</view>
<view class="page-section-demo">
<button type="primary" onTap="startBluetoothDevicesDiscovery">Mulai pencarian</button>
<button type="primary" onTap="getBluetoothDevices">Semua perangkat yang ditemukan</button>
<button type="primary" onTap="getConnectedBluetoothDevices">Semua perangkat yang terhubung</button>
<button type="primary" onTap="stopBluetoothDevicesDiscovery">Hentikan pencarian</button>
</view>
<view class="page-section-title">Hubungkan ke perangkat</view>
<view class="page-section-demo">
<input class="input" onInput="bindKeyInput" type="{{text}}" placeholder="Masukkan deviceId perangkat yang akan dihubungkan"></input>
<button type="primary" onTap="connectBLEDevice">Hubungkan ke perangkat</button>
<button type="primary" onTap="getBLEDeviceServices">Dapatkan layanan perangkat</button>
<button type="primary" onTap="getBLEDeviceCharacteristics">Dapatkan karakteristik baca/tulis</button>
<button type="primary" onTap="disconnectBLEDevice">Putuskan koneksi dari perangkat</button>
</view>
<view class="page-section-title">Baca dan tulis data</view>
<view class="page-section-demo">
<button type="primary" onTap="notifyBLECharacteristicValueChange">Dengarkan perubahan nilai karakteristik</button>
<button type="primary" onTap="readBLECharacteristicValue">Baca data</button>
<button type="primary" onTap="writeBLECharacteristicValue">Tulis data</button>
<button type="primary" onTap="offBLECharacteristicValueChange">Batalkan pendengar nilai karakteristik</button>
</view>
<view class="page-section-title">Event lainnya</view>
<view class="page-section-demo">
<button type="primary" onTap="bluetoothAdapterStateChange">Perubahan status Bluetooth lokal</button>
<button type="primary" onTap="offBluetoothAdapterStateChange">Batalkan pendengar status Bluetooth lokal</button>
<button type="primary" onTap="BLEConnectionStateChanged">Perubahan status koneksi Bluetooth</button>
<button type="primary" onTap="offBLEConnectionStateChanged">Batalkan pendengar status koneksi Bluetooth</button>
</view>
</view>
</view>// .js
Page({
data: {
devid: '0D9C82AD-1CC0-414D-9526-119E08D28124',
serid: 'FEE7',
notifyId: '36F6',
writeId: '36F5',
charid: '',
alldev: [{ deviceId: '' }],
},
// Dapatkan status adapter Bluetooth lokal
openBluetoothAdapter() {
my.openBluetoothAdapter({
success: res => {
if (!res.isSupportBLE) {
my.alert({ content: 'Maaf, Bluetooth tidak tersedia di ponsel Anda.' });
return;
}
my.alert({ content: 'Inisialisasi berhasil!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
closeBluetoothAdapter() {
my.closeBluetoothAdapter({
success: () => {
my.alert({ content: 'Bluetooth berhasil ditutup!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
getBluetoothAdapterState() {
my.getBluetoothAdapterState({
success: res => {
if (!res.available) {
my.alert({ content: 'Maaf, Bluetooth tidak tersedia di ponsel Anda.' });
return;
}
my.alert({ content: JSON.stringify(res) });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Pindai perangkat Bluetooth
startBluetoothDevicesDiscovery() {
my.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false,
success: () => {
my.onBluetoothDeviceFound({
success: res => {
// my.alert({content:'Mendengarkan perangkat baru'+JSON.stringify(res)});
var deviceArray = res.devices;
for (var i = deviceArray.length - 1; i >= 0; i--) {
var deviceObj = deviceArray[i];
// Cocokkan perangkat target berdasarkan nama perangkat atau data broadcast, lalu catat deviceID untuk penggunaan selanjutnya
if (deviceObj.name == this.data.name) {
my.alert({ content: 'Perangkat target ditemukan' });
my.offBluetoothDeviceFound();
this.setData({
deviceId: deviceObj.deviceId,
});
break;
}
}
},
fail: error => {
my.alert({ content: 'Gagal mendengarkan perangkat baru' + JSON.stringify(error) });
},
});
},
fail: error => {
my.alert({ content: 'Gagal memulai pemindaian' + JSON.stringify(error) });
},
});
},
// Hentikan pemindaian
stopBluetoothDevicesDiscovery() {
my.stopBluetoothDevicesDiscovery({
success: res => {
my.offBluetoothDeviceFound();
my.alert({ content: 'Operasi berhasil!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Dapatkan perangkat yang terhubung
getConnectedBluetoothDevices() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung!' });
return;
}
my.alert({ content: JSON.stringify(res) });
devid = res.devices[0].deviceId;
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Dapatkan semua perangkat yang ditemukan
getBluetoothDevices() {
my.getBluetoothDevices({
success: res => {
my.alert({ content: JSON.stringify(res) });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
bindKeyInput(e) {
this.setData({
devid: e.detail.value,
});
},
// Hubungkan ke perangkat
connectBLEDevice() {
my.connectBLEDevice({
deviceId: this.data.devid,
success: res => {
my.alert({ content: 'Koneksi berhasil' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Putuskan koneksi
disconnectBLEDevice() {
my.disconnectBLEDevice({
deviceId: this.data.devid,
success: () => {
my.alert({ content: 'Koneksi berhasil diputus!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Dapatkan layanan perangkat yang terhubung. Ini harus dilakukan saat terhubung.
getBLEDeviceServices() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
my.getBLEDeviceServices({
deviceId: this.data.devid,
success: res => {
my.alert({ content: JSON.stringify(res) });
this.setData({
serid: res.services[0].serviceId,
});
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
});
},
// Dapatkan charid perangkat yang terhubung. Ini harus dilakukan saat terhubung. (Ini menyaring karakteristik baca dan tulis.)
getBLEDeviceCharacteristics() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.getBLEDeviceCharacteristics({
deviceId: this.data.devid,
serviceId: this.data.serid,
success: res => {
my.alert({ content: JSON.stringify(res) });
// Lihat dokumen untuk properti objek karakteristik. Cocokkan dan catat karakteristik baca/tulis untuk penggunaan selanjutnya.
this.setData({
charid: res.characteristics[0].characteristicId,
});
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
});
},
// Baca dan tulis data
readBLECharacteristicValue() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.readBLECharacteristicValue({
deviceId: this.data.devid,
serviceId: this.data.serid,
characteristicId: this.data.notifyId,
// 1. Layanan baca Android
// serviceId:'0000180d-0000-1000-8000-00805f9b34fb',
// characteristicId:'00002a38-0000-1000-8000-00805f9b34fb',
success: res => {
my.alert({ content: JSON.stringify(res) });
},
fail: error => {
my.alert({ content: 'Baca gagal' + JSON.stringify(error) });
},
});
},
});
},
writeBLECharacteristicValue() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.writeBLECharacteristicValue({
deviceId: this.data.devid,
serviceId: this.data.serid,
characteristicId: this.data.charid,
// Layanan tulis Android
//serviceId:'0000180d-0000-1000-8000-00805f9b34fb',
//characteristicId:'00002a39-0000-1000-8000-00805f9b34fb',
value: 'ABCD',
success: res => {
my.alert({ content: 'Data berhasil ditulis!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
});
},
notifyBLECharacteristicValueChange() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.notifyBLECharacteristicValueChange({
state: true,
deviceId: this.data.devid,
serviceId: this.data.serid,
characteristicId: this.data.notifyId,
success: () => {
// Dengarkan perubahan nilai karakteristik
my.onBLECharacteristicValueChange({
success: res => {
// my.alert({content: 'Nilai karakteristik berubah: '+JSON.stringify(res)});
my.alert({ content: 'Data respons diterima = ' + res.value });
},
});
my.alert({ content: 'Pendengar berhasil diaktifkan' });
},
fail: error => {
my.alert({ content: 'Gagal mengaktifkan pendengar' + JSON.stringify(error) });
},
});
},
});
},
offBLECharacteristicValueChange() {
my.offBLECharacteristicValueChange();
},
// Event lainnya
bluetoothAdapterStateChange() {
my.onBluetoothAdapterStateChange(this.getBind('onBluetoothAdapterStateChange'));
},
onBluetoothAdapterStateChange() {
if (res.error) {
my.alert({ content: JSON.stringify(error) });
} else {
my.alert({ content: 'Status Bluetooth lokal berubah: ' + JSON.stringify(res) });
}
},
offBluetoothAdapterStateChange() {
my.offBluetoothAdapterStateChange(this.getBind('onBluetoothAdapterStateChange'));
},
getBind(name) {
if (!this[`bind${name}`]) {
this[`bind${name}`] = this[name].bind(this);
}
return this[`bind${name}`];
},
BLEConnectionStateChanged() {
my.onBLEConnectionStateChanged(this.getBind('onBLEConnectionStateChanged'));
},
onBLEConnectionStateChanged(res) {
if (res.error) {
my.alert({ content: JSON.stringify(error) });
} else {
my.alert({ content: 'Status koneksi berubah: ' + JSON.stringify(res) });
}
},
offBLEConnectionStateChanged() {
my.offBLEConnectionStateChanged(this.getBind('onBLEConnectionStateChanged'));
},
onUnload() {
this.offBLEConnectionStateChanged();
this.offBLECharacteristicValueChange();
this.offBluetoothAdapterStateChange();
this.closeBluetoothAdapter();
},
});Bug dan tips
Tip: Untuk mencegah banyak callback untuk satu event, panggil metode
offuntuk menghapus pendengar sebelumnya sebelum memanggil metodeon.
my.offBLEConnectionStateChanged
Menghapus pendengar untuk perubahan status koneksi BLE.
Contoh kode
my.offBLEConnectionStateChanged();Apakah perlu meneruskan nilai callback?
Jika Anda tidak meneruskan nilai callback, semua pendengar untuk event ini dihapus. Kode berikut memberikan contohnya:
my.offBLEConnectionStateChanged();Jika Anda meneruskan nilai callback, hanya pendengar yang sesuai yang dihapus. Kode berikut memberikan contohnya:
my.offBLEConnectionStateChanged(this.callback);
Bug dan tips
Tip: Untuk mencegah banyak callback untuk satu event, panggil metode
offuntuk menghapus pendengar sebelumnya sebelum memanggil metodeon.
my.onBluetoothAdapterStateChange(callback)
Mendengarkan perubahan status adapter Bluetooth lokal.
Parameter input
Name | Type | Required | Description |
callback | Function | Yes | Fungsi callback event. |
Nilai kembali callback
Name | Type | Description |
available | Boolean | Apakah modul Bluetooth aktif? |
discovering | Boolean | Menunjukkan apakah modul Bluetooth sedang dalam status pencarian. |
Contoh kode
/* .acss */
.help-info {
padding:10px;
color:#000000;
}
.help-title {
padding:10px;
color:#FC0D1B;
}// .json
{
"defaultTitle": "Bluetooth"
}<!-- .axml-->
<view class="page">
<view class="page-description">API Bluetooth</view>
<view class="page-section">
<view class="page-section-title">Status adapter Bluetooth lokal</view>
<view class="page-section-demo">
<button type="primary" onTap="openBluetoothAdapter">Inisialisasi Bluetooth</button>
<button type="primary" onTap="closeBluetoothAdapter">Tutup Bluetooth lokal</button>
<button type="primary" onTap="getBluetoothAdapterState">Dapatkan status Bluetooth</button>
</view>
<view class="page-section-title">Pindai perangkat Bluetooth</view>
<view class="page-section-demo">
<button type="primary" onTap="startBluetoothDevicesDiscovery">Mulai pencarian</button>
<button type="primary" onTap="getBluetoothDevices">Semua perangkat yang ditemukan</button>
<button type="primary" onTap="getConnectedBluetoothDevices">Semua perangkat yang terhubung</button>
<button type="primary" onTap="stopBluetoothDevicesDiscovery">Hentikan pencarian</button>
</view>
<view class="page-section-title">Hubungkan ke perangkat</view>
<view class="page-section-demo">
<input class="input" onInput="bindKeyInput" type="{{text}}" placeholder="Masukkan deviceId perangkat yang akan dihubungkan"></input>
<button type="primary" onTap="connectBLEDevice">Hubungkan ke perangkat</button>
<button type="primary" onTap="getBLEDeviceServices">Dapatkan layanan perangkat</button>
<button type="primary" onTap="getBLEDeviceCharacteristics">Dapatkan karakteristik baca/tulis</button>
<button type="primary" onTap="disconnectBLEDevice">Putuskan koneksi dari perangkat</button>
</view>
<view class="page-section-title">Baca dan tulis data</view>
<view class="page-section-demo">
<button type="primary" onTap="notifyBLECharacteristicValueChange">Dengarkan perubahan nilai karakteristik</button>
<button type="primary" onTap="readBLECharacteristicValue">Baca data</button>
<button type="primary" onTap="writeBLECharacteristicValue">Tulis data</button>
<button type="primary" onTap="offBLECharacteristicValueChange">Batalkan pendengar nilai karakteristik</button>
</view>
<view class="page-section-title">Event lainnya</view>
<view class="page-section-demo">
<button type="primary" onTap="bluetoothAdapterStateChange">Perubahan status Bluetooth lokal</button>
<button type="primary" onTap="offBluetoothAdapterStateChange">Batalkan pendengar status Bluetooth lokal</button>
<button type="primary" onTap="BLEConnectionStateChanged">Perubahan status koneksi Bluetooth</button>
<button type="primary" onTap="offBLEConnectionStateChanged">Batalkan pendengar status koneksi Bluetooth</button>
</view>
</view>
</view>// .js
Page({
data: {
devid: '0D9C82AD-1CC0-414D-9526-119E08D28124',
serid: 'FEE7',
notifyId: '36F6',
writeId: '36F5',
charid: '',
alldev: [{ deviceId: '' }],
},
// Dapatkan status adapter Bluetooth lokal
openBluetoothAdapter() {
my.openBluetoothAdapter({
success: res => {
if (!res.isSupportBLE) {
my.alert({ content: 'Maaf, Bluetooth tidak tersedia di ponsel Anda.' });
return;
}
my.alert({ content: 'Inisialisasi berhasil!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
closeBluetoothAdapter() {
my.closeBluetoothAdapter({
success: () => {
my.alert({ content: 'Bluetooth berhasil ditutup!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
getBluetoothAdapterState() {
my.getBluetoothAdapterState({
success: res => {
if (!res.available) {
my.alert({ content: 'Maaf, Bluetooth tidak tersedia di ponsel Anda.' });
return;
}
my.alert({ content: JSON.stringify(res) });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Pindai perangkat Bluetooth
startBluetoothDevicesDiscovery() {
my.startBluetoothDevicesDiscovery({
allowDuplicatesKey: false,
success: () => {
my.onBluetoothDeviceFound({
success: res => {
// my.alert({content:'Mendengarkan perangkat baru'+JSON.stringify(res)});
var deviceArray = res.devices;
for (var i = deviceArray.length - 1; i >= 0; i--) {
var deviceObj = deviceArray[i];
// Cocokkan perangkat target berdasarkan nama perangkat atau data broadcast, lalu catat deviceID untuk penggunaan selanjutnya
if (deviceObj.name == this.data.name) {
my.alert({ content: 'Perangkat target ditemukan' });
my.offBluetoothDeviceFound();
this.setData({
deviceId: deviceObj.deviceId,
});
break;
}
}
},
fail: error => {
my.alert({ content: 'Gagal mendengarkan perangkat baru' + JSON.stringify(error) });
},
});
},
fail: error => {
my.alert({ content: 'Gagal memulai pemindaian' + JSON.stringify(error) });
},
});
},
// Hentikan pemindaian
stopBluetoothDevicesDiscovery() {
my.stopBluetoothDevicesDiscovery({
success: res => {
my.offBluetoothDeviceFound();
my.alert({ content: 'Operasi berhasil!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Dapatkan perangkat yang terhubung
getConnectedBluetoothDevices() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung!' });
return;
}
my.alert({ content: JSON.stringify(res) });
devid = res.devices[0].deviceId;
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Dapatkan semua perangkat yang ditemukan
getBluetoothDevices() {
my.getBluetoothDevices({
success: res => {
my.alert({ content: JSON.stringify(res) });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
bindKeyInput(e) {
this.setData({
devid: e.detail.value,
});
},
// Hubungkan ke perangkat
connectBLEDevice() {
my.connectBLEDevice({
deviceId: this.data.devid,
success: res => {
my.alert({ content: 'Koneksi berhasil' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Putuskan koneksi
disconnectBLEDevice() {
my.disconnectBLEDevice({
deviceId: this.data.devid,
success: () => {
my.alert({ content: 'Koneksi berhasil diputus!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
// Dapatkan layanan perangkat yang terhubung. Ini harus dilakukan saat terhubung.
getBLEDeviceServices() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
my.getBLEDeviceServices({
deviceId: this.data.devid,
success: res => {
my.alert({ content: JSON.stringify(res) });
this.setData({
serid: res.services[0].serviceId,
});
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
});
},
// Dapatkan charid perangkat yang terhubung. Ini harus dilakukan saat terhubung. (Ini menyaring karakteristik baca dan tulis.)
getBLEDeviceCharacteristics() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.getBLEDeviceCharacteristics({
deviceId: this.data.devid,
serviceId: this.data.serid,
success: res => {
my.alert({ content: JSON.stringify(res) });
// Lihat dokumen untuk properti objek karakteristik. Cocokkan dan catat karakteristik baca/tulis untuk penggunaan selanjutnya.
this.setData({
charid: res.characteristics[0].characteristicId,
});
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
});
},
// Baca dan tulis data
readBLECharacteristicValue() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.readBLECharacteristicValue({
deviceId: this.data.devid,
serviceId: this.data.serid,
characteristicId: this.data.notifyId,
// 1. Layanan baca Android
// serviceId:'0000180d-0000-1000-8000-00805f9b34fb',
// characteristicId:'00002a38-0000-1000-8000-00805f9b34fb',
success: res => {
my.alert({ content: JSON.stringify(res) });
},
fail: error => {
my.alert({ content: 'Baca gagal' + JSON.stringify(error) });
},
});
},
});
},
writeBLECharacteristicValue() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.writeBLECharacteristicValue({
deviceId: this.data.devid,
serviceId: this.data.serid,
characteristicId: this.data.charid,
// Layanan tulis Android
//serviceId:'0000180d-0000-1000-8000-00805f9b34fb',
//characteristicId:'00002a39-0000-1000-8000-00805f9b34fb',
value: 'ABCD',
success: res => {
my.alert({ content: 'Data berhasil ditulis!' });
},
fail: error => {
my.alert({ content: JSON.stringify(error) });
},
});
},
});
},
notifyBLECharacteristicValueChange() {
my.getConnectedBluetoothDevices({
success: res => {
if (res.devices.length === 0) {
my.alert({ content: 'Tidak ada perangkat yang terhubung' });
return;
}
this.setData({
devid: res.devices[0].deviceId,
});
my.notifyBLECharacteristicValueChange({
state: true,
deviceId: this.data.devid,
serviceId: this.data.serid,
characteristicId: this.data.notifyId,
success: () => {
// Dengarkan perubahan nilai karakteristik
my.onBLECharacteristicValueChange({
success: res => {
// my.alert({content: 'Nilai karakteristik berubah: '+JSON.stringify(res)});
my.alert({ content: 'Data respons diterima = ' + res.value });
},
});
my.alert({ content: 'Pendengar berhasil diaktifkan' });
},
fail: error => {
my.alert({ content: 'Gagal mengaktifkan pendengar' + JSON.stringify(error) });
},
});
},
});
},
offBLECharacteristicValueChange() {
my.offBLECharacteristicValueChange();
},
// Event lainnya
bluetoothAdapterStateChange() {
my.onBluetoothAdapterStateChange(this.getBind('onBluetoothAdapterStateChange'));
},
onBluetoothAdapterStateChange() {
if (res.error) {
my.alert({ content: JSON.stringify(error) });
} else {
my.alert({ content: 'Status Bluetooth lokal berubah: ' + JSON.stringify(res) });
}
},
offBluetoothAdapterStateChange() {
my.offBluetoothAdapterStateChange(this.getBind('onBluetoothAdapterStateChange'));
},
getBind(name) {
if (!this[`bind${name}`]) {
this[`bind${name}`] = this[name].bind(this);
}
return this[`bind${name}`];
},
BLEConnectionStateChanged() {
my.onBLEConnectionStateChanged(this.getBind('onBLEConnectionStateChanged'));
},
onBLEConnectionStateChanged(res) {
if (res.error) {
my.alert({ content: JSON.stringify(error) });
} else {
my.alert({ content: 'Status koneksi berubah: ' + JSON.stringify(res) });
}
},
offBLEConnectionStateChanged() {
my.offBLEConnectionStateChanged(this.getBind('onBLEConnectionStateChanged'));
},
onUnload() {
this.offBLEConnectionStateChanged();
this.offBLECharacteristicValueChange();
this.offBluetoothAdapterStateChange();
this.closeBluetoothAdapter();
},
});my.offBluetoothAdapterStateChange
Menghapus pendengar untuk perubahan status Bluetooth lokal.
Contoh kode
my.offBluetoothAdapterStateChange();Apakah perlu meneruskan nilai callback?
Jika Anda tidak meneruskan nilai callback, semua pendengar untuk event ini dihapus. Kode berikut memberikan contohnya:
my.offBluetoothAdapterStateChange();Jika Anda meneruskan nilai callback, hanya pendengar yang sesuai yang dihapus. Kode berikut memberikan contohnya:
my.offBluetoothAdapterStateChange(this.callback);
Bug dan tips
Tip: Untuk mencegah callback ganda untuk suatu event, panggil metode
offuntuk menghapus pendengar yang ada sebelum memanggil metodeon.