All Products
Search
Document Center

Mobile Platform as a Service:Daftar API Bluetooth

Last Updated:Jan 28, 2026

Catatan
  • 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.openBluetoothAdapter akan 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 menggunakan my.onBluetoothAdapterStateChange untuk 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.closeBluetoothAdapter merupakan operasi asinkron. Jangan gunakan my.closeBluetoothAdapter dan my.openBluetoothAdapter dalam 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 onBluetoothDeviceFound mungkin melaporkan perangkat yang sama beberapa kali, tetapi dengan nilai RSSI yang berbeda.

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 stop untuk 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 name.

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 advertisData dan RSSI. Gunakan perangkat fisik untuk debugging.

  • Tip: deviceId yang diperoleh dari developer tools dan Android adalah alamat MAC perangkat. Di iOS, ini 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, atau manufacturerData.

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 deviceId yang 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 deviceId yang 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.onBLEConnectionStateChanged untuk 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 device.

serviceId

String

Yes

UUID service tempat karakteristik tersebut berada.

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 properties dari 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 device.

serviceId

String

Yes

UUID service tempat karakteristik tersebut berada.

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 properties dari 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.onBLECharacteristicValueChange mungkin 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 device.

serviceId

String

Yes

UUID service tempat karakteristik tersebut berada.

characteristicId

String

Yes

UUID karakteristik Bluetooth.

descriptorId

String

No

UUID notify descriptor. Ini hanya digunakan di Android dan tidak wajib. Nilai default-nya adalah 00002902-0000-10008000-00805f9b34fb.

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 properties dari characteristic.

  • Tip: Anda harus mengaktifkan notifikasi sebelum dapat mendengarkan event characteristicValueChange perangkat.

  • 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 device.

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.

  • Nilai true menunjukkan layanan utama.

  • false: Bukan 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.getBLEDeviceServices dan my.getBLEDeviceCharacteristics sebelum 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 device.

serviceId

String

Yes

UUID service tempat karakteristik tersebut berada.

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.getBLEDeviceServices dan my.getBLEDeviceCharacteristics sebelum 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 name.

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 advertisData dan RSSI. 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, atau manufacturerData.

  • Tip: Saat callback my.onBluetoothDeviceFound menemukan perangkat Bluetooth, perangkat tersebut ditambahkan ke array yang dikembalikan oleh API my.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 off untuk menghapus pendengar yang ada sebelum memanggil metode on.

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 device.

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 off untuk menghapus pendengar yang ada sebelum memanggil metode on.

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 device.

serviceId

String

UUID service tempat karakteristik tersebut berada.

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 device.

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 off untuk menghapus pendengar sebelumnya sebelum memanggil metode on.

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 off untuk menghapus pendengar sebelumnya sebelum memanggil metode on.

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 off untuk menghapus pendengar yang ada sebelum memanggil metode on.