2013-09-05 5 views
3

Может ли кто-нибудь предложить, как постоянно читать силу сигнала BT4-LE на Android API Level 18+, чтобы обнаружить относительную близость к маякам BT-LE? Я знаю, что сила радиосигнала LE возвращается во время сканирования (см.: http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.LeScanCallback.html), но как только сканирование завершено и установлено соединение, есть ли способ получить обновленную мощность сигнала BT-LE без повторного сканирования?Постоянная сила сигнала Bluetooth LE на Android

ответ

9

http://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#readRemoteRssi()

Асинхронный вызов, чтобы начать читать силу сигнала.

http://developer.android.com/reference/android/bluetooth/BluetoothGattCallback.html#onReadRemoteRssi(android.bluetooth.BluetoothGatt,%20int,%20int)

Обратный вызов после завершения чтения.

Необходимо подключиться перед чтением.

0

Вам необходимо подключиться, прежде чем вы вызове readRemoteRssi(), чтобы прочитать уровень сигнала. Пример кода:

private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { 
@Override 
public void onConnectionStateChange(BluetoothGatt gatt, int status, 
     int newState) { 
    // TODO Auto-generated method stub 
    String intentAction; 
    if(newState == BluetoothProfile.STATE_CONNECTED) { 
     intentAction = ACTION_GATT_CONNECTED; 
     mConnectionState = STATE_CONNECTED; 
     mBluetoothGatt.readRemoteRssi(); 

1
if(newState == BluetoothProfile.STATE_CONNECTED) 
{ 
    TimerTask task = new TimerTask() 
    { 
     @Override 
     public void run() 
     { 
     mBluetoothGatt.readRemoteRssi(); 
     } 
    }; 
    Timer rssiTimer = new Timer(); 
    rssiTimer.schedule(task, 1000, 1000); 
} 
Смежные вопросы