2016-01-28 5 views
1

Я пытаюсь написать приложение для Android, которое является чат-приложением через BLE.Сканирование устройства сбой андроида BLE

<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/> 

Я получил это сообщение в журнале кошки и не вызвать onLeScan() метод во время сканирования устройства.

D/BluetoothAdapter: startLeScan(): null 

D/BluetoothAdapter:onClientRegistered() - status=0 clientIf=5 

D/BluetoothAdapter: stopLeScan() 

Мой код для сканирования устройства

private BluetoothAdapter.LeScanCallback mLeScanCallback = 
      new BluetoothAdapter.LeScanCallback() { 

       @Override 
       public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          Toast.makeText(MainActivity.this, device.getName(), Toast.LENGTH_SHORT) 
            .show(); 
         } 
        }); 
       } 
      }; 

private void scanLeDevice(final boolean enable) { 
     if (enable) { 
      // Stops scanning after a pre-defined scan period. 
      mHandler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        mScanning = false; 
        mBluetoothAdapter.stopLeScan(mLeScanCallback); 
        invalidateOptionsMenu(); 
       } 
      }, SCAN_PERIOD); 

      mScanning = true; 
      mBluetoothAdapter.startLeScan(mLeScanCallback); 
     } else { 
      mScanning = false; 
      mBluetoothAdapter.stopLeScan(mLeScanCallback); 
     } 
    } 

, когда я просматриваю устройства спецификации, они поддерживают только Buletooth умный, не периферийный режим. Мой вопрос в том, что возможно ли подключить BLE поддерживаемые мобильные телефоны друг к другу без поддержки периферийного режима? Или мой код просто что-то не так?

Редактировать

У меня есть 3 тестовые устройства, которые Huawei 730 с Android 4.3, Samsung Galaxy 2 ядра с андроид 4.4.2 и Android один с андроид 6.0.1. Моя проблема возникла у всех из них. Я также тестирую BLEScanner, но не обнаруживаю все мои устройства. Кроме того, я не могу обнаружить все мое устройство, запустив BluetoothLeGatt, который является образцом проекта от android sdk.

+0

Можете ли вы предоставить более подробную информацию ?: Android-версия, модель телефона и т. Д. –

+0

@dustedrob Я обновил свой вопрос. –

ответ

1

Я нашел ответ. Это связано с тем, что нет поддержки периферийного режима в устройстве с предварительным лепестком. Один из ваших телефонов, который действует как периферийное устройство, должен иметь версию Android версии 5.0 (Lollipop) и выше, чтобы он мог рекламировать свое присутствие, создать GATTServer и позволить другому телефону подключать его как центральный/клиент.

Make communication between 2 android phones over BLE

https://developer.android.com/about/versions/android-5.0.html#BluetoothBroadcasting

Edit

Даже некоторые леденец и выше телефонов не поддерживают периферийную режим из-за требования к оборудованию.

Надеюсь, это будет полезно для вас.

Смежные вопросы