当前位置:  开发笔记 > 编程语言 > 正文

是否可以检测用户是否安装并使用了Google健身应用?

如何解决《是否可以检测用户是否安装并使用了Google健身应用?》经验,为你挑选了0个好方法。

我想在我的应用程序中添加步骤计数器.到现在为止,我正在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 {
    ...
}
}

需要你帮助的人,

谢谢.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有