健身startBleScan成功,但使用MI Band 2扫描已停止

时间:2019-03-31 07:31:41

标签: android google-fit google-fit-sdk

我想使用我的Android应用程序实时从我的mi band 2请求传感器数据。我对此有些困难。我使用权限BLUETOOTHBLUETOOTH_ADMIN。我检查了是否可以通过Bluetooth le默认API看到我的设备。 我尝试使用此示例https://developers.google.com/fit/android/ble-sensors?hl=ru,并且每次我都处于onScanStopped状态且此回调没有任何解释时,所以我不明白为什么它会失败。 我的代码:

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: ");
        }
    };

1 个答案:

答案 0 :(得分:2)

onScanStopped()

中指定的超时时间被调用

startBleScan(List<DataType> dataTypes, int timeoutSecs, BleScanCallback callback)

已过期。

尝试增加/减少方法中指定的时间(60'):

 Fitness.getBleClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .startBleScan(Arrays.asList(DataType.TYPE_ACTIVITY_SEGMENT), 60, bleScanCallbacks)

Android Documentation