我用CMPedometer设计应用程序,有一个奇怪的问题.我有来自我的客户的日志,我看这个CMPedometerData,我认为真的不正确,我不明白为什么会这样
[2017-04-11 20:16:34 +0000] CMPedometerData,startDate 2017-04-11 20:16:32 +0000 endDate 2017-04-11 20:18:41 +0000步3距离2.130000000004657 floorsAscended(null) floorsDescended(null)currentPace(null)currentCadence(null)averageActivePace 0>
正如你可以看到我的客户端(我无法重现这个错误)从方法得到startPedometerUpdatesFromDatepedometerData和endDate 2017-04-11 20:18:41比现在更大2017-04-11 20:16:34(它是startPedometerUpdatesFromDate之后的第一个CMPedometerData从背景返回后启动 - willEnterForeground方法).也许有人已经遇到过类似的问题?
我的代码部分:
- (void)didEnterBackground {
dispatch_async(dispatch_get_main_queue(), ^{
[[Pedometer sharedInstance].motionActivityManager stopActivityUpdates];
[[Pedometer sharedInstance].pedometer stopPedometerUpdates];
});
}
- (void)willEnterForeground {
NSDate *nowDate = [NSDate new];
/* here is request to get historical data from lastDateUpdate (store in database) to now date */
[[Pedometer sharedInstance] importDataFrom:lastDateUpdate endDate:nowDate completion:^{
dispatch_async(dispatch_get_main_queue(), ^{
/* show info */
});
}];
dispatch_async(dispatch_get_main_queue(), ^{
[self startUpdatingData:nowDate]; …Run Code Online (Sandbox Code Playgroud) 我正在开发一个计步器Android应用程序来计算所采取的步数,并使用这些步骤计算所覆盖的距离和燃烧的卡路里.我已经按照教程 在Android中创建一个简单的计步器和步数计数器,并且完全像它一样.它检测传感器检测到运动时的步数.
但它有一些问题:
我已经从Play商店检查了一些其他应用程序,但他们没有做这种事情.
我已搜索但无法找到适合的解决方案或教程.任何帮助或建议.谢谢
TL;DR 如何让 Android 传感器永久运行/活动/注册我的应用程序,即使我关闭它?
目标:
我正在制作一个 Flutter 应用程序,它使用计步器包来计算您的步数,
该包
使用Android 的内置传感器,TYPE_STEP_COUNTER返回自上次启动(iOS)以来所采取的步数。在 Android 上,安装应用程序之前执行的任何步骤均不计算在内。
我是如何实现的:
myStepCount加 1。TYPE_STEP_COUNTER传感器应该仍然在后台运行stepCount,一旦我再次打开我的应用程序,新的和上次保存的stepCount(保存的)之间的差异使用shared_prefs)将被计算并添加到myStepCount.重要提示:即使在我锁定手机、转到主屏幕或关闭应用程序之后,
传感器TYPE_STEP_COUNTER也必须在后台永久运行/保持注册状态...
观察结果:
TYPE_STEP_COUNTER已永久注册)。myStepCount当应用程序在前台运行时采取步骤时,该值会增加。但是,一旦我再次打开应用程序,就不会添加关闭myStepCount应用程序时采取的步骤。结论:
我需要找到一种方法从我的 Flutter 应用程序注册TYPE_STEP_COUNTER传感器,并在关闭应用程序后保持其注册状态。
2 尝试过(但不成功)的解决方案:
第一次尝试: …
android-sensors sensormanager flutter pedometer flutter-method-channel
我有一个我正在iOS 10 Beta 3上测试的应用程序,并且由于某些奇怪的原因,每当我执行这一个方法时,它似乎崩溃在startPedometerUpdatesFromDate下面的行:
if (!_pedometer) {
_pedometer = [[CMPedometer alloc] init];
}
[_pedometer startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
Run Code Online (Sandbox Code Playgroud)
我已经确认_pedometer不是nil,因为它在升级之前在iOS 9中有效,所以更奇怪.
控制台中没有任何内容表明代码有任何问题,当它崩溃时只会导致这种情况(即使有异常断点):
libsystem_kernel.dylib`__abort_with_payload:
0x183a58d94 <+0>: movz x16, #0x209
0x183a58d98 <+4>: svc #0x80
-> 0x183a58d9c <+8>: b.lo 0x183a58db4 ; <+32>
0x183a58da0 <+12>: stp x29, x30, [sp, #-16]!
0x183a58da4 <+16>: mov x29, sp
0x183a58da8 <+20>: bl 0x183a3d7dc ; cerror_nocancel
0x183a58dac <+24>: mov sp, x29
0x183a58db0 <+28>: ldp x29, x30, [sp], …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 flutter 构建一个基本的健身应用程序。该应用程序有两个主要功能:
我使用计步器插件从手机传感器检索数据。我的问题是,该插件只能发送自上次重新启动以来的连续步数计数 ,这意味着如果用户几天没有打开我的应用程序,我不知道他每天走了多少步,只有他的总步数做过。我想过让我的应用程序在后台运行,但这会浪费电池
Ps 我阅读了Masky 的Implementing pedometer in flutter文章,但这并没有解决我的问题。
感谢您的任何帮助:)
我知道在网络应用程序的情况下,tizen 计步器可以从“tizen.humanactivitymonitor”获得一天的计步器步数。
但我无法在真正的 Gear s2 设备上的网络应用程序中获取它。
我也尝试使用本机系统传感器 API。但是我在 Tizen Native API 中找不到计步器 API。
如何在 Native 和 Web 端获取步数?