当前位置:首页 » 安卓系统 » android超声波

android超声波

发布时间: 2022-10-10 13:11:36

❶ android 超声波是怎样产生的

播放的声音包含有超声波

❷ 手机如何超声波清理灰尘

1、首先打开手机里面的微信,打开后会看到发现按钮和搜一搜,分别点击。

手机扬声器清理的注意事项:

1、此方法是通过强烈特定声波震动来达到清理灰尘目的,切勿频繁播放,以免造成喇叭损伤。

2、切勿用细小的东西去戳扬声器的孔,以免造成喇叭损伤。

3、若自己没有专门的拆机工具,请勿拆机清理灰尘,虽然这样清理喇叭内部灰尘是最干净的,但是会破坏手机的密封性,会让更多的灰尘进入手机内部,如果灰尘太多,影响扬声器音量,建议让专业人士进行拆机清理。

❸ 超声波指纹识别传感器是什么原理

应该是通过阵列,感应每个阵列的信号强弱吧。

❹ android音频实时采集 传输到PC端播放

成了一个.木.马.窍.听.器了!!搜下,文章多的是。
这也是我的下一个目标,才学一个月,尚没到这一步呢。
-------------------

android手机的Mic对声音的感知

2011-11-08 11:54 5225人阅读 评论(7) 收藏 举报

android手机buffer图形domainaudio

这段时间做了个有关android手机利用mic捕获外界环境音量的小东东,多方查询,各种研究,现在把这些东西跟童鞋们分享一下,如有不足或者差错,还望大牛们多给意见。

android提供可以实现录音功能的有AudioRecord和MediaRecorder,其中AudioRecord是读取Mic的音频流,可以边录音边分析流的数据;而MediaRecorder则能够直接把Mic的数据存到文件,并且能够进行编码(如AMR,MP3等)。

首先,要将你的应用加入权限(无论你是使用AudioRecord还是MediaRecorder):

<uses-permission android:name="android.permission.RECORD_AUDIO" />

然后,分开介绍两者的用法。

《!--AudioRecord--》

1、新建录音采样类,实现接口:

public class MicSensor implements AudioRecord.

2、关于AudioRecord的初始化:

public AudioRecord (int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes)

audioSource: 录音源(例如:MediaRecorder.AudioSource.MIC 指定Mic为录音源)

sampleRateInHz: 默认的采样频率,单位为Hz。(常用的如44100Hz、22050Hz、16000Hz、11025Hz、8000Hz,有人说44100Hz是目前保证在所有厂商的android手机上都能使用的采样频率,但是个人在三星i9000上使用却不然,经测试8000Hz似乎更为靠谱)

channelConfig: 描述音频通道设置。(在此我使用了AudioFormat.CHANNEL_CONFIGURATION_MONO)

audioFormat: 音频数据支持格式。(这个好像跟声道有关,16bit的脉码调制录音应该是所谓的双声道,而8bit脉码调制录音是单声道。AudioFormat.ENCODING_PCM_16BIT、AudioFormat.ENCODING_PCM_8BIT)

bufferSizeInBytes: 在录制过程中,音频数据写入缓冲区的总数(字节)。 从缓冲区读取的新音频数据总会小于此值。 getMinBufferSize(int, int, int)返回AudioRecord 实例创建成功后的最小缓冲区。 设置的值比getMinBufferSize()还小则会导致初始化失败。

3、初始化成功后则可启动录音 audioRecord.startRecording()

4、编写线程类将录音数据读入缓冲区,进行分析

short[] buffer = new short[bufferSize]; //short类型对应16bit音频数据格式,byte类型对应于8bit
audioRecord.read(buffer, 0, bufferSize); //返回值是个int类型的数据长度值

5、在此需要对buffer中的数据进行一些说明:

这样读取的数据是在时域下的数据,直接用于计算没有任何实际意义。需要将时域下的数据转化为频域下的数据,才能诉诸于计算。

频域(frequency domain)是指在对函数或信号进行分析时,分析其和频率有关部份,而不是和时间有关的部份。

函数或信号可以透过一对数学的运算子在时域及频域之间转换。例如傅里叶变换可以将一个时域信号转换成在不同频率下对应的振幅及相位,其频谱就是时域信号在频域下的表现,而反傅里叶变换可以将频谱再转换回时域的信号。

信号在时域下的图形可以显示信号如何随着时间变化,而信号在频域下的图形(一般称为频谱)可以显示信号分布在哪些频率及其比例。频域的表示法除了有各个频率下的大小外,也会有各个频率的相位,利用大小及相位的资讯可以将各频率的弦波给予不同的大小及相位,相加以后可以还原成原始的信号。

经傅立叶变化后得到的复数数组是个二维数组,实部和虚部的平方和取对数后乘以10就大致等于我们通常表示音量的分贝了。

《!--MediaRecorder--》

相对于AudioRecord,MediaRecorder提供了更为简单的api。

[java] view plainprint?

mediaRecorder = new MediaRecorder();

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

mediaRecorder.setOutputFile("/dev/null");
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile("/dev/null");

设置好mediaRecorder的各个属性,然后通过线程调用方法 mediaRecorder.getMaxAmplitude();

得到的是瞬时的最大振幅,直接取对数然后乘以10就可以表征分贝了。

最后需要说明一下,android手机厂商定制的硬件不尽相同,所以mic获取的值也只能“表征”,而不能拿过来当真正的依据。它们虽是智能手机,但也还是手机,机器人不是人!呵呵。。。

对了,每个手机mic在声信号和电信号进行转换时都有做过电容保护,为了其不因外界环境的过于嘈杂而易受到损坏。所以超声波和次声波,我们人不容易接受的声音,手机也不会入耳的。

❺ 超声波驱蚊靠谱么

抛开驱蚊原理和功率不谈,手机本身就不靠谱,首先是扬声器频响根本达不到超声。还有就是系统的问题,android系统的音频输出必须经过音频服务层中的Audio Finger层,但是android会把重采样频率定在44.1kHz。通过香农定律就知道输出频率最高也就20k出头。不管多高采样的信号播放出来也是CD水平。当然市面上有些几大千的高级android播放器,自己写了软件和音频硬件抽象层通信。能播放高采样率母带。而很懂音频的程序员肯定知道就算费大力气写特殊的软件,扬声器也放不出超声,自然不会去做无用功。所以那些手机驱蚊软件肯定都是瞎扯蛋
麻烦采纳,谢谢!

❻ android 手机驱蚊软件有驱蚊效果吗手机扬声器能发出驱赶蚊子频率的超声波吗@guokrfac

这个肯定是没有效果的,蚊子又不是用超声波交流,它们使用气味来交流的。电视新闻上也报导了,不仅没有效果,还会对人体造成伤害

❼ 清理手机听筒灰尘用超声波可以吗

可以。

打开手机中的“语音助手”或“指令”,打开后点击“发现”。点击“喇叭清灰排水”后点击“添加一键指令”,添加后再次点击指令即可进行手机清灰,详细步骤:

工具/原料:

oppo reno4

Android11

1、打开手机中的“语音助手”或“指令”。

❽ oppofindx3pro是超声波指纹吗

是。OPPOFindX3Pro是OPPO于2021年3月11日发布的手机产品,搭载高通骁龙888八核处理器,预装基于Android11的ColorOS11.2操作系统。OPPOFindX3Pro是超声波解锁,解锁只需要0.2秒。

❾ 网上的超声波驱鼠软件有用吗,安卓手机软件,望大神解答

一般手机的频响范围都在20KHz以下,只有20KHz以上的才是超声波,也就是说手机是不能发出超声波的,即使这个软件能播放20KHz以上的音频,依靠手机的音频系统也不能发出超声波

❿ 安卓开发音频mic口怎么接收20khz的波形

安卓开发音频mic口接收20khz的波形的方法?
一、手机音频通信的特点
1、 通用性强:在智能手机普及的今天,手机的对外通信接口多种多样,而其中以3.5mm的音频接口通用新最强,基本所有的手机、平板电脑都会有这个接口,所以在一些要求通用性的设备上,音频接口登上了舞台。
2、 速率低:由于手机音频部分的采样频率一般为44.1KHZ(部分国产山寨为8KHZ),这极大的限制了音频通讯的速率。我们都知道44.1KHZ的采样频率,那么最高的信号频率只能为20KHZ左右,而信号周期也不可能只有2个采样点,通常要到10个以上,这样层层下来通讯速率可想而知。
3、 小信号:音频通信的信号都是毫伏级的,各个手机厂商略有不同,但通常最大不超过200mv,通常我们通信使用的信号强度也就100mv左右,这导致信号比较容易受干扰,且在开发阶段对工具有着种种限制。
二、 手机音频通信分类
1、 无线方式:
a) 无线方式大家可能不太熟悉,容我慢慢道来。我们都知道人耳能听到的声音频率为20HZ~20KHZ,而手机通信的信号频率最高也就20KHZ,所以无线通信方式是可行的。因为虽然人耳的极限听力能到20KHZ,但普通人一般在19KHZ以上时基本就听不到了,所以如果信号的强度比较弱,且控制在19KHZ到20KHZ之间,那么我们就可以将之当做是“超声波”来看待了。
b) 其实在此提到手机音频通信的无线方式,算是给大家一种产品开发思路吧。它的通讯半径在10M左右,前景还是很广阔的,大家有兴趣的可以试试。(其实已经有这方面的产品了)
2、 有线方式:
a) 有线方式分为单向(设备→手机)和双向两种,单向的限制少,开发难度也小一些,但实际应用时会受限制。而双向通信限制多,开发难度也大一些,但实际应用时更方便些。
b) 设备→手机:曼彻斯特编码;FSK;DTMF;自定义正弦波
c) 手机→设备:由于手机输出的音频信号很小,无法直接使用,要么用运放发大到合适的范围,要么用电压比较器转换成TTL方波。
三、手机音频通信硬件通信方式分类:手机音频通信的硬件通信方式大体可分为方波和正弦波两种。
1、 方波:方波通常使用的是曼彻斯特编码方式(什么是曼彻斯特编码自己去查),它的好处是可以用单片机直接输出方波,经过衰减后即可使用,方便简单。缺点是兼容性不好,因为手机音频部分有这样一个特性,它只识别变化的电平信号,当麦克输入的信号长时间保持在某一非零电平时,手机会将其视为零,而强行拉回零电位。这就是采用方波通讯方式的兼容性不好的最大原因了,并且方波也容易受干扰。
2、 正弦波:正弦波不会出现上面所说的方波的问题,故正弦波的兼容性和稳定性更好一些。通常采用方案有FSK、DTMF、信号发生器、或方波转正弦波等。(后面会对以上方案逐一分析)
3、 通信信道分析
a) 我们知道音频接口有4根线,MIC、地、左、右声道。设备→手机用MIC,手机→设备用地、左、右声道中的任意一个。这里说一下,实际产品中,有一些厂家会更换地线,即将原本左、有声道中的一根改为地线来用,其实道理是一样的。因为音频通信的信号时交流信号,而地其实也是悬浮地,即便地线换了,最终的波形还是一样的,因为最终手机解析信号时需要的是频率和幅值。这样还剩下一个声道,通常被用来帮助设备进行上电识别,因为音频通信的设备通常都是电池供电的。
b) 另外还要在MIC和地之间并联一个4.99K的电阻,因为手机是通过检测MIC和地之间的阻抗是否为4.99K(也有其他阻值的)来判断是否有设备(耳机)插入,这一点要谨记。
四、各个通信方案对比分析
1、 设备→手机:
a) 曼彻斯特编码:在诸多通信方式中,曼彻斯特编码是最灵活简便的一种方法,编码信号可由单片机直接产生,经衰减电路衰减后便可直接使用。注意事项:曼彻斯特编码信号的生成有两种方式,一种是用PWM生成,一种是用定时器中断翻转IO,我个人比较倾向于定时器中断方式。因为我们知道曼彻斯特编码中有宽沿河窄沿之分,且宽沿和窄沿可能会灵活变化,而用PWM方式不容易精确控制宽沿、窄沿输出的变化,而定时器中断方式则非常灵活且容易控制。(后面会送上我自己写的曼彻斯特编码、解码函数)
b) FSK、DTMF方式:FSK和DTMF两种方式大同小异,使用时通常都是用集成的芯片来生成的,而这些芯片通常都是遵守固定的通信协议的的要求(FSK为Bell202或V.23协议,DTMF记不清名字了)。这两种通信方式的优点是采用正弦波通信、稳定性好且使用简便。但由于固定通信协议的限制导致通信速率、比特率也受到限制而缺乏灵活性。在这里跟他家推荐一款英国的通信芯片CMX系列,这个系列的芯片融合的FSK、DTMF的编码、解码,还是很不错的,大家有兴趣可以试试。(相关手册在附件里)
c) 信号发生器、锁相环方式:这种方式用信号发生器或者锁相环来产生方波或正玄波,由单片机来控制波形的输出,也可以实现音频通信,且十分灵活。但缺点是电路较复杂,且不同频率信号之间衔接不好掌握,用不好反而是麻烦。(相关手册在附件里)
d) 在这里送上一种我个人认为比较好的方案:就是曼彻斯特编码加低通滤波器,由单片机输出曼彻斯特编码,再经由低通滤波器将方波滤成正弦波后输出。既解决了FSK、DTMF灵活性的问题,又解决了曼彻斯特编码方波稳定性、通用性的问题。在低通滤波器方面我个人采用的是“集成低通开关电容滤波器”,它成本虽然高一些,但好处也是明显的,电路简单,使用方便,且占用的空间亦很小。(相关手册在附件里)
2、 手机→设备:
a) 放大电路方式:将手机输出信号经放大电路放大到合适的幅值,然后有锁相环或者结成FSK、DTMF芯片进行解析。该中方式难度最大,需要非常强的模拟电路功底,我个人水平有限,故采用的另一种方式。
b) 电压比较器方式:将手机输出的交流信号经电路强行拉到Vcc/2级别,然后加到电压比较器一端,另一段接比较电压Vcc/2,这样交流信号即被转化为TTL方波信号,此时再进行解析就变得很简单了。
五、研发注意事项(通讯方案分析部分由于过长,放到最后来讲)
1、 一个好手机录音软件是必须的,最好能在手机上直接看到波形的。
2、 建议用笔记本电脑进行开发,而非台式机。因为音频信号很小,容易受干扰,而台式机干扰较大,笔记本还有一个好处是必要时可将外接电源拔掉,用电池供电。
3、 一个好录音笔必不可少,有时需要得到纯净的音频信号,方便更加准确的分析。
4、 做一个转接板,一边接音频母座,一边接音频公头,将MIC、地、左、右声道4跟线用排阵引出,方便录音。
5、 做一个信号衰减电路,可将设备电路产生的信号衰减至音频接口能承受的范围内。前期调试时,我们可以用该电路将信号录进电脑进行信号分析。(推荐一个电脑音频信号分析软件:Goldwave)
6、 录音用的音频线切记不要太长,不然会给你带来不少麻烦。最好自己做,用音频裸头、杜邦线、排阵即可制作,方便好用。

曼彻斯特编码的编码解码函数如下:
/**********************************************************************

注释:编码函数都是采用定时器中断的形式,以曼彻斯特编码的窄沿作为定时器周期。

发送的数据包括1个起始位、8个数据位、1个奇偶校验位、3个停止位。

***********************************************************************/

static void VIC_VECT_Fucton_00(void)//发送编码数据中断函数

{

TIMER0IS =0x0;

if((send_time%2==0) && (send_start==1))

{

switch(FSK_txState)

{

case STARTBIT:

if((GPIODATA&0x00000002)==0x00000000)//如果检测到数据发送管脚为零

send_time++;

else

{

currentSym=0;

FSK_txState = BYTE;

}

break;

case BYTE:

if(txBit < 8)

{

currentSym = (send_byte >> txBit) & 0x01;

txBit++;

txParity += currentSym; //奇偶校验位

}

else if (txBit == 8)

{

currentSym = txParity & 0x01; //发送奇偶校验位

txBit++;

}

else if(txBit>8 && txBit<12)

{

// next bit is the stop bit

currentSym = 1; //发送停止位

txBit++;

}

else if(txBit == 12)

FSK_txState = STOPBIT;

break;

case STOPBIT :

txBit=0;

FSK_txState=IDLE;

send_start=0;

txParity=0;

send_byte=0;

break;

}

if(lastSym!=currentSym)

{

timer1_num++;

lastSym=currentSym;

}

}

if(timer1_num%2==0)

GPIODATA&=0xFFFFFFFD;//输出管脚复位

else

GPIODATA|=0x00000002;//输出管脚置位

timer1_num++;//用来控制IO口的电平翻转

send_time++;//用来控制发送的字节的每一位

Delay++;//Delay就是延时函数

}

/**********************************************************************

注释:解码函数采用外部IO中断形式(上升沿或下降沿中断,即电平电平跳变中断),

用一个定时器作为时钟,每次产生中断时便从定时器见时间值取出,并和上一次的

记录做差求出时间间隔,以此来判断当前为宽沿还是窄沿。

***********************************************************************/

static void VIC_VECT_Fucton_04(void)//接受解码数据中断函数

{

GPIOIC|=0x00000001;//清楚上一次中断内容

RX_time=TIMER1VALUE;

if(RX_lasttime>=RX_time)

RX_diff=RX_lasttime-RX_time; //lasttime初始值为0

else

RX_diff=65535-RX_time+RX_lasttime;

RX_lasttime=RX_time;

switch(RX_state) //启动代码时state已经被配置为STARTBIT

{

case STARTBIT_FALL:

if ((SHORTINTERVAL<RX_diff) && (RX_diff<LONGINTERVAL))

{

if(RX_ones<5) //ones初始值为0

{

RX_ones = 0;

}

else

{

RX_state = DECODE; //将状态配置为解码

}

}

else if(RX_diff < SHORTINTERVAL)

RX_ones++;

else

RX_ones=0;

break;

case DECODE:

/**************通过间隔长短来判定数据**************/

if ((SHORTINTERVAL<RX_diff) && (RX_diff<LONGINTERVAL))// 若间距在范围内则当前数据位值和前一个相反

{

currentbit=(currentbit+1)&0x01;

RX_times+=2;

}

else if( RX_diff < SHORTINTERVAL)

{

currentbit=currentbit;

RX_times++;

}

else

RX_state = DATAINIT;

/****************接受数据位,从低位接起****************/

if(RX_times%2==0)

{

if(RX_bitcounter<8)

{

if (currentbit==1)

{

uartByteRx = (uartByteRx >> 1) + (1<<7);

rxParity++; //奇偶校验位

RX_bitcounter++; //接受数据位数

}

else

{

uartByteRx = (uartByteRx >> 1);

RX_bitcounter++;

}

}

else

{

rxParity&=0x01; //进行奇偶校验

if(rxParity==currentbit)

{

RX_bitcounter++;

RX_finish=1;

RX_state=DATAINIT;

}

else

RX_state=DATAINIT; //若奇偶校验错误则,重新检测

}

}

break;

case DATAINIT : //初始化参数状态

RX_bitcounter=0;

RX_ones=0;

rxParity=0;

currentbit=0;

RX_state=STARTBIT_FALL;

RX_times=0;

break;

default:

break;

}

}

热点内容
日流量10万需要什么类型服务器 发布:2025-01-23 07:58:27 浏览:500
服务器获取地址失败 发布:2025-01-23 07:55:18 浏览:849
java修饰 发布:2025-01-23 07:45:03 浏览:183
oppor9s照片加密 发布:2025-01-23 07:37:57 浏览:712
javahtml乱码 发布:2025-01-23 07:37:56 浏览:539
sqlserverc 发布:2025-01-23 07:34:15 浏览:699
mysql怎么用数据库 发布:2025-01-23 07:21:02 浏览:998
怎么访问暗网 发布:2025-01-23 07:02:04 浏览:666
无线配置代理选什么 发布:2025-01-23 06:52:54 浏览:825
c程序汇编程序 发布:2025-01-23 06:49:42 浏览:841