【问题标题】:How to obtain Google Fit data from Smart watch Wearable device Fossil Q Founder? Which complies BLE requirements? In Android如何从智能手表可穿戴设备 Fossil Q Founder 获取 Google Fit 数据?哪个符合BLE要求?在安卓中
【发布时间】:2016-08-19 06:14:32
【问题描述】:

我正在尝试通过 Google Fit Android SDK 从英特尔基于 Fossil Android 的智能手表(BLE 设备)中提取数据。 BLE 扫描似乎发生了,配对发生了,但在结果回调中它不会转到 onDeviceFound(如果它到达,我可以从那里继续)。它最终会在扫描开始后的几秒钟内超时。

任何帮助将不胜感激。

【问题讨论】:

  • 您能分享您遇到的代码和错误日志吗?您可能需要查看有关Use Bluetooth Sensors 的文档,以查看正确的实施以及管理用户数据时的最佳实践,请参阅Responsible use of Google Fit。希望对您有所帮助!

标签: android bluetooth-lowenergy android-sensors google-fit google-fit-sdk


【解决方案1】:

感谢您提供文档链接。我确实彻底经历了所有这些,但没有帮助。这是我的 Class 文件,我可以从 MainActivity 调用 startBleScan,BleScan 似乎正在工作,但之后它不会继续执行 onDeviceFound 方法。

公共类BlueToothDevicesManager {

private static final String TAG = "BlueToothDevicesManager";
private static final int REQUEST_BLUETOOTH = 1001;
private Main2Activity mMonitor;
private GoogleApiClient mClient;

public BlueToothDevicesManager(Main2Activity monitor, GoogleApiClient client) {
    mMonitor = monitor;
    mClient = client;

}

public void startBleScan() {
    if (mClient.isConnected()) {
        Log.i(TAG, "Google account is connected");
    }
    BleScanCallback callback = new BleScanCallback() {
        @Override
        public void onDeviceFound(BleDevice device) {
            Log.i(TAG, "BLE Device Found: " + device.getName());
            claimDevice(device);
        }

        @Override
        public void onScanStopped() {

            Log.i(TAG, "BLE scan stopped");
        }
    };


    PendingResult result = Fitness.BleApi.startBleScan(mClient, new StartBleScanRequest.Builder()
            .setDataTypes(DataType.TYPE_POWER_SAMPLE, DataType.TYPE_STEP_COUNT_CADENCE, DataType.TYPE_STEP_COUNT_DELTA, DataType.TYPE_SPEED, DataType.TYPE_ACTIVITY_SAMPLE, DataType.TYPE_DISTANCE_DELTA, DataType.TYPE_ACTIVITY_SEGMENT, DataType.TYPE_LOCATION_SAMPLE)
            .setBleScanCallback(callback)
            .build());

    result.setResultCallback(new ResultCallback() {
        @Override
        public void onResult(@NonNull Result result) {
            Status status = result.getStatus();
            if (!status.isSuccess()) {
                String a = status.getStatusCode() + "";
                Log.i(TAG, a);
                switch (status.getStatusCode()) {

                    case FitnessStatusCodes.DISABLED_BLUETOOTH:
                        try {

                            status.startResolutionForResult(mMonitor, REQUEST_BLUETOOTH);

                        } catch (SendIntentException e) {
                            Log.i(TAG, "SendIntentException: " + e.getMessage());
                        }
                        break;
                }
                Log.i(TAG, "BLE scan unsuccessful");
            } else {
                Log.i(TAG, "ble scan status message: " + status.getStatusMessage());
                Log.i(TAG, "Ble scan successful: " + status.getResolution());


            }
        }
    });
}

public void claimDevice(BleDevice device) {
    //Stop ble scan

    //Claim device
    PendingResult<Status> pendingResult = Fitness.BleApi.claimBleDevice(mClient, device);
    pendingResult.setResultCallback(new ResultCallback<Status>() {

        @Override
        public void onResult(@NonNull Status st) {
            if (st.isSuccess()) {
                Log.i(TAG, "Claimed device successfully");
            } else {
                Log.e(TAG, "Did not successfully claim device");
            }
        }
    });
}

}

【讨论】:

    猜你喜欢
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多