You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
samples/experimental/pedometer
Brett Morgan 1a383e9361
`experimental/pedometer`: fixup linter warning (#1589)
2 years ago
..
example `experimental/pedometer`: fixup linter warning (#1589) 2 years ago
ios Add `experimental/pedometer` (#1587) 2 years ago
lib Add `experimental/pedometer` (#1587) 2 years ago
src Add `experimental/pedometer` (#1587) 2 years ago
.gitignore Add `experimental/pedometer` (#1587) 2 years ago
.metadata Add `experimental/pedometer` (#1587) 2 years ago
CHANGELOG.md Add `experimental/pedometer` (#1587) 2 years ago
LICENSE Add `experimental/pedometer` (#1587) 2 years ago
README.md Add `experimental/pedometer` (#1587) 2 years ago
analysis_options.yaml Add `experimental/pedometer` (#1587) 2 years ago
classes.jar Add `experimental/pedometer` (#1587) 2 years ago
ffigen.yaml Add `experimental/pedometer` (#1587) 2 years ago
jnigen.yaml Add `experimental/pedometer` (#1587) 2 years ago
pubspec.yaml Add `experimental/pedometer` (#1587) 2 years ago

README.md

FFIgen + JNIgen pedometer

This is a demo for some of our tooling around calling platform APIs directly from dart code. This repository represents a demo of a plugin that leverages FFIgen & JNIgen. There is also an example pedometer app that uses the bindings generated from these tools.

  • FFIgen is used to generate bindings for C, Objective-C and Swift APIs
  • JNIgen is used to generate bindings for Jave and Kotlin APIs

These tools are both experimental and are currently a work in progress. If you find any issues or have feedback, please file it on the corresponding Github repositories.

Re-generating bindings

The bindings that allow the dart code to call the platform code have already been generated here. You can regenerate them by following the steps below.

FFIgen

Configuration for FFIgen is here for the CoreMotion framework. FFIgen currently does not support autogenerating the code to handle callbacks. So, there were a few steps needed to appropriately handle callbacks in Objective-C. You can read more here.

dart run ffigen --config ffigen.yaml

JNIgen

Configuration for JNIgen is here for the HealthConnect API. Right now, JNIgen requires an Android folder to generate the bindings so there are a few steps to regenerate:

  1. flutter create .
  2. flutter build apk
  3. dart run jnigen --config jnigen.yaml
  4. delete the android folder

Running the example app

Note that step counting is only available on physical devices.

iOS

  • flutter run
  • Allow pedometer app access to step counting

Android

  • Make sure that Google Fit is installed (to ensure that steps are being counted)
  • flutter run
  • Install Health Connect and grant access to Google Fit and the jni_demo app

Project stucture

  • src: Contains the native source code, and a CmakeFile.txt file for building that source code into a dynamic library.

  • lib: Contains the Dart code that defines the API of the plugin, and which calls into the native code using dart:ffi.

  • platform folders (ios etc.): Contains the build files for building and bundling the native code library with the platform application.

  • example: Contains the native source code, and a CmakeFile.txt file for building that source code into a dynamic library.