Какие устройства поддерживают соединение Google API с поддержкой Bluetooth? - PullRequest
0 голосов
/ 22 января 2020

Я хочу приобрести устройство (диапазон / часы), которое может отображаться в моем базовом приложении Google Fit API, которое выполняет поиск устройств Bluetooth и считывает их данные (HEART_RATE, STEP_COUNT и т. П. c.) Через соединение Bluetooth. Я попытался использовать MI band 3 и MI band 4 для подключения к своему приложению через Bluetooth, но я не могу найти его, используя приведенный ниже код.

Я использовал следующий код:

FitnessOptions fitnessOptions = FitnessOptions.builder()
            .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
            .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
            .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
            .build();

    if (!GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(this), fitnessOptions)) {
        LogUtils.e(TAG, "GoogleSignIn need Permissions");
        GoogleSignIn.requestPermissions(
                this, // your activity
                GOOGLE_FIT_PERMISSIONS_REQUEST_CODE,
                GoogleSignIn.getLastSignedInAccount(this),
                fitnessOptions);
    } else {
        LogUtils.e(TAG, "GoogleSignIn hasPermissions already");
        buildBLE();
    }

 private void buildBLE() {
    LogUtils.e(TAG, "Bluetooth started scanning...");

    BleScanCallback bleScanCallbacks = new BleScanCallback() {
        @Override
        public void onDeviceFound(BleDevice device) {
            LogUtils.e(TAG," BleScanCallback onDeviceFound ");
            // A device that provides the requested data types is available
            Task<Void> response = Fitness.getBleClient(activity,
                    GoogleSignIn.getLastSignedInAccount(activity))
                    .claimBleDevice(device);

            response.addOnCompleteListener(task -> {
                if (task.isSuccessful()){
                    LogUtils.e(TAG,"claimBleDevice Device onComplete isSuccessful");
                }else {
                    LogUtils.e(TAG,"claimBleDevice Device onComplete not success");
                }
            });
        }
        @Override
        public void onScanStopped() {
            LogUtils.e(TAG," BleScanCallback onScanStopped");
            // The scan timed out or was interrupted
        }
    };

    Task<Void> response = Fitness.getBleClient(this,
            GoogleSignIn.getLastSignedInAccount(this))
            .startBleScan(Arrays.asList(DataType.TYPE_STEP_COUNT_DELTA), 120, bleScanCallbacks);

    response.addOnCompleteListener(task -> {
        if (task.isSuccessful()){
            LogUtils.e(TAG,"startBleScan Device onComplete isSuccessful");
        }else {
            LogUtils.e(TAG,"startBleScan Device onComplete not success");
        }
    });
}
...