2017-09-11 1 views
1
나는 특성에 쉽게 20 바이트를 기록 할 수 BLE device.I와 통신 인 앱 일하고

을 작동하지 않습니다하지만 20 개 이상의 바이트를 때 그것은요청 MTU는 누가

mBluetoothGatt.requestMtu(512);을 사용하고 문제 야를 만들 수 있어요

성공한 후에 문자를 쓰십시오. 멜로에서 잘 작동하고 누가 (삼성 갤럭시 S6)에서 작동하지 않습니다 lolipop.But됩니다

@Override 
        public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) { 
         super.onMtuChanged(gatt, mtu, status); 

         if (status == BluetoothGatt.GATT_SUCCESS) { 
          System.out.print("Mtu Granted"); 
//       this.supportedMTU = mtu; 
         } 
        } 

.

+0

Naught에 대한 어떤 오류가 있습니까? – Piyush

+0

아니요, 특정 오류는 없습니다. 나는 성공했다. 그러나 BLE 장치에는 반영되지 않았습니다. –

+0

Naught OS에서는 Bluetooth 연결에 약간의 변화가 있습니다. 안드로이드 개발자 공식 사이트를 확인하십시오 – Piyush

답변

1

나는 똑같은 문제가있어서 루프에 mtu 요청을 넣었고 규칙적으로 2 번 시도한 후에 작동하는 것 같습니다.

  new Thread(new Runnable() { 
       @Override 
       public void run() { 
        while (!mtuConfirmed) { 
         mBluetoothGatt.requestMtu(512); 
         mtuRequestCounter++; 
         try { 
          Thread.sleep(1000); 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
         } 
        } 
        Log.d(TAG, "MTU change reply received after " + mtuRequestCounter + " attempts"); 
       } 
      }).start(); 
+0

BluetoothGatt 객체에 대한 모든 요청은 직렬화되어야합니다. 보류중인 다른 작업이있을 때 mtu를 요청할 수 없습니다. – Emil

관련 문제