You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成Google Fit API在Android14三星S23 Ultra上计步异常求助

解决方案:Flutter Google Fit在Android 14(三星S23 Ultra)步数统计失效问题

1. 适配Android 14权限规则

  • 在AndroidManifest.xml中补充必要权限声明:
    <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <!-- Android 14+ 后台服务必备 -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_HEALTH" /> <!-- 健康类前台服务权限 -->
    
  • 运行时同时请求活动识别和通知权限:
    import 'package:permission_handler/permission_handler.dart';
    
    Future<void> requestRequiredPermissions() async {
      final activityPerm = await Permission.activityRecognition.request();
      final notificationPerm = await Permission.notification.request();
      
      if (!activityPerm.isGranted || !notificationPerm.isGranted) {
        // 处理权限拒绝后的引导逻辑
      }
    }
    

2. 修复组件切换时的监听生命周期问题

  • 不要将Google Fit监听绑定到单个组件的生命周期:
    • 把监听逻辑封装成全局单例服务,或用状态管理工具(Provider/Riverpod)托管,避免组件销毁时监听被意外取消。
    • 示例单例服务:
      class FitStepTracker {
        static final FitStepTracker _instance = FitStepTracker._internal();
        factory FitStepTracker() => _instance;
        FitStepTracker._internal();
      
        bool _isListening = false;
      
        void startStepListening() {
          if (_isListening) return;
          // 初始化Google Fit步数监听逻辑
          _isListening = true;
        }
      
        void stopStepListening() {
          if (!_isListening) return;
          // 停止监听逻辑
          _isListening = false;
        }
      }
      
    • 在应用根组件监听生命周期,确保后台切换后监听自动恢复:
      @override
      void didChangeAppLifecycleState(AppLifecycleState state) {
        super.didChangeAppLifecycleState(state);
        if (state == AppLifecycleState.resumed) {
          FitStepTracker().startStepListening();
        }
      }
      

3. 解除三星OneUI 6.0的系统限制

  • 关闭电池优化:进入「设置 > 电池和设备维护 > 电池 > 后台使用限制 > 你的应用」,开启“允许后台活动”,关闭“深度睡眠”和“电池优化”。
  • 检查专属权限:在「设置 > 应用 > 你的应用 > 权限 > 身体活动」中设置为“允许”,同时确认三星健康已授权应用访问步数数据。
  • 禁用应用省电模式:确保应用未被加入“省电模式”或“超级省电模式”的白名单外。

4. 优化Google Fit API调用逻辑

  • 若需后台持续统计步数,优先使用HistoryApi拉取历史数据,而非仅依赖SensorsApi的实时监听;如果必须用实时监听,需配合前台服务维持进程存活。
  • 避免在组件initState()中仅初始化一次监听,改用全局服务确保应用生命周期内监听状态稳定。

内容的提问来源于stack exchange,提问作者Tolga DURAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:25:07