kinestex_sdk_flutter

Last updated:

0 purchases

kinestex_sdk_flutter Image
kinestex_sdk_flutter Images
Add to Cart

Description:

kinestex sdk flutter

Demo project: https://github.com/KinesteX/KinesteX-SDK-Flutter
KinesteX AI #
INTEGRATE AI FITNESS & PHYSIO TRAINER IN YOUR APP IN MINUTES #
Available Integration Options #
Integration Options #



Integration Option
Description
Features
Details




Complete User Experience
Leave it to us to recommend the best workout routines for your customers, handle motion tracking, and overall user interface. High level of customization based on your brand book for a seamless experience.
- Long-term lifestyle workout plans - Specific body parts and full-body workouts - Individual exercise challenges (e.g., 20 squat challenge)
View Integration Options


Custom User Experience
Integrate the camera component with motion tracking. Real-time feedback on all customer movements. Control the position, size, and placement of the camera component.
- Real-time feedback on customer movements - Communication of every repeat and mistake - Customizable camera component position, size, and placement
View Details




Configuration #
Permissions #
AndroidManifest.xml
Add the following permissions for camera and microphone usage:
<!-- Add this line inside the <manifest> tag -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIDEO_CAPTURE" />
copied to clipboard
Info.plist
Add the following keys for camera and microphone usage:
<key>NSCameraUsageDescription</key>
<string>Camera access is required for video streaming.</string>
copied to clipboard
Install libraries #
Add the following dependency to your pubspec.yaml:
dependencies:
kinestex_sdk_flutter: ^@latest
copied to clipboard
Usage #
Initial Setup #


Prerequisites: Ensure you’ve added the necessary permissions in AndroidManifest.xml and Info.plist.


Launching the View: Initialize essential widgets, check, and request for camera permission before launching KinesteX.


void _checkCameraPermission() async {
if (await Permission.camera.request() != PermissionStatus.granted) {
_showCameraAccessDeniedAlert();
}
}

void _showCameraAccessDeniedAlert() {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: const Text("Camera Permission Denied"),
content: const Text("Camera access is required for this app to function properly."),
actions: <Widget>[
TextButton(
child: const Text("OK"),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
}
copied to clipboard
Integration Options #



functions
Description




createMainView
Integration of our Complete UX


createPlanView
Integration of Individual Plan Component


createWorkoutView
Integration of Individual Workout Component


createChallengeView
Integration of Individual Exercise in a challenge form


createCameraComponent
Integration of our camera component with pose-analysis and feedback



Available Categories to Sort Plans #



Plan Category (key: planCategory)




Strength


Cardio


Weight Management


Rehabilitation



Example Integration #

Create a reference to KinesteXAIFramework component:

ValueNotifier<bool> showKinesteX = ValueNotifier<bool>(false);
ValueNotifier<int> reps = ValueNotifier<int>(0);
ValueNotifier<String> mistake = ValueNotifier<String>("--");
ValueNotifier<String?> updateExercise = ValueNotifier<String?>(null);

void handleWebViewMessage(WebViewMessage message) {
switch (message.type) {
case 'exit_kinestex':
// hide KinesteX view
showKinesteX.value = false;
break;
// Handle all other cases as needed
default:
log('Other message: ${message.data}');
}
}
copied to clipboard

Display KinesteX with Main Integration Option:

KinesteXAIFramework.createMainView(
apiKey: 'YOUR API KEY',
companyName: 'YOUR COMPANY',
userId: 'YOUR USER ID',
planCategory: PlanCategory.Cardio, // pass the plan category
isShowKinesTex: showKinesteX,
isLoading: ValueNotifier<bool>(false),
onMessageReceived: handleWebViewMessage,
);
copied to clipboard
Examples for Each Integration Option #
Individual Plan
KinesteXAIFramework.createPlanView(
apiKey: 'YOUR API KEY',
companyName: 'YOUR COMPANY',
userId: 'YOUR USER ID',
planName: 'Circuit Training', // pass the name of the plan
isShowKinesTex: showKinesteX,
isLoading: ValueNotifier<bool>(false),
onMessageReceived: handleWebViewMessage,
);
copied to clipboard
Individual Workout
KinesteXAIFramework.createWorkoutView(
apiKey: 'YOUR API KEY',
companyName: 'YOUR COMPANY',
userId: 'YOUR USER ID',
workoutName: 'Circuit Training', // pass the name of the workout
isShowKinesTex: showKinesteX,
isLoading: ValueNotifier<bool>(false),
onMessageReceived: handleWebViewMessage,
);
copied to clipboard
Challenge Component

Change postData:

const postData = {
'key': apiKey,
'userId': 'YOUR USER ID',
'company': 'YOUR COMPANY NAME',
'exercise': 'Squats',
'countdown': 100,
};
copied to clipboard

Change integration option in KinesteXSDK:

KinesteXAIFramework.createChallengeView(
apiKey: 'YOUR API KEY',
companyName: 'YOUR COMPANY',
userId: 'YOUR USER ID',
exercise: 'Squats', // pass the name of the challenge exercise
countdown: 100, // duration of the challenge in seconds
isShowKinesTex: showKinesteX,
isLoading: ValueNotifier<bool>(false),
onMessageReceived: handleWebViewMessage,
);
copied to clipboard
Camera Component

Change postData:

const postData = {
'key': apiKey,
'userId': 'YOUR USER ID',
'company': 'YOUR COMPANY NAME',
'currentExercise': 'Squats',
'exercises': ['Squats', 'Jumping Jack'],
};
copied to clipboard

Changing current exercise:

void changeExercise() {
updateExercise.value = 'Jumping Jack';
}
copied to clipboard

Displaying KinesteXSDK:

KinesteXAIFramework.createCameraComponent(
apiKey: 'YOUR API KEY',
companyName: 'YOUR COMPANY',
userId: 'YOUR USER ID',
exercises: ['Squats', 'Jumping Jack'],
currentExercise: 'Squats',
isShowKinesTex: showKinesteX,
isLoading: ValueNotifier<bool>(false),
onMessageReceived: handleWebViewMessage,
updatedExercise: updateExercise.value,
);
copied to clipboard

Handle message for reps and mistakes a person has done:

void handleWebViewMessage(WebViewMessage message) {
switch (message.type) {
case 'reps':
reps.value = message.data['value'] ?? 0;
break;
case 'mistake':
mistake.value = message.data['value'] ?? '--';
break;
default:
log('Other message: ${message.data}');
}
}
copied to clipboard
Data Points #
The KinesteX SDK provides various data points that are returned through the message callback. Here are the available data types:



Type
Data
Description




kinestex_launched
dd mm yyyy hours:minutes:seconds
When a user has launched KinesteX


exit_kinestex
date: dd mm yyyy hours:minutes:seconds, time_spent: number
Logs when a user clicks the exit button and the total time spent


plan_unlocked
title: String, date: date and time
Logs when a workout plan is unlocked by a user


workout_opened
title: String, date: date and time
Logs when a workout is opened by a user


workout_started
title: String, date: date and time
Logs when a workout is started by a user


exercise_completed
time_spent: number, repeats: number, calories: number, exercise: string, mistakes: [string: number]
Logs each time a user finishes an exercise


total_active_seconds
number
Logs every 5 seconds, counting the active seconds a user has spent working out


left_camera_frame
number
Indicates that a user has left the camera frame


returned_camera_frame
number
Indicates that a user has returned to the camera frame


workout_overview
workout: string, total_time_spent: number, total_repeats: number, total_calories: number, percentage_completed: number, total_mistakes: number
Logs a complete summary of the workout


exercise_overview
[exercise_completed]
Returns a log of all exercises and their data


workout_completed
workout: string, date: dd mm yyyy hours:minutes:seconds
Logs when a user finishes the workout and exits the workout overview


active_days (Coming soon)
number
Represents the number of days a user has been opening KinesteX


total_workouts (Coming soon)
number
Represents the number of workouts a user has done since starting to use KinesteX


workout_efficiency (Coming soon)
number
Represents the level of intensity with which a person has completed the workout



Contact #
If you have any questions, contact: [email protected]

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.