Android里声音怎么传输又顺便把数据存数据库那块怎么搞的简单聊聊
- 问答
- 2026-01-07 18:02:22
- 19
这个需求其实挺常见的,我给你聊聊大概是怎么一回事,你就想象一个场景:一个语音备忘录App,你按下录音键,它开始录音,录完了你点停止,然后刚才那段录音文件就保存到手机里了,同时呢,在App的列表里会多出一条记录,显示你刚刚录的音,可能还有文件名、录音时长、创建日期这些信息,这里面就涉及两件事:声音的处理(录制和存储为文件)和数据的记录(把文件信息存到数据库)。
先说声音这块是怎么搞的
在Android里,处理声音录制,最核心的一个东西叫 MediaRecorder(来源:Android开发者文档中的MediaRecorder介绍),你可以把它理解成一个专门负责录音的“机器”,你要录音,就得先把这个机器设置好。
第一步,你得告诉它,我们要录的是什么格式的声音,是通用的AAC格式呢,还是其他的,这就像你买录音笔,也得选一下录音质量是高清还是标准,通常会设置成AAC,因为兼容性好,文件体积也还可以。

第二步,指定录音的来源,手机上有好几个可以录音的“麦克风”,比如你打电话时用的那个,或者录像时用的那个,一般我们会设置成 MediaRecorder.AudioSource.MIC,意思就是用手机的主麦克风来录。
第三步,设置录下来的文件要存在哪里,你得在手机存储里申请一块地方,给它一个具体的文件路径和文件名,/sdcard/MyApp/audio_20231027.aac,这样录完的音就会变成这个文件。
这些都设置好了之后,你调用 recorder.prepare(),让这个“录音机”做好准备工作,然后调用 recorder.start(),它就真正开始录音了,等你录完了,调用 recorder.stop() 停止,再调用 recorder.release() 把这个“录音机”关掉,释放资源,这一步很重要,不然这个录音功能会被一直占着,别的App就用不了了。
到此为止,声音已经变成一个实实在在的音频文件,保存在你的手机存储里了。

再聊怎么把数据存到数据库
光有文件还不够,你得让App知道有这个文件的存在,并且能方便地管理和展示它,你打开App,得看到一个列表,里面是你所有录过音的记录,这个列表的信息存在哪里呢?就存在数据库里。
Android系统推荐用的一种数据库叫SQLite(来源:Android开发者文档中的SQLite数据库概述),它是一个很轻量级的数据库,就装在手机系统里,但咱们写代码的时候,一般不直接去操作复杂的SQL命令,Google提供了一个更省事的工具叫 Room 持久化库(来源:Android开发者文档中的Room持久化库指南),你可以把它想象成一个智能管家,你只要告诉它你想存什么样的数据,它就会帮你把创建数据库、增删改查这些麻烦事都干了。
你要定义一个“数据模型”,简单说,就是你想存一条录音记录,这条记录里应该包含哪些信息?

id: 一个唯一的编号,用来区分每一条记录。filePath: 刚才那个音频文件存放在手机里的具体路径,这是最重要的,有了这个路径,App才能找到并播放那个文件。: 你给这段录音起的名字,开会记录”。duration: 录音的时长,5分30秒”。createdTime: 录音创建的日期和时间。
你用代码把这个模型定义成一个普通的类(在Room里叫Entity,实体)。
你需要定义一个“数据访问对象”(DAO),这个对象里面就是一些方法,插入一条新记录”、“删除一条记录”、“获取所有记录”等等,你只要写好这些方法的名字和参数,Room这个“智能管家”就会自动帮你实现里面的具体代码。
你在操作录音的地方,比如那个“停止录音”按钮按下去之后,除了关闭 MediaRecorder,还要干一件事:
- 获取刚才录音文件的路径、计算出录音时长、生成当前时间作为创建时间。
- 用这些信息创建一个上面定义好的“数据模型”对象。
- 通过你定义的那个DAO,调用它的“插入”方法,把这个对象交给Room。
- Room就会悄无声息地帮你把这条新记录存进数据库里。
这样,整个流程就通了,你录音,生成文件;把文件的关键信息存到数据库,等你下次打开App,App会通过DAO的“获取所有记录”方法,从数据库里把所有的录音记录读出来,显示在列表里,你点击列表中的某一项,App就根据这项记录里存的 filePath 找到对应的音频文件,再用一个叫 MediaPlayer(来源:Android开发者文档中的MediaPlayer介绍)的“播放器”把它播出来。
所以你看,整个过程就是“录音机”(MediaRecorder)和“数据库管家”(Room)各司其职,互相配合,你作为程序员,就是在合适的时机(开始、停止录音时)指挥它们俩工作,并把它们产出的结果(文件路径和信息)巧妙地串联起来。
本文由酒紫萱于2026-01-07发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/76337.html
