Я хочу запросить данные датчика с моего mi band 2, используя приложение для Android в режиме реального времени. У меня есть некоторые трудности с этим. Я использую разрешения BLUETOOTH
и BLUETOOTH_ADMIN
. Я проверил, вижу ли я свое устройство через API Bluetooth по умолчанию. Я пытаюсь использовать этот пример https://developers.google.com/fit/android/ble-sensors?hl=ru и все время получаю onScanStopped и этот callback не имеет никакого объяснения, поэтому я не понимаю, почему он не работает. Мой код:
GoogleApiClient client = new GoogleApiClient.Builder(this)
.addApi(Fitness.SENSORS_API)
.addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ))
.addScope(new Scope(Scopes.FITNESS_BODY_READ))
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
client.connect();
И onConnected у меня есть:
Fitness.getBleClient(this, GoogleSignIn.getLastSignedInAccount(this))
.startBleScan(Arrays.asList(DataType.TYPE_ACTIVITY_SEGMENT), 60, bleScanCallbacks)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.d("TAG_F", "onComplete: " + task.isSuccessful());
}
});
Вот я тоже попробовал все эти типы данных DataType.TYPE_STEP_COUNT_DELTA, DataType.TYPE_HEART_RATE_BPM
Это показывает мне, что мое сканирование прошло успешно. Но при обратном вызове через 60 секунд я получаю onScanStopped
:
private BleScanCallback bleScanCallbacks = new BleScanCallback() {
@Override
public void onDeviceFound(BleDevice bleDevice) {
Log.d("TAG_F", "onDeviceFound: " + bleDevice.getDataTypes());
}
@Override
public void onScanStopped() {
Log.d("TAG_F", "onScanStopped: ");
}
};
onScanStopped() Called when the scan is stopped (normally because the timeout expired).
попробуйте увеличить время ожидания в секундах - person Ashvin solanki   schedule 05.04.2019