2017-07-07 59 views
1

我已通過應用程序明確將我的設備與Android手機配對。此設備是MI-Band 2,並使用MI-FIT應用進行配對。我目前連接到使用此代碼的藍牙設備:獲取Android顯式配對設備的RSSI值

String action = intent.getAction(); 
     if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
      BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
      int rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI, Short.MIN_VALUE); 

然而,問題是,如果MI-帶通過MI-Fit應用程式的連接,我無法從MI-帶RSSI值。

是否有可能在Android中獲得明確配對的設備的RSSI值?如果是這樣,我做錯了什麼?

感謝

編輯:好像我不能讓任何連接設備的RSSI值。例如,如果Android手機A連接到Android Phone B,則當通過電話A的上述代碼嘗試讀取時,我無法讀取RSSI值。

回答

1

如果您確實知道設備的藍牙名稱被連接,也許你可以嘗試使用BluetoothAdapter.LeScanCallback在掃描時發現它。或者你真的需要告訴掃描或連接分開嗎?

BluetoothManager bleManager = (BluetoothManager) getApplicationContext().getSystemService(Context.BLUETOOTH_SERVICE); 
BluetoothAdapter bleAdapter = bleManager.getAdapter(); 
bleAdapter.startLeScan(leScanCallback);// find match device 
BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() { 

     @Override 
     public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) { 
      if (device.getName() == null || !device.getName().equals("your bluetooth device name")) { 
       return; 
      } 
      // here you can get rssi of specified bluetooth device if it's available. 
      // and try to connect it programmatically. 
      connect(device.getAddress()); 
     } 
    };