当前位置:首页 » 安卓系统 » android获取声音

android获取声音

发布时间: 2023-03-29 08:46:14

‘壹’ Android音频播放

最近需要在Android的客户端中使用PCM声音播放和录制,简单学习了一下。有不正确的地方还请指出。

首先有几个概念需要了解一下:采样频率、声道数、采样位数。

采样频率一般是sample rate, 代表的是数字化音频时每秒采样的次数。常见的有44.1KHz(CD品质)、48KHz等。

这个很好理解,单声道Mono就是声音从一个方向传出来;双声道Stereo也叫立体声,声音是从两个方向传来。通常的流行音乐中,仔细听能发现每个声道可能侧重不同的乐曲声部,比如左声道吉他,右声道钢琴,人声似乎两个声道都有,听起来就像站在中间一样。(这里没有考证,随便举例)

每一个采样都是一个数据点,采样位数是指这个数据点使用了几位来记录。AudioTrack类只支持8位和16位的PCM音频。8位就是2的8次方,即256个值;而16位则是2的16次方,有65536个值。

这个在音频的编解码中还是比较常用的。在PCM格式中,1秒钟音频的数据大小是SampleRate×Channel×Bit/8,单位是byte字节。由于PCM本身没有音频帧的概念,所以通过这个公式就能计算出任意时长音频的大小,或者得到任意大小音频的时长。如果规定1个音频帧是“每个声道256个采样”,双声道下就是512个采样,那么1帧的数据量就是256×Channel×Bit/8,同理可以推断出1秒钟有多少音频帧等等。音频帧的概念在各种编解码中各有不同,但计算公式大同小异,这里不展开。

Android中音频的播放使用的是AudioTrack类,具体用法非常简单。
首先设置buffer大小。AudioTrack播放时需要先写入buffer,如果这个buffer没有写满,那么这部分是不会播放的。所以buffer不能设置太小,这样会导致播放不连贯;而buffer也不能设置太小,这样不间断写入会消耗许多CPU资源。AudioTrack自带了getMinBufferSize方法可以给出一个最小buffer,一般用这个值就可以。getMinBufferSize方法三个参数分别是sample rate、channel和bit。

设置完buffer size就可以实例化一个AudioTrack。其中第一个参数streamType是指不同的音频流类型,包括STREAM_MUSIC、STREAM_ALARM、STREAM_VOICE_CALL、STREAM_RING等,是Android对不同音频的分类。中间三个参数很好理解,第四个是buffer size,刚刚计算出来了。最后一个参数mode有两种:MODE_STREAM和MODE_STATIC。前者是以流形式播放,后者则是一次性全部写入然后播放。

调用实例的play()方法就可以开始播放了。不过播放得要有数据吧?要填写数据就要用到write()方法。write方法中第一个参数是一个byte[]类型,是要写入的数据源,可以是从文件流中读取出来的;第二个参数offset是初始位移,即从source的哪个位置开始;第三个参数则是输入长度。

当write方法写满一个AudioTrack的buffer时,就会有声音播放出来了。
当播放完成后记得要把AudioTrack停止并释放。

‘贰’ Android音频采集

最近项目中需要实现手机采集声音频率实现设备律动的效果,整理了下Android与声音相关的知识。

根据声音振幅、频率获取颜色值,通过蓝牙mesh发送指令给灯改变其颜色值。

Android声音采集相关Api

快速傅里叶变换公式

Mesh网发送rgb值相关指令

人主观感觉声音的大小(音量),振幅与人离声源的距离决定,振幅越大,离声源的距离越小,响度越大。

LP= 20×lgP/P0

LP:声压级(db)

P:声压(Pa)

P0:基准声压:2*10-5Pa,该值是对800HZ声音人耳刚能听到的最低声压。

声音的高低,由频率决定,频率谨辩越高,音调越高。

频率是每秒经吵洞过一给定点的声波数量,单位赫兹(Hz)

人耳能听到20~20kHz的声音。

音品,波形决定声音的音色。

MediaRecorder:基于文件录音,已集成录音、编码、压缩

把模拟信号数字化的过程

采样频率越高,红色间隔越密集,记录音频所用数据量越大,音频质量越高。

采样定理(奈奎斯特理论):当采样频率大于信号中最高频率的2倍时,采样后的数字信号完整地保留原始信号中的信息。人耳能听到20~20kHz的声音,为了保证声音不失真,采样频率应在40kHz以上。

目前44100Hz是唯一可以保证兼容所有Android手机的采样率。

指将模拟信号分成几个等级,量化精度越高,声音质量越好,单位Bit。

CD标准量化精度16Bit,DVD标准量化精度24Bit。

16Bit可以保证兼容所有Android手机。

音频采集、播放可以叠加,可以同时从多个音频源采集声音,例如:单声道/双声道。

即采样时间,例如20ms一帧代表20ms为单位的数据量为一帧音频。

一帧音频帧大小 = 采样率 x 位宽 x 采样时间 x 通道数

例:采样率8000,位宽8,通道2,采样间隔20ms

(8000 * 8/8 *2)/ (1000/20 ) = 320Byte //1字节 = 8 bits

对audioData进行快速傅里叶变化,时域->频域的变化,可以将信号的频谱提取出来。

傅立叶变换就是多个祥碰缺正余弦波叠加可以用来近似任何一个原始的周期函数,它实质是是频域函数和时域函数的转换。

Visualizer:检索当前正在播放的音频,对其进行编码

以下基于AudioRecord采集的音频数据后进行快速傅里叶变换得到频率值

‘叁’ 如何获取和设置android系统铃声和音量大小

建议进行以下操作:
1、打开手机设定-声音-音量-媒体/铃声/通知/系统-调节大小观察使用
2、更换其他铃声尝试
3、若是调整后手机音量依旧很小,请备份数据,恢复出厂设置尝试。
若问题依然存在,建议携带上购机发票、包修卡和手机到当地的三星服务中心,由专业的工程师帮检测。

‘肆’ android 设置整个app的通知栏Notification 的声音和震动用什么方法

设置安卓手机通知栏提示音的方法如下。

1、以OPPO手机为例,点击打开手机设置,如图。

‘伍’ 安卓手机投屏问题,为什么没有声音

    随着时代的迅速发展,几乎人人都用上了智能设备,而安卓手机的市场尤为广泛。安卓功能很多,但是投屏时会出现只有图像没有声音的情况,这是为什么呢?今天我就带大家简单了解一下,安卓手机投屏没有声音的内在原因以及解决方案。

    安卓(Android)系统是Google公司于2007年11月5日发布,基于Linux平台的 开源 手机操作系统,该平台由操作系统、中间件、用户界面和应用软件组成。

    安卓系统是一个权限分立操作系统,每个应用都以唯一系统识别身份运行(Linux用户ID与群组ID)。系统各部分也分别使用各自独立的识别方式。所以Linux就是以这种方式,将应用与系统,应用与应    用隔离开。系统更多的安全功能通过权限机制提供。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问

    Android安全架构的核心设计思想,就是在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。而手机的最重要功能是语音通信,安卓系统充分考虑了手机语音的安全性,所以不允许其它应用获取手机的语音数据,从而保证通话不被截取。

    也正是由于这个原因,当我们的镜像程序在手机端运行时,被视为第三方不安全的应用程序,从而无法获取手机声音,导致镜像无声。

那如何解决安卓设备投屏无声音的问题呢? 图飞飞品牌 的无线镜像软件“投屏专家”就很好的解决了这个问题。

安卓手机的声音有两种情况:

(1)播放网络视频产生的声音

对于这种情况,飞图采取把网络视频的URL地址直接发送给接收端,让接收端在线播放网络视频,从而既解决了声音传输问题,更重要的是,可以直接播放网络视频,不会产生延时或二次损伤画质的问题,流畅度和清晰度都有了比较大的保证。

(2)手机播放本地视频产生声音

要把播放本地视频产生的声音传输给镜像接收端,飞图是通过电影模式实现。也就是把本地的视频文件,通过网络直接传输给接收端,并在接收端直接播放视频文件,从而声音和图像都不受影响,无损播放。

今天带大家了解了安卓手机投屏无声音的原因与解决方案,快去试试吧~

‘陆’ 安卓手机外放没有声音是什么原因

当扬声器不能在Android设备上运行时如何解决此问题

请按照以下步骤找出问题的原因:

01 打开扬声器。如果您在通话过程中听不到对方的任何人,请检查扬声器是否已启用。如果已激活,则扬声器图标为绿色或突出显示。如果不是,请点按扬声器图标,使其亮起以启用它。

13 检查您的设备手册。如果上述技巧不起作用,请查阅设备的文档或制造商的网站以获取更具体的指导。

热点内容
解压密码对 发布:2025-07-05 09:33:00 浏览:585
广东金税盘的服务器地址是什么 发布:2025-07-05 09:10:29 浏览:703
挂式手机卡的服务密码是多少 发布:2025-07-05 08:57:40 浏览:943
电信卡密码八位数是多少 发布:2025-07-05 08:49:37 浏览:440
配置高用的久选什么电脑 发布:2025-07-05 08:22:40 浏览:741
迷你世界如何卡进设密码的房间 发布:2025-07-05 08:15:16 浏览:882
小米9se买哪个配置 发布:2025-07-05 07:57:32 浏览:364
金山快盘拒绝访问 发布:2025-07-05 07:42:29 浏览:251
新款奔驰c级买哪个配置好 发布:2025-07-05 07:41:46 浏览:290
android长宽比 发布:2025-07-05 07:34:11 浏览:687