Android BLE 개발 입문부터 진급까지(둘)

2857 단어
통신 프로세스
1. 메인 기기 APP 검색, 주변 스마트 기기 검색2.BLE Bluetooth 연결 설정 3.BLE Bluetooth 연결 기반 데이터 통신
첫 번째 단계는 권한을 추가하고 6.0 이상이면 직접 권한을 신청합니다. 메인 장치 안드로이드4.3+(API Level>=18) 두 번째 단계는 블루투스 어댑터 Bluetooth Manager bluetooth Manager = (Bluetooth Manager) this를 획득합니다.getSystemService(Context.BLUETOOTH_SERVICE); BluetoothAdapter mBtAdapter = bluetoothManager.getAdapter();
세 번째 단계에서는 검색을 시작합니다//10초 후 검색을 중지합니다.private static final long SCAN_PERIOD = 10000; mHandler.postDelayed(new Runnable() { @Override public void run() { mBtAdapter .stopLeScan(DeviceScanActivity.this.mLeScanCallback); invalidateOptionsMenu(); } }, SCAN_PERIOD); mBtAdapter .startLeScan(DeviceScanActivity.this.mLeScanCallback); 검색 결과는 이 mLeScanCallback 인터페이스를 통해 반환됩니다.
//UI 인터페이스 private Bluetooth Adapter를 업데이트하기 위해 장치 정보를 검색하여 주 경로로 업데이트합니다.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { runOnUiThread(new Runnable() { @Override public void run() { mLeDeviceListAdapter.addDevice(device); mLeDeviceListAdapter.notifyDataSetChanged(); } }); } };
세 번째 연결(실제 프로젝트에서 개발되고 블루투스의 각종 조작은 서비스에 놓여 편폭이 제한되어 간략하게 쓰여진다) Bluetooth Gatt m Bluetooth Gatt = device.connectGatt(this, false, mGattCallback); 연결 상태는 인터페이스를 통해//GATT 값을 되돌려줍니다. 예를 들어 연결 상태와 서비스의 변경 사항 etc private final Bluetooth Gatt Callback m Gatt Callback = new Bluetooth Gatt Callback () {//연결 상태 변경 @ Override public void on Connection State Change (Bluettooth Gatt gatt, int status, int new State)
        if (newState == BluetoothProfile.STATE_CONNECTED) {
                //   

        } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                //   
        }
    }

    //    
    @Override
    public void onServicesDiscovered(BluetoothGatt gatt, int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
        //         service          charactertictis
           gatt.getServices();
    }

    //  
    @Override
    public void onCharacteristicRead(BluetoothGatt gatt,
                                     BluetoothGattCharacteristic characteristic,
                                     int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
            broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
           // number += 1;
        }
    }

    //    
    @Override
    public void onCharacteristicChanged(BluetoothGatt gatt,
                                        BluetoothGattCharacteristic characteristic) {
        broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
 
    }

    //    
    @Override
    public void onCharacteristicWrite (BluetoothGatt gatt,
                                       BluetoothGattCharacteristic characteristic,
                                       int status){
    
    }
};

좋은 웹페이지 즐겨찾기