我想在我的应用程序中添加步骤计数器.到现在为止,我正在Google fit
测量用户步数.
我面临的问题是,并非所有设备都Google Fit
安装了应用程序,即使是 - 并非所有用户都注册到应用程序服务(作为客户端).
所以期望的流程是:
检测是否Google fit
安装了应用程序.
如果已安装,请检查用户是否已注册到Google fit
应用程序.
如果安装并注册到Google fit
应用程序,请检查用户帐户类型支持是否使用健身服务.(记录步骤等数据)
如果一切正常,请检查用户是否已确认"Google适合弹出窗口".
基本上我想如果用户使用健身应用(使用上述所有条件)来检查,如果一个失败,则它将使用STEPCOUNT传感器上设备(如果存在),如果传感器不存在,将使用其他传感器的实现这个目标.
以下是我用来连接Google Fit API的代码:
private void buildFitnessClient() { // Create the Google API Client mClient = new GoogleApiClient.Builder(getContext()) .addApi(Fitness.HISTORY_API) .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ)) .addConnectionCallbacks( new GoogleApiClient.ConnectionCallbacks() { @Override public void onConnected(Bundle bundle) { Log.i(TAG, "Connected!!!"); // Now you can make calls to the Fitness APIs. // Put application specific code here. new getFitnessTask().execute(); } @Override public void onConnectionSuspended(int i) { // If your connection to the sensor gets lost at some point, // you'll be able to determine the reason and react to it here. if (i == GoogleApiClient.ConnectionCallbacks.CAUSE_NETWORK_LOST) { Log.i(TAG, "Connection lost. Cause: Network Lost."); } else if (i == GoogleApiClient.ConnectionCallbacks.CAUSE_SERVICE_DISCONNECTED) { Log.i(TAG, "Connection lost. Reason: Service Disconnected"); } } } ) .addOnConnectionFailedListener( new GoogleApiClient.OnConnectionFailedListener() { // Called whenever the API client fails to connect. @Override public void onConnectionFailed(ConnectionResult result) { Log.i(TAG, "Connection failed. Cause: " + result.toString()); if (!result.hasResolution()) { // Show the localized error dialog if (getActivity() != null) { GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), getActivity(), 0).show(); } return; } // The failure has a resolution. Resolve it. // Called typically when the app is not yet authorized, and an // authorization dialog is displayed to the user. if (!authInProgress) { try { Log.i(TAG, "Attempting to resolve failed connection; activity; "+ getActivity()); if (getActivity() != null) { authInProgress = true; result.startResolutionForResult(getActivity(), REQUEST_OAUTH); } } catch (IntentSender.SendIntentException e) { Log.e(TAG, "Exception while starting resolution activity", e); } } } } ) .build(); } public void onActivityResult(int requestCode, int resultCode, Intent data){ Log.e(TAG, "onActivityResult requestCode=" + requestCode + ", resultCode=" + resultCode); if (requestCode == REQUEST_OAUTH) { authInProgress = false; if (resultCode == Activity.RESULT_OK) { Log.e(TAG, "RESULT_OK"); // Make sure the app is not already connected or attempting to connect if (!mClient.isConnecting() && !mClient.isConnected()) { mClient.connect(); } } else if (resultCode == Activity.RESULT_CANCELED) { Log.e(TAG, "RESULT_CANCELED"); } } } private class getFitnessTask extends AsyncTask{ ... } }
需要你帮助的人,
谢谢.