归悦可 发表于 8 小时前

【一步步开发AI运动APP】十二、自定义扩展新运动项目03

之前我们为您分享了【一步步开发AI运动小程序】开发系列博文,通过该系列博文,很多开发者开发出了很多精美的AI健身、线上运动赛事、AI学生体测、美体、康复锻炼等应用场景的AI运动小程序;为了帮助开发者继续深耕AI运动领域市场,今天开始我们将为您分享新系列【一步步开发AI运动APP】的博文,带您开发性能更强、体验更好的AI运动APP。
前两篇博文为介绍了自定义扩展运动的基本架构及运动分析器的定义,根据前两篇的介绍您已可以实现自定义运动了。自定义扩展运动分析器开发出来后,如何统一进行管理、调用创建呢,这也是uni-app APP版插件与小程序版本插件在自定义扩展运动能力上最大的差别了,本篇就为您介绍自定义扩展运动的最后环节统一管理运动分析器实现。
一、为什么要统一管理运动分析器

统一的运动分析器管理并不是必须的,在没有统一的运动分析器管理的情况下,也是可以实现扩展运动分析器的实例化和运动列表获取,代码如下:
import { getSports } from "@/uni_modules/yz-ai-sport";
import { BothHandsUpSport } from "./both-hands-up";

//构建运动列表,统一管理实现相同
const items = getSports(); //获取内置的运动列表
items.push(BothHandsUpSport.getDescriptor());//向列表添加扩展的运动
//...更多运动

//构建运动
const bothHandsUpSport = new BothHandsUpSport();
//获得运动分析器实例
const sport = bothHandsUpSport.getSportInstance();既然按上述代码能实现运动列表及扩展运动的调用,为什么还要再实现统一的运动管理呢?这是为了提高代码重用率,减少重复代码、增强代码健壮性、提高代码可维护性,试想如果自定义了10几个运动、整个应用多处要调用运动列表、创建运动,那么将有几十行代码在多处重复、后期扩展运动的迭代也是灾难性的,所以要实现统一的运动管理。
二、APP版插件管理运动分析器的差异

受限于uni-app的新旧框架差异、目标平台实现差异和APP版插件运行在原生基座中等因素,APP版本插件没有再像小程序版插件提供扩展运动注册接口SportBase.registr,简单注册后插件便会统一维护管理所有的运动分析器。但是统一的运动分析器管理实现难度并不高,也可以使用插件的Demo实现即可。
三、实现统一的运动分析器管理

统一的运动分析管理器核心的功能便是提供统一的运动列表获取、运动创建调用入口,完整代码如下:
import { getSports, createSport } from "@/uni_modules/yz-ai-sport";
import { BothHandsUpSport } from "./both-hands-up";

/**
* 获取所有的运动项目(含内置及扩展)
*
* @returns {SportDescriptorItem[]} 运动描述列表
*/
export function getAllSports() {
        let items = getSports();
        items.push(BothHandsUpSport.getDescriptor());

        return items;
}

/**
* 创建全范围(含扩展、内置)的运动
*/
export function createFullSport(key) {
        let sports = getSports();
        if (sports.some(x => x.key == key))
                return createSport(key);

        switch (key.toLowerCase()) {
                case 'both-hands-up':
                        const bothHandsUpSport = new BothHandsUpSport();
                        return bothHandsUpSport.getSportInstance();
                default:
                        throw new Error(`没有找到${key}运动。`);
        }
}四、写在最后

至此,关于自定义扩展运动的能力就为你介绍完了,详细完整的代码都可以在插件资料的demo示例项目中找到,并且提供uni-app和uni-app x两套实现,完美兼容新旧两套框架。
强调基础能力,提供高扩展性一直是插件秉持的开发理念,自定义姿态和自定义运动识别检测作为小程序、APP、终端系列插件的核心能力之一,也深受使用者的好评,可以助力APP和小程序轻松拓展更多的应用场景。
后续章节我们将继续为您分享一些典型的AI运动功能实现技巧,敬请期待...


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 【一步步开发AI运动APP】十二、自定义扩展新运动项目03