Skip to content

Add AuriahFlutterSDK specification for J2301A ring Flutter plugin#1

Draft
Copilot wants to merge 3 commits into
desenvolvimentofrom
copilot/add-auriah-flutter-sdk-folder
Draft

Add AuriahFlutterSDK specification for J2301A ring Flutter plugin#1
Copilot wants to merge 3 commits into
desenvolvimentofrom
copilot/add-auriah-flutter-sdk-folder

Conversation

Copilot AI commented Nov 17, 2025

Copy link
Copy Markdown

Implement AuriahFlutterSDK Plugin

Following the specification, implementing the complete Flutter plugin for J2301A ring integration.

Implementation Plan

Phase 1: Plugin Core Structure

  • Create pubspec.yaml for the plugin
  • Create main plugin entry point (auriah_ring_sdk.dart)
  • Create Dart data models (9 models)
  • Create RingManager for Dart-side API

Phase 2: Android Native Implementation

  • Create AuriahRingPlugin.kt (FlutterPlugin + MethodCallHandler)
  • Create BleManagerWrapper.kt (wraps RealBluetoothManager)
  • Create DataParsers.kt (data conversion helpers)
  • Create PermissionsHelper.kt (runtime permissions)
  • Create EventChannel handlers for streams
  • Configure build.gradle with :blesdk_2301 dependency
  • Create AndroidManifest.xml with permissions
  • Add ProGuard rules

Phase 3: Example App

  • Create example app pubspec.yaml
  • Create main.dart with scan, connect, and dashboard screens
  • Configure example app's Android manifest

Phase 4: Documentation

  • Create API.md
  • Create USAGE.md
  • Update main plugin README

Phase 5: Testing & Validation

  • Add Dart model unit tests
  • Validate build configuration
  • Document known limitations

Current Status

Starting implementation...

Original prompt

AuriahFlutterSDK — Documento de especificação para implementação do plugin Flutter

Por favor, crie uma pasta no repositório atual chamada AuriahFlutterSDK e adicione este documento como README.md dentro dela.
Este arquivo descreve em detalhe todas as tarefas, arquivos, design e critérios de aceitação necessários para implementar um SDK/Plugin Flutter que integre o anel J2301A (BLE SDK já presente no projeto Android) com um app Flutter.

Objetivo: entregar um plugin Flutter (Android nativo + Dart) que exponha todas as funcionalidades do BluetoothManager.kt / blesdk_2301 ao Dart/Flutter por meio de MethodChannels e EventChannels, um app de exemplo e documentação de uso.


Índice

  1. Visão geral e escopo
  2. Estrutura da pasta e arquivos iniciais
  3. Arquitetura e decisões de design
  4. API pública do plugin (métodos e streams)
  5. Implementação Android (Kotlin) — detalhes técnicos
  6. Implementação Dart — modelos e manager
  7. Permissões e manifestos Android
  8. Dependências e build (Gradle)
  9. Testes, exemplos e QA
  10. Publicação e versão
  11. Segurança, privacidade e conformidade
  12. Checklist de entrega e critérios de aceitação
  13. Estimativa de esforço e divisão de tarefas para a equipe

  1. Visão geral e escopo
  • Construir um plugin Flutter chamado auriah_ring_sdk (ou auriah_flutter_sdk) que:
    • Reutilize o módulo nativo existente :blesdk_2301 e a implementação BluetoothManager.kt.
    • Exponha os principais recursos: scan, conectar/desconectar, eventos em tempo real (HR, SpO2, Temp, ECG, HRV), configurações (personal info, sync time, monitoramento automático), leitura de bateria, dados de atividade/sono, modos esportivos, medição de glicose, etc.
    • Forneça um app exemplo (example/) usando o plugin.
    • Tenha documentação clara para desenvolvedores Flutter.
  • Plataformas: inicialmente Android (Kotlin). Preparar esqueleto iOS (Swift/ObjC) para futuro, mas não necessário fazê-lo agora — marcar como backlog.

  1. Estrutura da pasta e arquivos iniciais (criar)
  • Na raiz do repo: criar pasta AuriahFlutterSDK/ com a seguinte estrutura sugerida:

AuriahFlutterSDK/

  • README.md (este documento)
  • plugin/ <-- diretório do plugin (padrão flutter plugin)
    • pubspec.yaml
    • lib/
      • auriah_ring_sdk.dart # API pública
      • models/
        • device.dart
        • heart_rate_data.dart
        • spo2_data.dart
        • temperature_data.dart
        • activity_data.dart
        • sleep_data.dart
        • ecg_data.dart
        • hrv_data.dart
        • personal_info.dart
      • src/
        • ring_manager.dart # lógica Dart "client" leve (opcional)
    • android/
      • src/main/kotlin/com/auriah/ring/
        • AuriahRingPlugin.kt
        • BleManager.kt
        • DataParsers.kt
        • PermissionsHelper.kt
      • build.gradle
      • src/main/AndroidManifest.xml
      • proguard-rules.pro
    • example/ # app exemplo gerado pelo flutter create --template=plugin
      • lib/
        • main.dart
      • android/
      • pubspec.yaml
    • test/
      • unit tests for Dart models & manager
  • docs/
    • API.md
    • USAGE.md
    • ARCHITECTURE.md
    • RELEASE.md
  • ci/
    • android-lint.yml
    • flutter-tests.yml

Observação: podemos gerar o template do plugin com flutter create --template=plugin --platforms=android auriah_ring_sdk dentro da pasta plugin/ para já montar estrutura padrão.


  1. Arquitetura e decisões de design

3.1 Tipo de plugin

  • Plugin federado NÃO é necessário inicialmente; um plugin com implementação nativa Android (Kotlin) + Dart é suficiente.
  • Estrutura recomendada: plugin Flutter “single platform” com MethodChannel para comandos síncronos/assíncronos e EventChannel(s) para streams de dados em tempo real.

3.2 Comunicação

  • MethodChannel: chamadas request/response (initialize, startScan, connect, setPersonalInfo, getBatteryLevel, startECG, stopECG, etc.).
  • EventChannel(s): para dados contínuos e estados:
    • scanned_devices (lista atualizada de dispositivos)
    • connection_state (enum)
    • heart_rate
    • spo2
    • temperature
    • ecg (stream de amostras)
    • hrv
    • sleep_data / activity_data (eventos de sincronização)
    • logs/debug (opcional)

3.3 Modelos

  • Todos os objetos trocados serão convertidos para Map<String, dynamic> no Kotlin e para classes Dart no lado Flutter.
  • Documentar campos obrigatórios e formatos (ex.: timestamp em ms UTC).

3.4 Threading & lifecycle

  • No lado Kotlin, usar coroutines/flows para coletar os flows do BluetoothManager e enviar eventos via EventSink.
  • Gerenciar lifecycle do plugin para desconectar/dispose corretamente quando a Activity for destruída.
  • Cuidado com Activity/Context para solicitações de permissões (usar ActivityAware se necessário).

3.5 Erros e códigos

  • Definir um esquema de erros consistente (p.ex. códigos: INVALID_ARG, NOT_CONNECTED, TIMEOUT, PERMISSION_DENIED, BLUETOOTH_DISABLED, INTERNAL_ERROR).
  • Sempre retornar em MethodChannel com success/result ou result.error(codigo, mensagem, detalhes).

  1. API ...

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 2 commits November 17, 2025 17:49
Co-authored-by: DaviBassani <62648902+DaviBassani@users.noreply.github.com>
Co-authored-by: DaviBassani <62648902+DaviBassani@users.noreply.github.com>
Copilot AI changed the title [WIP] Add AuriahFlutterSDK folder and README for plugin implementation Add AuriahFlutterSDK specification for J2301A ring Flutter plugin Nov 17, 2025
Copilot AI requested a review from DaviBassani November 17, 2025 17:56
@DaviBassani

Copy link
Copy Markdown
Collaborator

@copilot Ótimo! Agora, seguindo essas mesmas especificações, podes implementar tudo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants