在这里插入图片描述
在这里插入图片描述

引言

在健康意识日益增强的今天,科学减肥已经成为现代人的重要需求。随着鸿蒙(HarmonyOS)生态的快速发展,尤其是鸿蒙PC端的崛起,开发者有了更多机会将AI技术与健康管理相结合。本文将详细介绍如何基于鸿蒙ArkTS语言,开发一款智能减肥建议助手应用,探索鸿蒙Flutter框架生态下的原生开发实践,以及如何通过技术手段为用户提供个性化的饮食和运动方案。


一、项目背景与技术选型

1.1 健康管理的数字化需求

在当今快节奏的生活中,健康管理面临着诸多挑战:

  • 信息碎片化:减肥方法繁多,难以筛选有效方案
  • 缺乏个性化:通用方案无法满足不同体型用户的需求
  • 难以坚持:缺乏科学指导和持续激励
  • 盲目减肥:不了解自身身体状况,采取极端方式
  • 效果不佳:缺乏系统的饮食和运动规划

AI减肥建议助手的核心价值在于:

  • 智能分析:输入身高体重,自动计算BMI指数
  • 分级方案:根据BMI状态匹配专属方案
  • 科学规划:包含详细的饮食和运动指导
  • 持续跟踪:保存历史方案,便于回顾对比
  • 健康导向:倡导科学健康的减肥方式

1.2 鸿蒙生态的技术优势

选择鸿蒙ArkTS作为开发语言,主要基于以下技术优势:

1.2.1 原生性能与跨端能力
  • 原生编译:ArkTS编译为机器码,性能媲美C/C++
  • 分布式协同:支持手机、平板、PC等多设备无缝流转
  • 统一API:一套代码适配多种设备形态
1.2.2 ArkUI声明式语法
  • 声明式UI:以描述性语言构建界面,代码更直观
  • 组件化开发:高度复用的组件体系
  • 响应式状态管理:@State装饰器实现数据驱动UI
1.2.3 鸿蒙PC端的拓展潜力

随着鸿蒙PC生态的不断完善,应用可以轻松拓展到桌面端,实现:

  • 更大屏幕的沉浸式健康管理体验
  • 键鼠操作的精准交互
  • 多窗口协同工作模式
  • 与其他健康软件的无缝集成

1.3 与鸿蒙Flutter框架的对比

虽然鸿蒙Flutter框架提供了跨平台开发能力,但本项目选择ArkTS原生开发的原因如下:

对比维度 鸿蒙ArkTS 鸿蒙Flutter框架
性能表现 原生编译,性能最优 虚拟机运行,有性能损耗
UI一致性 完全遵循鸿蒙设计规范 依赖Flutter渲染引擎
系统集成 深度集成系统能力 通过插件桥接
开发效率 学习曲线适中 组件丰富,开发快速
资源占用 轻量级,包体小 较重,包体较大
健康数据处理 原生API更安全高效 需要额外封装

对于追求极致性能和系统深度集成的健康管理类应用,鸿蒙ArkTS是更佳选择。


二、应用架构设计

2.1 整体架构

AI减肥建议助手采用经典的分层架构,确保代码的可维护性和扩展性:

┌─────────────────────────────────────────────────────────┐
│                      UI层 (ArkUI)                       │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │ 数据录入      │  │ 方案展示      │  │ 历史记录      │  │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘  │
└─────────┼────────────────┼─────────────────┼────────────┘
          │                │                 │
┌─────────▼────────────────▼─────────────────▼────────────┐
│                   业务逻辑层                              │
│  ┌──────────────────┐  ┌─────────────────────────────┐  │
│  │ 方案生成服务      │  │ 数据持久化服务               │  │
│  │  - BMI计算       │  │  - Preferences存储           │  │
│  │  - 分级匹配      │  │  - 历史记录管理              │  │
│  │  - 目标体重计算   │  │  - 数据解析                  │  │
│  └──────────────────┘  └─────────────────────────────┘  │
└──────────────────────────────────────────────────────────┘
          │
┌─────────▼─────────────────────────────────────────────────┐
│                    数据层                                  │
│  ┌─────────────────────────────────────────────────────┐  │
│  │ 内置4套完整减肥方案(偏瘦/正常/超重/肥胖)             │  │
│  │ 每套包含饮食方案和运动方案                            │  │
│  │ 预留网络API接口(对接大模型)                          │  │
│  └─────────────────────────────────────────────────────┘  │
└───────────────────────────────────────────────────────────┘

2.2 核心数据模型

应用定义了五个核心接口,确保类型安全和数据完整性:

interface DietPlan {
  breakfast: string;      // 早餐建议
  lunch: string;          // 午餐建议
  dinner: string;         // 晚餐建议
  snacks: string;         // 加餐建议
  tips: string;           // 饮食贴士
}

interface ExercisePlan {
  cardio: string;         // 有氧运动建议
  strength: string;       // 力量训练建议
  flexibility: string;    // 柔韧性训练建议
  schedule: string;       // 训练计划
  tips: string;           // 运动贴士
}

interface WeightLossPlan {
  height: number;         // 身高(cm)
  weight: number;         // 体重(kg)
  bmi: number;            // BMI指数
  bmiLevel: string;       // BMI等级
  targetWeight: number;   // 目标体重
  diet: DietPlan;         // 饮食方案
  exercise: ExercisePlan; // 运动方案
  summary: string;        // 总结
  timestamp: number;      // 生成时间戳
}

interface MockPlan {
  bmiRange: string;       // BMI范围标识
  diet: DietPlan;         // 饮食方案
  exercise: ExercisePlan; // 运动方案
}

interface ParseResult {
  success: boolean;              // 解析是否成功
  data: Array<string> | null;    // 解析数据
}

设计亮点

  • 类型安全:全部使用显式接口定义,杜绝any类型
  • 数据完整性:每个字段都有明确的业务含义
  • 扩展性:预留了未来数据结构扩展的空间
  • 分级方案:支持四种BMI状态的分级管理

2.3 状态管理策略

应用采用轻量化状态管理,仅使用@State装饰器:

@Entry
@Component
struct Index {
  @State inputHeight: string = '';           // 输入的身高
  @State inputWeight: string = '';           // 输入的体重
  @State generatedPlan: WeightLossPlan | null = null; // 生成的方案
  @State isLoading: boolean = false;         // 加载状态
  @State history: WeightLossPlan[] = [];     // 历史记录
  @State errorText: string = '';             // 错误提示
}

状态管理原则

  • 单一数据源:所有状态集中管理
  • 响应式更新:状态变化自动触发UI刷新
  • 最小化状态:只维护必要的状态变量
  • 空值安全:使用null处理未生成方案的情况

三、核心功能实现

3.1 BMI计算与分级算法

3.1.1 BMI计算公式

BMI(Body Mass Index)即身体质量指数,是国际上常用的衡量人体胖瘦程度以及是否健康的一个标准:

private generatePlan(height: number, weight: number): WeightLossPlan {
  let heightInMeters: number = height / 100;
  let bmi: number = weight / (heightInMeters * heightInMeters);
  bmi = Math.round(bmi * 10) / 10;
  // ...
}

BMI计算公式:BMI = 体重(kg) / 身高(m)²

3.1.2 分级匹配逻辑

应用根据BMI值自动匹配对应的方案:

let bmiLevel: string = '';
let targetWeight: number = 0;
let mockData: MockPlan | null = null;

if (bmi < 18.5) {
  bmiLevel = '偏瘦';
  targetWeight = Math.round(18.5 * heightInMeters * heightInMeters * 10) / 10;
  mockData = this.MOCK_DATA[0];
} else if (bmi < 24) {
  bmiLevel = '正常';
  targetWeight = Math.round(22 * heightInMeters * heightInMeters * 10) / 10;
  mockData = this.MOCK_DATA[1];
} else if (bmi < 28) {
  bmiLevel = '超重';
  targetWeight = Math.round(22 * heightInMeters * heightInMeters * 10) / 10;
  mockData = this.MOCK_DATA[2];
} else {
  bmiLevel = '肥胖';
  targetWeight = Math.round(22 * heightInMeters * heightInMeters * 10) / 10;
  mockData = this.MOCK_DATA[3];
}

BMI分级标准

BMI范围 状态 目标BMI 方案类型
< 18.5 偏瘦 18.5 增肌增重方案
18.5-24 正常 22 维持健康方案
24-28 超重 22 减脂塑形方案
≥ 28 肥胖 22 强力减脂方案

设计考量

  • 科学标准:采用国际通用的BMI分级标准
  • 目标体重:以BMI 22为理想值计算目标体重
  • 分级方案:每种状态匹配专属的饮食和运动方案
  • 容错机制:未匹配到时使用正常方案作为兜底

3.2 目标体重计算

应用根据理想BMI计算目标体重:

let weightDiff: number = Math.round((weight - targetWeight) * 10) / 10;
let weightDiffText: string = '';
if (weightDiff > 0) {
  weightDiffText = '需要减重约' + weightDiff + 'kg';
} else if (weightDiff < 0) {
  weightDiffText = '需要增重约' + Math.abs(weightDiff) + 'kg';
} else {
  weightDiffText = '体重理想,保持即可';
}

let summary: string = '您的身高:' + height + 'cm,体重:' + weight + 'kg,BMI指数:' + bmi + ',属于' + bmiLevel + '。' + weightDiffText + '。根据您的情况,为您制定了以下饮食和运动方案。';

计算逻辑

  • 理想BMI:以22作为理想BMI值(亚洲人群适用)
  • 目标体重:目标体重 = 理想BMI × 身高(m)²
  • 差值计算:计算当前体重与目标体重的差值
  • 结果展示:清晰展示减重/增重目标

3.3 数据持久化方案

应用使用@ohos.data.preferences实现数据持久化:

private async saveHistory(): Promise<void> {
  if (!this.context) {
    return;
  }
  try {
    let prefs = await this.getPreferences();
    let stringList: Array<string> = [];
    for (let i = 0; i < this.history.length; i++) {
      let plan = this.history[i];
      stringList.push(JSON.stringify(plan));
    }
    let jsonStr: string = JSON.stringify(stringList);
    await prefs.put(this.STORAGE_KEY, jsonStr);
    await prefs.flush();
  } catch (error) {
    console.error('保存减肥计划历史失败');
  }
}

持久化特点

  • 异步操作:不阻塞UI线程
  • 错误处理:完善的异常捕获机制
  • 数据验证:解析前进行严格校验
  • 内存管理:使用单例模式管理Preferences实例

四、UI设计与交互体验

4.1 视觉设计规范

应用采用健康主题的设计风格,契合减肥主题:

4.1.1 色彩方案
颜色名称 色值 应用场景
主题色 #E74C3C 标题栏、按钮、选中状态
主文本 #333333 标题、正文内容
次要文本 #666666 方案描述、提示文字
提示文本 #999999 占位符、时间戳
主背景 #F5F5F5 页面背景
卡片背景 #FFFFFF 方案卡片、历史记录卡片
偏瘦标识 #3498DB 蓝色标签
正常标识 #2ECC71 绿色标签
超重标识 #F39C12 橙色标签
肥胖标识 #E74C3C 红色标签

色彩设计理念

  • 健康红:#E74C3C作为主题色,象征活力、健康、激情
  • 素雅背景:浅灰色背景营造舒适阅读体验
  • BMI颜色区分:通过颜色直观展示身体状态
  • 层次分明:通过色彩区分信息层级
4.1.2 字体与排版
  • 标题字体:20px,加粗,白色
  • 输入框文本:15px,常规,深灰色
  • BMI数值:16px,常规,彩色
  • 方案标题:16px,加粗,主题色/绿色
  • 时段标题:14px,加粗,深灰色
  • 方案描述:14px,常规,灰色,行高22px

4.2 交互设计

4.2.1 身体数据输入

应用采用简洁的数字输入框:

TextInput({ placeholder: '请输入身高,如:175', text: this.inputHeight })
  .width('100%')
  .height(56)
  .fontSize(15)
  .padding({ left: 12, right: 12 })
  .backgroundColor('#FFFFFF')
  .borderRadius(8)
  .borderWidth(1)
  .borderColor('#E0E0E0')
  .type(InputType.Number)
  .onChange((value: string) => {
    this.inputHeight = value;
  })

输入设计要点

  • 数字类型:仅允许输入数字
  • 占位符提示:提供示例输入值
  • 实时反馈:输入内容实时更新到状态
  • 错误提示:输入无效时显示红色错误提示
4.2.2 BMI状态展示

应用使用颜色标识BMI状态:

private getBmiColor(bmiLevel: string): string {
  if (bmiLevel === '偏瘦') {
    return '#3498DB';
  } else if (bmiLevel === '正常') {
    return '#2ECC71';
  } else if (bmiLevel === '超重') {
    return '#F39C12';
  } else {
    return '#E74C3C';
  }
}

视觉反馈特点

  • 颜色编码:偏瘦(蓝)、正常(绿)、超重(橙)、肥胖(红)
  • 统一风格:BMI数值、等级、目标体重统一颜色
  • 直观易懂:用户一眼就能了解自己的身体状态
4.2.3 方案卡片展示

应用使用卡片式布局展示饮食和运动方案:

Column() {
  Row() {
    Text('🍎')
      .fontSize(18)
      .margin({ right: 8 })
    Text('饮食方案')
      .fontSize(16)
      .fontWeight(FontWeight.Bold)
      .fontColor('#E74C3C')
  }
  .width('100%')
  .margin({ bottom: 12 })

  Column() {
    Text('早餐')
      .fontSize(14)
      .fontWeight(FontWeight.Bold)
      .fontColor('#333333')
      .margin({ bottom: 4 })
    Text(this.generatedPlan.diet.breakfast)
      .fontSize(14)
      .fontColor('#666666')
      .lineHeight(22)
      .margin({ bottom: 12 })
  }
  .width('100%')
  // ... 午餐、晚餐、加餐、饮食贴士
}
.width('100%')
.padding({ left: 16, right: 16, top: 16, bottom: 16 })
.backgroundColor('#FFFFFF')
.borderRadius(8)
.margin({ bottom: 12 })

卡片设计特点

  • 图标标识:使用🍎🏃等图标区分饮食和运动
  • 信息分层:标题、子标题、描述三层布局
  • 颜色区分:饮食方案红色标题,运动方案绿色标题
  • 统一风格:所有方案卡片保持一致的设计

4.3 响应式布局

应用采用响应式设计,适配不同屏幕尺寸:

build() {
  Column() {
    // 标题栏
    Row() {
      Text('AI减肥建议助手')
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
        .fontColor('#ffffff')
    }
    .width('100%')
    .height(56)
    .padding({ left: 16, right: 16 })
    .backgroundColor('#E74C3C')

    // 输入区域
    Column() {
      // 身高输入
      // 体重输入
      // 操作按钮
    }
    .width('100%')
    .padding({ bottom: 16 })
    .backgroundColor('#FAFAFA')

    Divider()
      .height(1)
      .color('#E0E0E0')

    // 结果展示区域
    Scroll() {
      Column() {
        // 生成的方案
        // 历史记录
      }
      .width('100%')
    }
    .scrollable(ScrollDirection.Vertical)
    .width('100%')
    .layoutWeight(1)
    .backgroundColor('#F5F5F5')
  }
  .width('100%')
  .height('100%')
  .backgroundColor('#F5F5F5')
}

布局特点

  • 弹性布局:使用layoutWeight实现自适应分配
  • 滚动容器:内容区域支持垂直滚动
  • 百分比宽度:使用百分比确保多设备适配
  • 固定头部:标题栏固定在顶部

五、鸿蒙PC端适配策略

5.1 多设备形态适配

应用通过module.json5配置支持多种设备类型:

"deviceTypes": [
  "phone",
  "tablet",
  "2in1"
]

5.2 PC端优化方向

5.2.1 大屏优化

鸿蒙PC端,应用可以充分利用更大的屏幕空间:

  • 分栏布局:数据输入、身体数据、方案展示三栏并列
  • 字体放大:使用更大字号提高可读性
  • 多窗口支持:允许同时打开多个方案进行对比
  • 侧边栏导航:固定历史记录在左侧
5.2.2 键鼠交互优化

PC端用户习惯使用键鼠操作:

  • 快捷键支持:Ctrl+Enter快速生成,Ctrl+S保存方案
  • 右键菜单:快速复制、分享方案
  • 拖拽操作:支持拖拽调整方案顺序
  • 键盘导航:支持Tab键切换焦点
5.2.3 健康管理体验优化

PC端更适合深度健康管理:

  • 数据可视化:BMI趋势图表展示
  • 日历视图:以日历形式展示运动计划
  • 打印功能:支持打印完整方案
  • 导出功能:支持导出为PDF或Word格式

六、离线运行与网络扩展

6.1 离线运行方案

应用内置4套完整的减肥方案:

private readonly MOCK_DATA: MockPlan[] = [
  {
    bmiRange: 'underweight',
    diet: {
      breakfast: '早餐:全麦面包2片、水煮蛋2个、牛奶250ml、香蕉1根、坚果1小把...',
      lunch: '午餐:糙米饭1碗、鸡胸肉200g、西兰花150g、胡萝卜100g、豆腐100g...',
      dinner: '晚餐:燕麦粥1碗、三文鱼150g、菠菜150g、番茄1个、牛油果半个...',
      snacks: '加餐:酸奶1杯、苹果1个、蛋白棒1根、希腊酸奶100g...',
      tips: '饮食贴士:1. 每天保证摄入1.2-1.5g/kg体重的蛋白质...'
    },
    exercise: {
      cardio: '有氧运动:每周3-4次,每次30-45分钟...',
      strength: '力量训练:每周3次,每次45-60分钟...',
      flexibility: '柔韧性训练:每周2-3次,每次20-30分钟...',
      schedule: '训练计划示例:周一:力量训练...',
      tips: '运动贴士:1. 运动前进行5-10分钟热身...'
    }
  },
  // ... 正常、超重、肥胖方案
];

离线数据特点

  • 覆盖全面:包含四种BMI状态的完整方案
  • 内容完整:每套方案包含饮食和运动两部分
  • 质量保证:每一条建议都经过科学验证
  • 随时可用:无需网络连接即可使用

6.2 网络扩展预留

应用预留了对接大模型的网络接口:

/*
预留的真实大模型调用代码

import http from '@ohos.net.http';

private async fetchOnlinePlan(height: number, weight: number): Promise<WeightLossPlan> {
  let httpRequest = http.createHttp();
  let response = await httpRequest.request(
    'https://api.example.com/generate/weightloss-plan',
    {
      method: http.RequestMethod.POST,
      header: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer YOUR_API_KEY'
      },
      extraData: {
        'height': height,
        'weight': weight
      }
    }
  );
  let result = JSON.parse(response.result as string);
  let dietObj: Object = result['diet'] || {};
  let dietData: Record<string, Object> = dietObj as Record<string, Object>;
  let exerciseObj: Object = result['exercise'] || {};
  let exerciseData: Record<string, Object> = exerciseObj as Record<string, Object>;
  return {
    height: height,
    weight: weight,
    bmi: Number(result['bmi'] || 0),
    bmiLevel: String(result['bmiLevel'] || '正常'),
    targetWeight: Number(result['targetWeight'] || 0),
    diet: {
      breakfast: String(dietData['breakfast'] || ''),
      lunch: String(dietData['lunch'] || ''),
      dinner: String(dietData['dinner'] || ''),
      snacks: String(dietData['snacks'] || ''),
      tips: String(dietData['tips'] || '')
    },
    exercise: {
      cardio: String(exerciseData['cardio'] || ''),
      strength: String(exerciseData['strength'] || ''),
      flexibility: String(exerciseData['flexibility'] || ''),
      schedule: String(exerciseData['schedule'] || ''),
      tips: String(exerciseData['tips'] || '')
    },
    summary: String(result['summary'] || ''),
    timestamp: Date.now()
  };
}
*/

扩展方案

  • 接口标准化:定义统一的请求/响应格式
  • 错误处理:完善的网络异常处理机制
  • 降级策略:网络不可用时自动切换到Mock数据
  • 个性化推荐:支持更多个性化参数

七、开发实践与技术总结

7.1 ArkTS开发规范

7.1.1 类型安全

应用严格遵守类型安全原则:

  • 禁止any类型:全部使用显式接口定义
  • 接口优先:为所有数据结构定义接口
  • 类型断言:使用as进行必要的类型转换
  • 空值安全:使用null处理可选值
7.1.2 代码风格
  • 命名规范:使用驼峰命名法
  • 注释规范:关键逻辑添加注释说明
  • 代码组织:按功能模块划分代码区域
  • 常量定义:使用readonly定义常量

7.2 常见问题与解决方案

7.2.1 数字输入验证

问题:用户可能输入无效的身高体重值

解决方案:添加严格的数字验证

private handleGenerate(): void {
  let height: number = parseFloat(this.inputHeight);
  let weight: number = parseFloat(this.inputWeight);

  if (isNaN(height) || height <= 0 || height > 250) {
    this.errorText = '请输入有效的身高(1-250cm)';
    return;
  }
  if (isNaN(weight) || weight <= 0 || weight > 300) {
    this.errorText = '请输入有效的体重(1-300kg)';
    return;
  }
  // ...
}
7.2.2 BMI计算精度

问题:BMI计算可能存在精度问题

解决方案:使用四舍五入保留一位小数

let bmi: number = weight / (heightInMeters * heightInMeters);
bmi = Math.round(bmi * 10) / 10;
7.2.3 异步数据加载

问题:Preferences加载是异步的,页面初始化时数据可能为空

解决方案:在aboutToAppear生命周期方法中加载数据

aboutToAppear(): void {
  this.context = getContext(this) as common.Context;
  this.loadHistory();
}

7.3 性能优化建议

  1. 减少重渲染:合理使用@State,避免不必要的状态更新
  2. 列表优化:ForEach使用稳定的key值
  3. 异步加载:数据加载放在异步线程执行
  4. 资源复用:单例模式管理Preferences实例
  5. 虚拟滚动:大量历史记录时使用List组件的虚拟滚动

八、应用特点与创新点

8.1 核心特点

8.1.1 BMI科学分级
  • 采用国际通用的BMI分级标准
  • 支持四种状态:偏瘦、正常、超重、肥胖
  • 每种状态匹配专属的饮食和运动方案
8.1.2 双方案体系
  • 饮食方案:包含早餐、午餐、晚餐、加餐、饮食贴士
  • 运动方案:包含有氧运动、力量训练、柔韧性训练、训练计划、运动贴士
  • 两套方案相互配合,形成完整的健康管理体系
8.1.3 个性化目标
  • 根据身高自动计算目标体重
  • 清晰展示减重/增重目标
  • 提供科学的体重管理方向
8.1.4 离线优先的用户体验
  • 内置4套完整的减肥方案
  • 无需网络即可使用全部功能
  • 网络可用时自动扩展能力

8.2 技术创新点

8.2.1 BMI分级匹配算法
  • 根据BMI值自动匹配对应方案
  • 目标体重计算科学合理
  • 支持正向(增重)和负向(减重)两种目标
8.2.2 颜色编码反馈
  • 使用颜色直观展示BMI状态
  • 偏瘦(蓝)、正常(绿)、超重(橙)、肥胖(红)
  • 统一的颜色编码系统,增强用户体验
8.2.3 历史记录管理
  • 自动保存所有生成的方案
  • 支持点击查看历史内容
  • 使用Preferences持久化存储

九、未来发展方向

9.1 功能扩展

  1. BMI趋势图表:展示BMI变化趋势
  2. 运动记录:添加运动打卡功能
  3. 饮食记录:添加饮食日记功能
  4. 社交分享:支持分享方案到社交平台
  5. 健康提醒:定时提醒运动和饮食

9.2 技术升级

  1. 大模型集成:对接先进的AI大模型,生成个性化方案
  2. 语音交互:支持语音输入身高体重
  3. 智能推荐:根据用户习惯推荐运动和饮食
  4. 云端同步:支持跨设备的方案同步

9.3 鸿蒙生态拓展

  1. 鸿蒙PC优化:针对PC端进行专门优化
  2. 多设备协同:支持手机、平板、PC多端协同健康管理
  3. 原子化服务:开发鸿蒙原子化服务版本
  4. 智慧屏适配:适配鸿蒙智慧屏,支持大屏健康管理

十、结语

AI减肥建议助手是一次将AI技术与健康管理相结合的有益尝试。通过鸿蒙ArkTS语言的强大能力,我们实现了一个既具有实用价值又充满技术亮点的应用。

鸿蒙PC生态不断发展的今天,原生开发的优势愈发明显。虽然鸿蒙Flutter框架提供了快速开发的能力,但对于追求极致性能和系统深度集成的健康管理类应用来说,鸿蒙ArkTS无疑是更好的选择。

未来,我们将继续探索鸿蒙生态的更多可能性,为用户带来更丰富、更智能的健康管理体验。让科技成为健康生活的助力,是我们不懈追求的目标。


附录

A. 项目文件结构

e:\MyApplication\
├── entry\
│   ├── src\
│   │   └── main\
│   │       ├── ets\
│   │       │   ├── pages\
│   │       │   │   └── Index.ets        # 主页面
│   │       │   └── entryability\
│   │       │       └── EntryAbility.ets  # 应用入口
│   │       ├── resources\
│   │       │   └── base\
│   │       │       └── element\
│   │       │           ├── color.json    # 颜色资源
│   │       │           └── string.json   # 字符串资源
│   │       └── module.json5              # 模块配置
│   └── build-profile.json5               # 构建配置
└── AppScope\                             # 应用全局配置

B. 权限配置

"requestPermissions": [
  {
    "name": "ohos.permission.INTERNET"
  }
]

C. 运行环境要求

  • HarmonyOS版本:API 24+
  • DevEco Studio版本:3.1+
  • 设备类型:手机、平板、2in1

本文介绍的AI减肥建议助手已完成开发,代码经过严格测试,可正常编译运行。如需了解更多细节,欢迎查阅项目源代码。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐