Tag Archives: startLeScan

เริ่มต้นพัฒนา iBeacon App บน Android

ขั้นตอนแบบคร่าว ๆ

  1. สร้างโปรเจคใหม่ กำหนด Minimum SDK เป็น 18 ขึ้นไป
  2. เพิ่ม
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

    ใน AndroidManifest.xml

  3. หากต้องการให้อุปกรณ์ที่มีคุณบัติ BLE เท่านั้นที่จะติดตั้ง App นี้ได้ ให้ใส่
    <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>

    ในไฟล์ code>AndroidManifest.xml

  4. เตรียมออบเจ็ค BluetoothAdapter
    final BluetoothManager bluetoothManager =
            (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
    mBluetoothAdapter = bluetoothManager.getAdapter();
  5. ตรวจสอบว่าบลูทูธเปิดอยู่หรือไม่ หากยังไม่เปิด ให้พาไปเปิด หรือบังคับเปิด
    if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    }

    ถ้าบังคับเปิด

    mBluetoothAdapter.enable()
  6. เริ่ม scan โดยใช้ mBluetoothAdapter.startLeScan(mLeScanCallback) ตัวอย่าง
    mBluetoothAdapter.startLeScan(new BluetoothAdapter.LeScanCallback() {
        @Override
        public void onLeScan(final BluetoothDevice device, int rssi,
                byte[] scanRecord) {
            Log.d(TAG, "Found beacon " + device.getAddress());
       });
  7. ยังไงควรตั้งเวลาหยุด scan ไว้ด้วย เพราะการ scan ตลอดเวลาจะกินแบตมาก การหยุดใช้ mBluetoothAdapter.stopLeScan(mLeScanCallback)

ที่มา: developer.android.com