news 2026/9/2 10:47:35

Android毕业设计:老年人服药提醒APP开发全攻略

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android毕业设计:老年人服药提醒APP开发全攻略

简介:本资源是一套面向计算机专业本科生的Android毕业设计实战项目,聚焦老年人健康管理中的服药依从性痛点,提供完整的服药提醒APP解决方案。项目采用Android原生开发技术栈,基于Java语言实现,涵盖前端界面、后台逻辑与本地数据库(含medication.sql结构脚本),功能模块包括首页用药展示、定时提醒设置、用药记录管理及个人中心等,贴合真实老年用户操作习惯与无障碍交互需求。压缩包共5个文件,包含源码(分前后端ZIP)、使用说明文档(DOC格式)、数据库脚本(SQL)及简要README(TXT),总大小46.04MB,结构清晰、模块解耦合理,便于学习者理解MVC分层设计与Android定时任务(AlarmManager/WorkManager)实践。已有296人下载学习,适合Android初学者开展课程设计、毕设选题或移动端健康类应用开发参考。

1. 项目缘起与核心价值:为什么选择“老年人服药提醒”作为毕业设计?

做毕业设计,尤其是计算机或软件工程专业的同学,常常会陷入一个两难境地:选题太简单,显得技术含量不足,难以体现大学四年的学习成果;选题太复杂,又怕时间精力不够,最后无法完成。如果你正在为Android方向的毕业设计选题发愁,那么“老年人服药提醒APP”这个方向,或许是一个能兼顾技术深度、实用价值与社会意义的绝佳选择。

我当年毕业设计做的就是类似方向的健康管理应用,后来在带学弟学妹做项目时,也多次推荐这个主题。它之所以“香”,原因很直接:需求真实、技术栈全面、扩展性强,且极易产出有亮点的论文和作品。对于老年人群体,尤其是患有慢性病需要长期服药的老人,漏服、错服药物是日常生活中高频发生的风险事件。一个设计得当的提醒APP,能切实解决这个痛点。从技术层面看,这个项目几乎涵盖了Android应用开发的核心模块:UI/布局(展示药品和提醒)、后台服务与广播(定时提醒)、本地数据库(存储药品和服药记录)、通知系统(弹出提醒),甚至还可以拓展到数据统计、云端同步、语音播报等。这意味着你可以在一个项目里,系统地实践和展示你对Android开发的理解。

更重要的是,这个选题在答辩时“故事”好讲。你可以从社会老龄化背景、子女关怀需求、健康管理数字化趋势切入,很容易引起评委老师的共鸣。相比于一些“为做而做”的管理系统,它的社会价值和实用性一目了然,能为你的论文增色不少。接下来,我将结合一个典型的实现方案,为你拆解从零到一构建这样一个APP的核心技术点、设计思路以及那些容易踩坑的细节。

2. 核心功能模块拆解与数据库设计

一个完整的服药提醒APP,远不止一个简单的闹钟。我们需要从用户(主要是老年人及其家属)的实际使用场景出发,拆解出必须的核心功能。这里我将其归纳为四大模块:

2.1 药品与提醒计划管理

这是APP的基石。用户需要能添加、编辑、删除需要服用的药品。每条药品信息至少应包括:药品名称、规格(如10mg/片)、每次服用剂量(如2片)、用途备注。更重要的是,要能基于药品创建复杂的服药计划。一个老人一天可能在不同时间点服用多种药物,因此计划需要支持:

  • 多时段设置:例如,早、中、晚、睡前。
  • 自定义周期:每日、隔日、每周特定几天(如每周一、三、五)。
  • 重复与结束:设置开始日期,以及是否无限重复或指定结束日期。

在设计上,我建议将“药品”和“提醒计划”分开成两张表。一张Medicine表存储药品静态信息,另一张Reminder表存储具体的提醒时间、关联的药品ID、剂量等。这样设计更灵活,比如同一种药可以设置早晚各一次的提醒。

2.2 智能提醒与通知系统

这是项目的技术核心,也是体验的关键。提醒不能只是一个简单的AlarmManager了事,需要考虑多种场景:

  1. 精准定时触发:使用AlarmManager设置精确的、即使应用退到后台或手机重启后依然有效的定时任务。这里强烈建议使用AlarmManagersetExactAndAllowWhileIdle()方法,以应对Android 6.0以上的休眠优化。
  2. 丰富可感知的通知:触发后,通过NotificationCompat构建一个无法被轻易忽略的通知。这包括:
    • 大文本样式显示药品名、剂量和服用时间。
    • 高优先级通道(NotificationChannel)并设置重要程度为HIGHMAX
    • 添加自定义振动模式(长震动)和铃声。
    • 在通知上添加直接操作的按钮,如“标记为已服用”、“延迟10分钟”。
  3. 延迟与跳过逻辑:用户可能当时不方便,需要“延迟”处理。这时不是简单地重新设置一个完全一样的闹钟,而是应该记录这次延迟操作,并可能影响后续的服药记录统计。

2.3 服药记录与历史统计

记录每一次的服药操作(按时、延迟、跳过),是APP价值的延伸。基于这些数据,可以生成可视化的统计图表,例如:

  • 七日服药依从率:过去七天按时服药的百分比。
  • 药品服用历史日历:以日历形式高亮显示哪天有漏服。
  • 月度报告:总结本月服药情况。

这部分需要设计一张IntakeRecord表,关联ReminderID,记录实际服药时间、计划服药时间以及状态(已服、跳过、漏服)。图表绘制可以使用成熟的库,如MPAndroidChart,它能大大简化折线图、柱状图的开发。

2.4 家属端关怀与数据同步(进阶方向)

如果想让项目脱颖而出,可以考虑加入家属端功能。核心思路是引入一个简单的账户系统(如使用手机号注册登录),通过云端数据库(如Firebase Firestore或国内合规的云服务商提供的数据库)同步老人的服药计划和记录。家属在自己的手机上安装同一个APP,登录后即可查看老人的服药计划、接收漏服提醒、帮助远程添加药品。这个功能能极大提升项目的完整度和创新性,在论文中可以作为“未来工作展望”或“特色功能”重点阐述。

数据库设计草图(使用SQLite)这里给出一个最简化的核心表结构,你可以根据需求扩展字段。

-- 药品表 CREATE TABLE medicine ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, -- 药品名称 dosage TEXT, -- 规格,如“10mg/片” notes TEXT -- 备注 ); -- 提醒计划表 CREATE TABLE reminder ( id INTEGER PRIMARY KEY AUTOINCREMENT, medicine_id INTEGER NOT NULL, -- 关联药品ID time TEXT NOT NULL, -- 提醒时间,如“08:00” dose TEXT, -- 本次剂量,如“2片” days_of_week TEXT, -- 每周哪几天,如“1,2,3,4,5,6,7”代表每天 is_active INTEGER DEFAULT 1, -- 是否激活 start_date TEXT, -- 开始日期 end_date TEXT, -- 结束日期,为空则无限 FOREIGN KEY (medicine_id) REFERENCES medicine(id) ON DELETE CASCADE ); -- 服药记录表 CREATE TABLE intake_record ( id INTEGER PRIMARY KEY AUTOINCREMENT, reminder_id INTEGER NOT NULL, -- 关联的提醒ID scheduled_time TEXT NOT NULL, -- 计划服药时间 actual_time TEXT, -- 实际服药时间,为空表示漏服 status INTEGER DEFAULT 0, -- 状态:0-未处理,1-已服,2-跳过 FOREIGN KEY (reminder_id) REFERENCES reminder(id) );

3. 关键技术实现与避坑指南

有了清晰的设计,接下来就是编码实现。下面我挑几个最容易出问题、也最能体现技术深度的环节详细说明。

3.1 确保提醒准时送达:AlarmManager与WorkManager的抉择

这是项目的“命脉”。很多初学者做的提醒APP,锁屏几分钟后就失效了,问题就出在这里。

  • 为什么不能只用HandlerTimer这两种方式只在应用进程存活时有效。一旦应用被切换到后台,系统为了省电可能会回收其进程,定时任务就灰飞烟灭了。
  • AlarmManager的正确姿势:它是系统级别的定时服务,不受应用生命周期影响。关键步骤:
    1. 创建PendingIntent,指向一个广播接收器(BroadcastReceiver),例如ReminderAlarmReceiver
    2. 使用AlarmManager.setExactAndAllowWhileIdle()设置精确闹钟。即使设备处于低电耗模式(Doze),它也能在一定周期内被触发。
    3. ReminderAlarmReceiveronReceive()方法中,启动一个服务(如ReminderNotificationService)来创建和发送通知。为什么要在服务里做?因为onReceive()执行时间很短,复杂操作(如从数据库读取数据、构建复杂通知)可能超时。
    // 设置闹钟示例 (Kotlin) val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager val intent = Intent(context, ReminderAlarmReceiver::class.java).apply { putExtra("REMINDER_ID", reminderId) } val pendingIntent = PendingIntent.getBroadcast( context, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) val triggerTime = ... // 计算下一次触发的时间戳 alarmManager.setExactAndAllowWhileIdle( AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent )
  • WorkManager可以作为补充WorkManager更适合处理可延迟的、需要保证执行的后台任务,比如每天凌晨同步一次数据。对于需要精确到分钟的服药提醒,AlarmManager仍是首选。但你可以用WorkManager来执行每日清理旧记录、生成统计报告等不要求精确时间的任务。

避坑提示1:应对Android 8.0以上的后台限制从Android 8.0开始,后台服务受到严格限制。如果你的ReminderNotificationService继承自Service,在后台启动它可能会抛出IllegalStateException。解决方案是使用startForegroundService()并立即在服务中调用startForeground(),提供一个持续的通知。但为了更好的用户体验,更推荐的做法是:在BroadcastReceiver中直接使用NotificationManagerCompat来发送通知,避免启动服务,除非有长时间运行的任务。

3.2 构建高可见度的通知

对于老年人,通知必须足够醒目。你需要掌握NotificationChannel(Android 8.0+)的配置。

// 在Application或主Activity中创建通知渠道 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val channel = NotificationChannel( "MEDICATION_REMINDER_CHANNEL", "用药提醒", NotificationManager.IMPORTANCE_HIGH // 设置为高重要性 ).apply { description = "服药时间提醒" enableVibration(true) vibrationPattern = longArrayOf(0, 1000, 500, 1000) // 自定义振动 lockscreenVisibility = Notification.VISIBILITY_PUBLIC // 锁屏可见 } val notificationManager = getSystemService(NotificationManager::class.java) notificationManager.createNotificationChannel(channel) }

发送通知时,务必使用NotificationCompat.Builder以保证兼容性,并添加操作按钮。

val snoozeIntent = Intent(context, ReminderActionReceiver::class.java).apply { action = "ACTION_SNOOZE" putExtra("REMINDER_ID", reminderId) } val snoozePendingIntent = PendingIntent.getBroadcast(context, snoozeId, snoozeIntent, PendingIntent.FLAG_UPDATE_CURRENT) val builder = NotificationCompat.Builder(context, "MEDICATION_REMINDER_CHANNEL") .setSmallIcon(R.drawable.ic_pill_notification) .setContentTitle("用药时间到!") .setContentText("请服用:${medicineName},剂量:${dose}") .setPriority(NotificationCompat.PRIORITY_HIGH) .setAutoCancel(true) .addAction(R.drawable.ic_check, "已服用", takePendingIntent) // “已服用”按钮 .addAction(R.drawable.ic_snooze, "10分钟后提醒", snoozePendingIntent) // “延迟”按钮 NotificationManagerCompat.from(context).notify(notificationId, builder.build())

3.3 本地数据持久化:Room数据库的优雅使用

虽然可以直接用SQLiteOpenHelper,但我强烈建议在毕业设计中使用Jetpack组件中的Room持久化库。它能让你的代码更简洁、更安全,并且是Google官方推荐的最佳实践,在答辩时也是一个技术亮点。

  1. 定义实体(Entity):对应数据库的表,上面数据库设计中的MedicineReminderIntakeRecord类就是实体。
  2. 创建数据访问对象(DAO):在这里定义查询、插入、更新、删除的方法。Room会在编译时检查SQL语法错误。
  3. 建立数据库(Database):一个继承自RoomDatabase的抽象类,用于关联实体和DAO。
// 以Medicine为例 @Entity(tableName = "medicine") data class Medicine( @PrimaryKey(autoGenerate = true) val id: Long = 0, @ColumnInfo(name = "name") val name: String, @ColumnInfo(name = "dosage") val dosage: String?, @ColumnInfo(name = "notes") val notes: String? ) @Dao interface MedicineDao { @Query("SELECT * FROM medicine ORDER BY name") fun getAll(): Flow<List<Medicine>> // 使用Flow,便于在UI中观察数据变化 @Insert suspend fun insert(medicine: Medicine) @Update suspend fun update(medicine: Medicine) @Delete suspend fun delete(medicine: Medicine) } @Database(entities = [Medicine::class, Reminder::class, IntakeRecord::class], version = 1) abstract class AppDatabase : RoomDatabase() { abstract fun medicineDao(): MedicineDao abstract fun reminderDao(): ReminderDao abstract fun recordDao(): IntakeRecordDao }

使用FlowLiveData来观察数据变化,可以轻松实现UI的自动更新,这是MVVM架构的基础。

避坑提示2:数据库升级与数据迁移在开发过程中,你的数据库结构可能会改变(比如增加字段)。如果你直接增加@ColumnInfo然后运行,APP会崩溃,提示IllegalStateException: Room cannot verify the data integrity。你需要处理数据库版本升级。在@Database注解中增加版本号,并实现一个Migration对象。对于毕业设计,如果还在频繁修改阶段,一个简单(但不适用于生产环境)的办法是使用.fallbackToDestructiveMigration(),它会在版本不一致时删除旧表重建,但这会丢失所有用户数据!仅限开发测试阶段使用。

4. UI/UX设计要点:为老年人量身打造

功能再强大,如果老人不会用、看不清、点不准,一切都是零。UI设计是这个项目人文关怀的体现。

4.1 视觉设计原则

  • 大字体、高对比度:所有关键文字,如药品名、时间、按钮文字,至少使用18sp以上的字体。前景色和背景色对比度要强烈,避免使用浅灰配白底这种组合。
  • 大点击区域:按钮要足够大,并且留足padding。遵循Material Design建议的最小48dp触摸目标尺寸。
  • 简化流程:添加药品和设置提醒的步骤要尽可能少。可以考虑使用向导式界面,一步一步引导。
  • 图标与文字结合:多用直观的图标(如药丸、时钟、日历),但一定要配以清晰的文字说明,因为图标含义对老年人可能不明确。

4.2 核心界面布局建议

  1. 主页(Home):采用清晰的卡片列表,展示今日的所有待办提醒。每个卡片显示药品名、时间、剂量,并有醒目的“已服用”按钮。顶部可以显示今天的日期和总体服药进度条。
  2. 药品库(Medicine List):一个简单的列表,点击进入详情或编辑。添加药品的按钮(FAB)要非常醒目。
  3. 添加/编辑提醒界面:这是核心交互点。使用TimePickerDialog选择时间,用一组CheckBox或更直观的“星期选择器”来设置重复日期。所有选项都要一目了然。
  4. 历史统计(History):图表页。使用MPAndroidChart绘制柱状图显示每周依从率。避免过于复杂的交互,以展示为主。

4.3 交互反馈与容错

  • 操作确认:删除药品或提醒时,必须弹出对话框二次确认。
  • 状态反馈:点击“已服用”后,按钮应立即变为不可用状态,并可以改变颜色或文字(如变为“已完成”),同时伴有简短的振动或声音反馈。
  • 输入验证:在用户输入药品信息时,实时验证必填字段,并给出明确的错误提示(如“药品名称不能为空”),提示文字用红色,清晰可见。

5. 从项目到论文:毕业设计文档的撰写思路

有了可运行的APP,毕业设计只完成了一半。一份逻辑清晰、内容翔实的论文或设计文档,是展示你工作成果和思考深度的关键。

5.1 绪论与背景

不要空谈“互联网发展”,要聚焦于具体问题。阐述中国社会老龄化加剧、空巢老人增多、慢性病服药管理困难的现状。引用一些关于老年人用药依从性的统计数据,引出开发一款易用、可靠的服药提醒APP的必要性和社会意义。

5.2 相关技术与工具综述

这部分展示你的技术视野。分点介绍:

  • Android开发框架:简述Android系统架构、四大组件(特别是本项目用到的Activity、Service、BroadcastReceiver、ContentProvider)。
  • 关键技术选型:解释为什么选择Kotlin(相比Java的简洁、安全)、Room(相比原生SQLite的便捷)、AlarmManager(用于精确提醒)。
  • UI设计规范:提及Material Design,并说明你为适配老年人所做的优化(大字体、高对比度等)。

5.3 系统分析与设计

这是论文的核心章节。

  • 需求分析:画出用例图(User Case Diagram),角色至少包括“老年人用户”和“家属用户”。详细描述每个用例,如“添加药品”、“设置提醒”、“处理通知”、“查看历史”。
  • 系统设计
    • 架构设计:建议采用MVVM(Model-View-ViewModel)模式,并画出架构图。解释这样设计的好处:数据与UI分离、便于测试、利用LiveData/Flow实现数据驱动UI。
    • 功能模块设计:对应本文第2部分,用文字和结构图说明各个模块。
    • 数据库设计:给出完整的E-R图,并附上核心表的详细设计(字段名、类型、说明、约束),就像前面给出的SQL示例。
    • 类图:挑选几个核心的类(如MedicineReminderReminderAlarmReceiverMainViewModel),画出简化的类图,展示它们之间的关系。

5.4 系统实现与展示

不要贴大段代码!这是最常见的误区。应该:

  1. 核心实现流程描述:用“文字说明 + 关键代码片段 + 截图”的方式。例如,讲解设置提醒的流程:“当用户点击保存后,ViewModel会先将提醒计划存入Room数据库,随后调用ReminderScheduler类的scheduleReminder方法,该方法内部使用AlarmManager设置定时任务……”然后附上一小段scheduleReminder方法的核心代码。
  2. 界面展示:使用手机模拟器或真机,对每个主要界面进行截图,并在图下方配以简要说明。
  3. 关键问题解决:专门用一小节写“关键技术难点与解决方案”,比如“如何保证提醒在后台可靠触发”、“如何设计高可读性的通知”,把你踩过的坑和解决方案写进去,这是体现你工程能力的地方。

5.5 测试与总结

  • 测试:描述你进行的测试,包括功能测试(每个用例是否正常)、兼容性测试(在不同版本Android手机上运行)、性能测试(内存占用、响应速度)。可以设计一个简单的测试用例表。
  • 总结与展望:总结整个项目的完成情况,实现了哪些功能,有何价值。展望部分可以提出切实可行的改进方向,例如:“未来可集成语音识别,方便老人通过语音添加药品”;“可接入智能药盒硬件,实现服药状态的物理检测”;“可增加简单的健康数据记录(如血压、血糖),形成更完整的健康档案”。这能让评委看到你的思考深度。

6. 源码使用与二次开发指南

如果你拿到的是一个已经完成的项目源码包(如老年人服药提醒APP(源码+使用说明).zip),如何快速跑起来并理解它,甚至进行二次开发?

6.1 环境搭建与项目导入

  1. 安装Android Studio:前往官网下载最新稳定版。安装过程中,SDK Manager会帮你下载必要的SDK和构建工具。
  2. 导入项目:解压源码包,用Android Studio的“Open”或“Import Project”功能,选择解压后的文件夹(通常是包含appgradle等目录的根文件夹)。
  3. 同步与构建:项目打开后,Android Studio会自动开始Gradle同步。这个过程可能会下载依赖库,需要保持网络通畅。如果遇到Gradle版本或依赖下载失败,可以尝试:
    • 检查项目根目录下的gradle/wrapper/gradle-wrapper.properties文件,看distributionUrl指向的Gradle版本是否能正常访问。有时需要更换为国内镜像。
    • 修改项目根目录的build.gradleapp/build.gradle中的repositories,添加阿里云等国内Maven仓库地址。
    // 在build.gradle的allprojects部分添加 allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } mavenCentral() google() } }

6.2 核心代码走读

导入成功后,按照以下路径快速理解项目骨架:

  1. app/src/main/java/下的包结构:通常按功能或架构分层,如com.example.medreminder.ui(界面)、com.example.medreminder.data(数据层,包含Entity、DAO、Database)、com.example.medreminder.receiver(广播接收器)、com.example.medreminder.utils(工具类)。
  2. MainActivity开始:这是应用入口,看它设置了什么布局,初始化了哪些组件(如ViewModel)。
  3. 追踪数据流:找一个核心功能,比如“添加提醒”。从UI(Activity/Fragment)找到对应的ViewModel,看它如何调用RepositoryDAO来操作数据库。同时,看设置提醒后,如何调用到AlarmManager的相关代码。
  4. 查看清单文件AndroidManifest.xml:这里注册了所有的ActivityServiceReceiver以及申请的权限(如可能需要的SCHEDULE_EXACT_ALARM权限,用于精确闹钟)。

6.3 常见问题与调试

  • APP崩溃(Crash):运行后立即崩溃,最常见的原因是数据库迁移问题(见避坑提示2),或某些依赖库未正确下载。查看Android Studio底部的“Logcat”窗口,过滤错误级别为E(Error)的信息,根据堆栈跟踪定位问题。
  • 提醒不触发
    • 首先检查是否在Android 6.0以上设备上,并且应用拥有“忽略电池优化”的权限(通常需要引导用户手动在系统设置中开启)。
    • 检查AlarmManager设置的triggerTime是否正确,是否是未来的时间。
    • 检查BroadcastReceiver是否在AndroidManifest.xml中正确注册。
    • BroadcastReceiveronReceive方法开始处打日志(Log.d),看是否被调用。
  • 界面无数据或列表不更新:检查ViewModel中暴露的LiveDataFlow是否被正确观察(observe/collect),以及数据库查询是否返回了数据。

6.4 如何进行二次开发

如果你想在此基础上增加功能,比如前面提到的家属端同步:

  1. 技术选型:选择一个后端云服务,如Firebase(需考虑网络环境)或国内合规的BaaS(后端即服务)平台。
  2. 修改数据层:创建网络数据源(RemoteDataSource),与本地LocalDataSource(即Room)一起组成Repository。使用Repository来协调本地和远程数据,可以优先从本地加载,然后在后台同步。
  3. 增加用户认证:集成云服务的认证SDK,实现登录/注册界面。
  4. 设计数据同步逻辑:确定同步策略(如定时同步、网络变化时同步、手动同步),并处理好可能的数据冲突(如本地和远程同时修改了同一条提醒)。

记住,二次开发前,务必先确保能完全理解并流畅运行原始项目。从修改UI文字、增加一个简单的统计页面开始,逐步深入到更复杂的逻辑。这个项目作为一个毕业设计模板,已经为你搭好了坚实的骨架,剩下的就是如何让它更丰满、更独特。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 10:47:15

yuzu Switch 模拟器入门:5 分钟跑起来 + 出问题找谁看

yuzu Switch 模拟器入门&#xff1a;5 分钟跑起来 出问题找谁看 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 第一次接触开源模拟器的人&#xff0c;通常卡在两个地方&#xff1a;装不装得上、出了问题不知道去…

作者头像 李华
网站建设 2026/9/2 10:45:22

零基础Python数据分析实战:从环境搭建到NumPy/Pandas项目应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 10:43:26

RVC变声器完整教程:10分钟语音数据,三步练出你的AI音色

RVC变声器完整教程&#xff1a;10分钟语音数据&#xff0c;三步练出你的AI音色 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-V…

作者头像 李华
网站建设 2026/9/2 10:43:24

免费把微信聊天记录导出成文档:WeChatMsg 完整上手指南

免费把微信聊天记录导出成文档&#xff1a;WeChatMsg 完整上手指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCh…

作者头像 李华