标签: google-fit

Google Fit应用程序如何在不耗尽电量的情况下始终测量步数?

谷歌飞度的应用程序,在安装时,测量你在走路或跑步的时间,也步数所有的时间.然而,奇怪的是,使用它似乎并没有耗尽电池.其他应用程序,如Moves,似乎可以非常准确地记录步数,因为它不断监控GPS和加速度计,因此它会消耗大量功率.

我想象几种可能性:

  • 每分钟左右唤醒手机,然后分析传感器几秒钟,然后再次睡觉.然而,似乎记录非常精确,所以醒来必须经常.
  • 实际上一直打开加速度计,只有在加速度计测量数据缓冲区满后才进行分析.但是我认为加速度计有一个小缓冲区来存储最新的测量值.
  • 使用GPS 估算步数而不是实际计算步数.然而,情况并非如此,因为它甚至可以在室内使用.

该应用程序仍然感觉神奇.一直计数步骤而没有可察觉的电池消耗.

gps android accelerometer android-sensors google-fit

43
推荐指数
3
解决办法
7万
查看次数

Step Counter Google FIT API

我目前正在尝试使用Google Fit API.这是我第一个使用API​​的应用,我主要是关注Google的文档.

下面是我的代码似乎有问题

我遇到的问题是它似乎没有更新步骤计数器.

public class MainActivity extends Activity
        implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

        private static final String TAG = "FitActivity";
    //[START Auth_Variable_References]
        private static final int REQUEST_OAUTH = 1;
    // [END auth_variable_references]
        private GoogleApiClient mClient = null;

        int mInitialNumberOfSteps = 0;
        private TextView mStepsTextView;
        private boolean mFirstCount = true;

    // Create Builder View
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mStepsTextView = (TextView) findViewById(R.id.textview_number_of_steps);
        }


        private void connectFitness() {
            Log.i(TAG, "Connecting...");

            // Create the Google API Client
            mClient …
Run Code Online (Sandbox Code Playgroud)

android google-fit

18
推荐指数
1
解决办法
7859
查看次数

Android:如何从可穿戴设备获取Google Fit数据?

我遵循此处描述的相同步骤 (Google Fit客户端连接部分工作正常).

    final DataType dataType=TYPE_STEP_COUNT_DELTA;
    DataSourcesRequest requestData = new DataSourcesRequest.Builder()
            .setDataTypes(dataType)  // At least one datatype must be specified.
            .build();
    Fitness.SensorsApi.findDataSources(mClient, requestData)
            .setResultCallback(new ResultCallback<DataSourcesResult>() {
                @Override
                public void onResult(DataSourcesResult dataSourcesResult) {
                    Log.i(TAG, "Result: " + dataSourcesResult.getDataSources().size() + " sources "
                            + dataSourcesResult.getStatus().toString());
                    for (DataSource dataSource : dataSourcesResult.getDataSources()) {
                        Log.i(TAG, "Data source found: " + dataSource.toString());
                        Log.i(TAG, "Data Source type: " + dataSource.getDataType().getName());
                    }
                }
            });
Run Code Online (Sandbox Code Playgroud)

当我要求数据源时,我只得到一个结果就是智能手机.如果我添加一个监听器,那么我真的得到数据,所以它正在工作.

不过它也可以通过手机与Android Wear智能手表Gear Live和Android Wear应用程序连接.Google Fit已安装在两者中,但我想从智能手表获取数据.

在我阅读的官方指南中

Sensors API提供对Android设备上可用传感器以及可穿戴设备等配套设备中可用传感器的原始传感器数据流的访问 . …

android android-sensors google-fit-sdk google-fit wear-os

18
推荐指数
1
解决办法
4654
查看次数

从Google Fit API Android获取当前活动

我正在使用演示应用程序来使用Google Fit获取当前活动示例.我可以正确地获得速度和距离.但是,尽管我处于同一状态,但它并没有经常返回"in_vehicle"或"骑自行车"状态.找到相同的附加截图.我的速度为59.40KM/H(36.91 M/h),当时它没有返回"in_vehicle"活动状态.

请提供相同的解决方案/反馈.

代码:

@Override
 public void onDataPoint(DataPoint dataPoint) {
     for (Field field : dataPoint.getDataType().getFields()) {
        Value val = dataPoint.getValue(field);
           if(field.getName().trim().toLowerCase().equals("activity"))
                    {
                        if(FitnessActivities.getName(Integer.parseInt(val.toString())).equals("biking"))
                        {
                            strState = "Cycling";
                        }
                        else if(FitnessActivities.getName(Integer.parseInt(val.toString())).equals("in_vehicle"))
                        {
                            strState = "Automotive";
                        }
                        else if(FitnessActivities.getName(Integer.parseInt(val.toString())).equals("walking"))
                        {
                            strState = "Walking";
                        }
                        else
                        {
                            strState = "Not Moving";
                        }
                    }
            }
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

图片

android google-fit-sdk google-fit

13
推荐指数
1
解决办法
2375
查看次数

尝试访问 Google Fit API 时出现异常 - 用户必须登录才能进行此 API 调用

我正在尝试设置一个在 WearOS 上运行的可穿戴应用程序(适用于华为 Watch 2),以将心率 (BPM) 持续提供到 Google Fit 帐户中,该帐户会被读入另一个智能手机应用程序中。

当我尝试设置帐户并访问数据时出现问题,如下所示:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.BODY_SENSORS)
        != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.BODY_SENSORS),GOOGLE_FIT_PERMISSIONS_REQUEST_CODE)
}

fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ)
.addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_WRITE)
.build()

account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
    GoogleSignIn.requestPermissions(
        this, // your activity
        GOOGLE_FIT_PERMISSIONS_REQUEST_CODE, // e.g. 1
        account,
        fitnessOptions);
} else {
    accessGoogleFit()
}
timer.scheduleAtFixedRate(
    object : TimerTask() {
        override fun run() {
            Log.i("[TimerTask]", "Retrieving data..")
            accessGoogleFit()
            Log.i("[Account]", "" + account.email)

        }
    },0, 1000
) …
Run Code Online (Sandbox Code Playgroud)

android kotlin google-fit wear-os google-fit-api

13
推荐指数
1
解决办法
3606
查看次数

通过Google Fit Api检索的步数与Google健身官方应用中显示的步数不符

我开发了一个需要显示每日步数的应用程序.为此,我使用了Google Fit SDK中提供的API.

一切似乎都正常,但我得到的步数与Google Fit官方应用程序中显示的步数不匹配.

例如,当Google Fit App显示2367步时,我会获得2308步.

是否有一个原因?有没有人有同样的问题?有人有线索吗?

android google-fit-sdk google-fit

12
推荐指数
1
解决办法
8261
查看次数

Android中的步数计数器:永远在线?

一个众所周知的问题是,许多Android手机在屏幕关闭时关闭加速度计.然而Android Fit(应用程序)似乎发生了一些变化.即使屏幕熄灭,Fit也会保持计数步数.如果安装了Fit,则会在Fit环境中引发事件以进行步数计数,并且我可以使用它来捕获它们

Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
                .setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE)
Run Code Online (Sandbox Code Playgroud)

我在三星S4和Oneplus One上测试了这个,在这两种情况下都计算了步数.他们是怎么做到的?他们使用什么Android类?我的理解是,自Kitkat以来引入的可用方法是实现SensorEventListener.例如,theelfismike提供了实现此功能的代码.然而,在许多手机上,当屏幕熄灭时,步数会停止.有趣的是,如果安装了Google Fit应用程序,计数似乎并没有停止(因此我猜他们会保持加速度计开启).

我错过了什么吗?屏幕关闭后保持计数步骤的功能是否可供凡人程序员使用?谢谢!

android accelerometer google-fit

12
推荐指数
1
解决办法
4812
查看次数

Android Wear和Google Fit:如何在智能手表和智能手机之间强制更新数据集?

从智能手机使用HistoryAPI如果我询问用户的历史记录和DataType.TYPE_HEART_RATE_BPM最后一个小时,从当前时间开始,我错过了过去半小时的数据.

如果我使用智能手表中的相同程序向Google Fit询问它们,那就没关系了.

所以这不是数据提取的问题,因为它取决于设备.

也许这是同步问题?如何以编程方式强制更新Google Fitness Store存储库中的记录?

就是我所说的.

编辑:这是我建立请求的方式

      DataReadRequest readRequest = new DataReadRequest.Builder()
            .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
            .enableServerQueries()
            .read(dataType)
            .build();
Run Code Online (Sandbox Code Playgroud)

android updates google-play-services google-fit wear-os

12
推荐指数
1
解决办法
1496
查看次数

Google Fit SessionsApi不会在时间范围内返回所有会话

不知何故,我已经陷入了谷歌健康Android SDK的死胡同.目前,我正在构建一个应用程序,用于读取,显示和处理来自Google Fit的数据,以便用户了解其锻炼行为.

我的情况如下:我曾经在Google Pixel上进行测试 - 一切都很好,我收到了来自Google Fit的所有(超过20个)会话.一周前,我已经切换到HTC10 - 在这个设备上我只收到来自Google Fit的4个(!)会话 - 相同的应用程序,相同的代码,相同的Google Fit帐户(在Google Fit应用程序中我仍然可以看到所有训练和训练).我试图阅读的会话不是使用我的应用程序创建的,而是使用Google Fit应用程序本身创建的.但是,在旧手机上,我可以阅读它们,在新手机上我不能.

让我粘贴一些代码以便更清晰.

GoogleApiClient设置

googleApiClient = GoogleApiClient.Builder(context)
    .addApi(Fitness.HISTORY_API)
    .addApi(Fitness.SESSIONS_API)
    .addApi(Fitness.RECORDING_API)
    .addApi(Fitness.GOALS_API)
    .addScope(Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
    .addScope(Scope(Scopes.FITNESS_BODY_READ_WRITE))
Run Code Online (Sandbox Code Playgroud)

连接后,我订阅了几个RecordingApis( ,TYPE_WORKOUT_EXERCISE,)TYPE_WEIGHTTYPE_CALORIES_EXPENDED

SessionReadRequest:

   val sessionRequest = SessionReadRequest.Builder()
                .setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
                .read(DataType.TYPE_WORKOUT_EXERCISE)
                .readSessionsFromAllApps()
                .enableServerQueries()
                .build()
Run Code Online (Sandbox Code Playgroud)

阅读会议:

       Fitness.SessionsApi.readSession(googleApiClient, sessionRequest)
        .setResultCallback { result ->
            Timber.d("Sessions result: %s", result.status)
                Timber.d("Got %d sessions", result.sessions.size) // returns only 4! for 2014-NOW timerange
       }
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

android google-fit-sdk google-fit

11
推荐指数
1
解决办法
588
查看次数

以与 Google Fit 应用程序相同的方式获取 Google Fit 历史记录(Google Fit 自动记录活动)

我正在努力显示与 Google Fit 应用程序相同的活动历史记录。我在会话方面做得很好,但我无法正确掌握自动记录的活动。就像示例中的这两个顶级步行。

在此处输入图片说明

我认为一切都归结DataReadRequest为建造的方式。我得到的最接近的是:

DataReadRequest.Builder()
                            .aggregate(DataType.TYPE_ACTIVITY_SEGMENT, DataType.AGGREGATE_ACTIVITY_SUMMARY)
                            .bucketByActivitySegment(5, TimeUnit.MINUTES)
                            .setTimeRange(dateFrom.millis, dateTo.millis, TimeUnit.MILLISECONDS)
                            .build()
Run Code Online (Sandbox Code Playgroud)

故意排除少于 5 次步行。结果相似,但结果略有不同。持续时间和大卡减少约 20%。有时它真的很疯狂,将活动切成小块。我在 Google Fit 中走了 2 次,最终在我的应用程序中走了 4 次,这与 Google Fit 中的 2 次不相加。我试图反编译 Google Fit 应用程序以“借用”请求设置,但该应用程序被很好地混淆了。:)

有人实现了吗?

android google-fit google-fit-api

11
推荐指数
1
解决办法
190
查看次数