사실 현재 나는 블루투스 저전력 장치 주소를 데이터베이스에 저장하고 있습니다. 언제든지 사용자는 listview를 탭하여 장치에서 값을 얻을 수 있습니다. 현재 장치를 제거 할 수있는 메커니즘이 없습니다 (장치가 범위에 있지 않으면 (스캐닝에서 찾을 수 없음)). 우리는 사용자가 장치 화면에 범위 .so를 사용자 탭에없는 경우 이전 역사의 가치를 데이터베이스에서 주소를 검색 및 추가 작업에 대한 BluetoothDevice 객체를 검색 할 수BluetoothLowEnergy 범위 문제 android
mBluetoothAdapter.getRemoteDevice(bleAddress);
방법을 사용할 수있는 기능을 제공하기 때문에 connectgatt 등 하지만 Google 문서에 따르면 getRemoteDevice (bleAddress)
장치가 Google 문서에 따라 범위 내에 있지 않더라도 반환합니다.
유효한 하드웨어 주소로 BluetoothDevice가 반환됩니다 (해당 어댑터를 본 적이없는 경우에도).
그래서 기기가 범위 내에 있는지 확인합니다. 나는 그것을 위해 타이머를 넣으려고 노력할 수 있지만, 좋은 선택이 아니므로 좀 더 생각해주세요. 내가 범위에서 .so를 상태와 함께 연결 시간이 안드로이드 후에없는 이미 장치 주소를 연결하려고 생각하면 주위에 몇 가지 작업을 발견
[업데이트] 확인 (133)
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status,
int newState) {
if(status==133){
Intent intent=new Intent(FetchBluetoothCharacteristicService.DEVICE_NOT_RANGE);
sendBroadcast(intent);
}
if (newState == BluetoothProfile.STATE_CONNECTED) {
Log.d(TAG, "GATT DEVICE CONNECTED");
Log.d(TAG,
"And Attempting to start service discovery:"
+ gatt.discoverServices());
} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
close();
Intent intent=new Intent(FetchBluetoothCharacteristicService.DEVICE_DISCONNECTED);
intent.putExtra(COUNTER, counter);
sendBroadcast(intent);
}
}
답장을 보내 주셔서 감사합니다. 그러나 실제로 rssi 값은 기기가 연결되어 있는지 검색합니다. 연결된 원격 장치의 RSSI를 읽습니다. 및 안드로이드 API 문제 때문입니다. 시작과 멈춤을 반복적으로 사용하여 rssi 값을 얻습니다. 다시 결과가 정확하지 않습니다. – mcd
BLE 광고 패킷에 RSSI 값이 포함되어 있으며이를 스캔하여 얻습니다 (실제로 장치에 연결되어 있지 않음). 나는 안드로이드에 익숙하지 않아, 당신이 그 값을 어디에서 얻을 수 있는지, 어디에서 얻을 수 있을지 모르겠습니다. –
사실 당신 말이 맞지만 안드로이드 장치는 반복적으로 방송되지 않습니다. 그래서 반복적으로 스캔을 시작하고 중지해야합니다. 그래서 일부 시간 장치는 장치를 방송하는 데 시간이 걸립니다. 그래서 이것을 어떻게 관리 해야할지 모르겠군요? – mcd