2017-09-22 4 views
0

특정 특성에 쓸 수있는 간단한 애플리케이션을 작성했습니다. Google example - https://github.com/googlesamples/android-BluetoothLeGatt에서 내 앱을 기반으로했습니다. 연결시 특정 특성에 바이트를 쓸 수있는 버튼을 추가했습니다.안드로이드 - BLE 모듈이 연결 시간이 몇 초 후에 더 오래 사용 중임

이제 몇 초 (항상 5 미만) 동안 연결 한 후 제대로 작동하지만 writeCharacteristic 함수 (false)를 반환하기 시작합니다. 내가 디버깅을하고 그 장치가 바쁜 것으로 밝혀졌습니다. 나는 성공적으로 writeCharacteristic을 1.5 초마다 호출 할 수 있는데, 이는 연결의 처음 몇 초 동안의 지연이 매우 느리다는 것과 비교된다. 장치가 바로 응답이 보류 중임을 의미합니까 "사용 중"임을

public void onClick(View v) { 
    byte value[] = {0}; 
    switch (v.getId()) { 

     case R.id.button1: 
      value[0] = 1; 
      mBulbCharacteristic.setValue(value); 
      mBluetoothLeService.writeCharacteristic(mBulbCharacteristic); 
      break; 

     case R.id.button2: 
      value[0] = 2; 
      mBulbCharacteristic.setValue(value); 
      mBluetoothLeService.writeCharacteristic(mBulbCharacteristic); 
      break; 

     case R.id.button3: 
      value[0] = 3; 
      mBulbCharacteristic.setValue(value); 
      mBluetoothLeService.writeCharacteristic(mBulbCharacteristic); 
      break; 

     default: 
      break; 
    } 

} 

답변

1

:

여기에 온 클릭 기능을 가진 나의 조각이다. Android API를 사용하려면 새 요청을 발행 한 후 해당 콜백 (예 : 쓰기의 경우 OnCharacteristicWrite)을 기다려야합니다. 시간이 너무 오래 걸리면 연결 간격을 줄일 수 있습니다.

+0

실제로 연결 간격이 길다는 것을 알았습니다. 아마도 처음 몇 초 동안 그것은 협상 과정 때문에 더 낮았을 것입니다. +1 아직도 –