0

私はインテルのFossil AndroidベースのSmartwatch(BLEデバイス)からGoogle Fit Android SDK経由でデータを取得しようとしています。 BLEスキャンが起こっているように見えますが、ペアリングが発生しますが、結果のコールバック内ではonDeviceFoundには行きません(到達するとそこから進めることができます)。スキャンの開始から数秒以内に最終的にタイムアウトします。スマートウォッチウェアラブルデバイスからGoogle Fitデータを取得する方法Fossil Q Founder? BLEの要件を満たすのはどれですか? Androidで

ご協力いただければ幸いです。

+0

あなたが遭遇したあなたのコードとエラーログを共有することはできますか? [Bluetoothセンサーの使用](https://developers.google.com/fit/android/ble-sensors)に関する文書をチェックして、適切な実装を検討し、ユーザーデータを管理する際のベストプラクティスについては、[責任ある使用Google Fit](https://developers.google.com/fit/overview#responsible_use_of_google_fit)。それが役に立てば幸い! – KENdi

答えて

0

docsリンクありがとうございます。私はそれをすべて徹底的に行ったが、それは役に立たなかった。これは私のクラスファイルで、私は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"); 
      } 
     } 
    }); 
} 

}

関連する問題