2017-09-22 23 views
0

特定の特性に書き込むことができる簡単なアプリケーションを作成しました。私はgoogle example - https://github.com/googlesamples/android-BluetoothLeGattに私のアプリケーションを基づいています。私は、接続時に特定の特性にバイトを書き込む可能性を与えるボタンを追加しました。Android - BLEモジュールは接続数秒後にビジー状態です

今私が気づいたのは、数秒(常に5未満)の接続後、正常に動作しますが、関数writeCharacteristic(https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#writeCharacteristic(android.bluetooth.BluetoothGattCharacteristic))がfalseを返すようになります。私はデバッグし、デバイスがビジー状態であることが判明しました。私は正常に1.5秒ごとに接続の最初の数秒で遅延が非常に遅いと比較してwriteCharacteristicを呼び出すことができます。デバイスだけで応答が保留されていることを意味し、「ビジー」であることを

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

は、ここでのonClick機能と私の抜粋です。 AndroidのAPIでは、新しいリクエストを発行した後に対応するコールバック(書き込みの場合はonCharacteristicWriteなど)を待つ必要があります。時間がかかると思われる場合は、接続間隔を短くすることができます。

+0

実際に接続間隔が長いことがわかりました。おそらく、最初の数秒間、交渉プロセスのためにそれは低かったでしょう。まだ+1 –

関連する問題