Flutter Garmin手表连接状态监测插件watch_connectivity_garmin的使用

Flutter Garmin手表连接状态监测插件watch_connectivity_garmin的使用

简介

watch_connectivity_garmin 是一个用于与Garmin手表进行通信的Flutter插件,它封装了ConnectIQ SDK的功能。通过这个插件,您可以监测Garmin手表的连接状态,并与手表进行数据交互。

注意事项

使用此插件即表示您接受 ConnectIQ许可协议

入门指南

iOS配置
  1. Podfile配置: 在您的iOS项目的 Podfile 中添加以下内容:

    platform :ios, '13.0'
    
  2. Info.plist配置: 在您的iOS项目的 Info.plist 文件中添加以下键值对:

    <key>CFBundleDisplayName</key>
    <string>${PRODUCT_NAME}</string>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>None</string>
            <key>CFBundleURLName</key>
            <string>{your.bundle.identifier}</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>{your-unique-string}</string>
            </array>
        </dict>
    </array>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>gcm-ciq</string>
    </array>
    <key>NSBluetoothPeripheralUsageDescription</key>
    <string>用于连接可穿戴设备</string>
    <key>NSBluetoothAlwaysUsageDescription</key>
    <string>用于连接可穿戴设备</string>
    <key>UIBackgroundModes</key>
    <array>
        <string>bluetooth-central</string>
    </array>
    

使用方法

以下是一个完整的示例代码,展示了如何使用 watch_connectivity_garmin 插件来监测Garmin手表的连接状态:

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:watch_connectivity_garmin/watch_connectivity_garmin.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: WatchStatusPage(),
    );
  }
}

class WatchStatusPage extends StatefulWidget {
  [@override](/user/override)
  _WatchStatusPageState createState() => _WatchStatusPageState();
}

class _WatchStatusPageState extends State<WatchStatusPage> {
  final WatchConnectivityGarmin _watch = WatchConnectivityGarmin();
  String _connectionStatus = 'Unknown';

  [@override](/user/override)
  void initState() {
    super.initState();
    _initializeWatch();
    _listenToConnectionStatus();
  }

  void _initializeWatch() {
    // 初始化手表连接
    _watch.initialize(
      GarminInitializationOptions(
        applicationId: 'your-application-id', // 替换为您的应用ID
        urlScheme: 'your-url-scheme', // 替换为您的URL Scheme
      ),
    );

    if (Platform.isIOS) {
      // 在iOS上,需要启动Garmin Connect应用以选择配对设备
      _watch.showDeviceSelection();
    }
  }

  void _listenToConnectionStatus() {
    // 监听手表连接状态的变化
    _watch.onConnectionStatusChanged.listen((status) {
      setState(() {
        switch (status) {
          case ConnectionStatus.connected:
            _connectionStatus = 'Connected';
            break;
          case ConnectionStatus.disconnected:
            _connectionStatus = 'Disconnected';
            break;
          case ConnectionStatus.unknown:
            _connectionStatus = 'Unknown';
            break;
        }
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Garmin Watch Connection Status'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              '当前连接状态:',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            Text(
              _connectionStatus,
              style: TextStyle(fontSize: 36, fontWeight: FontWeight.bold),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter Garmin手表连接状态监测插件watch_connectivity_garmin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Garmin手表连接状态监测插件watch_connectivity_garmin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用Flutter插件 watch_connectivity_garmin 来监测Garmin手表连接状态的代码示例。这个示例将展示如何初始化插件、监听连接状态变化,并处理这些变化。

首先,确保你已经在 pubspec.yaml 文件中添加了 watch_connectivity_garmin 插件依赖:

dependencies:
  flutter:
    sdk: flutter
  watch_connectivity_garmin: ^最新版本号  # 替换为实际最新版本号

然后,运行 flutter pub get 来获取依赖。

接下来,在你的 Flutter 应用中实现以下代码:

import 'package:flutter/material.dart';
import 'package:watch_connectivity_garmin/watch_connectivity_garmin.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool _isConnected = false;

  [@override](/user/override)
  void initState() {
    super.initState();
    _initWatchConnectivity();
  }

  void _initWatchConnectivity() {
    WatchConnectivityGarmin().connectivityStateStream.listen((connectivityState) {
      setState(() {
        _isConnected = connectivityState == ConnectivityState.connected;
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Garmin Watch Connectivity Demo'),
        ),
        body: Center(
          child: Text(
            'Garmin Watch Connected: $_isConnected',
            style: TextStyle(fontSize: 24),
          ),
        ),
      ),
    );
  }
}

代码解释:

  1. 导入插件

    import 'package:watch_connectivity_garmin/watch_connectivity_garmin.dart';
    
  2. 初始化状态

    class _MyAppState extends State<MyApp> {
      bool _isConnected = false;
    }
    
  3. 初始化插件并监听连接状态

    void _initWatchConnectivity() {
      WatchConnectivityGarmin().connectivityStateStream.listen((connectivityState) {
        setState(() {
          _isConnected = connectivityState == ConnectivityState.connected;
        });
      });
    }
    
  4. initState 中调用初始化方法

    [@override](/user/override)
    void initState() {
      super.initState();
      _initWatchConnectivity();
    }
    
  5. 构建 UI

    [@override](/user/override)
    Widget build(BuildContext context) {
      return MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: Text('Garmin Watch Connectivity Demo'),
          ),
          body: Center(
            child: Text(
              'Garmin Watch Connected: $_isConnected',
              style: TextStyle(fontSize: 24),
            ),
          ),
        ),
      );
    }
    

这个示例应用将在启动时初始化 watch_connectivity_garmin 插件,并监听Garmin手表的连接状态变化。每当连接状态改变时,它会更新UI上的文本以显示当前连接状态。

请注意,实际使用中可能需要根据具体需求调整代码,例如处理更多连接状态(如 disconnectedconnecting 等),或添加错误处理逻辑。此外,确保你已经正确配置了Garmin手表和Flutter应用的必要权限和设置。

回到顶部