随笔分类 -  Android

摘要:AudioMixer是Android的混音器,通过混音器可以把各个音轨的音频数据混合在一起,然后输出到音频设备。 创建AudioMixer AudioMixer在MixerThread的构造函数内创建: 这说明了一个MixerThread对应一个AudioMixer。 而且MixerThread传了 阅读全文
posted @ 2015-09-28 20:36 TaigaComplex 阅读(15980) 评论(5) 推荐(1) 编辑
摘要:MixerThread是Android音频输出的核心部分,所有Android的音频都需要经过MixerThread进行混音后再输出到音频设备。 MixerThread的继承关系如下: MixerThread >PlaybackThread >ThreadBase >Thread 在PlaybackT 阅读全文
posted @ 2015-09-21 20:39 TaigaComplex 阅读(12931) 评论(0) 推荐(4) 编辑
摘要:hexdump /dev/hidraw0就能看到usbhid设备传输过来的裸流 如:按下Input键 前面的估计是码流头(003ae60),还有按下(0096),松开(0086)等信息,识别按键有效信息是(006b) 006b其实是索引值,会在下表中寻找键值发送给Android,如:6b对应186 阅读全文
posted @ 2015-09-16 16:41 TaigaComplex 阅读(8108) 评论(0) 推荐(0) 编辑
摘要:AudioTrack的start方法用于实现Android的音频输出,start究竟做了什么?回顾一下上一小节createTrack_l的最后部分,通过binder返回了一个Track的句柄,并以被保存了下来 start主要就是调用这个track的start方法实现音频输出功能的 由于mAudioT 阅读全文
posted @ 2015-09-13 00:55 TaigaComplex 阅读(4891) 评论(0) 推荐(1) 编辑
摘要:在分析AudioTrack的时候,第一步会new AudioTrack,并调用他的set方法。在set方法的最后调用了createTrack_l创建音轨。我们现在来分析createTrack_l的流程。 在分析createTrack_l之前,我们先来了解Android音频流的从PCM到输出的路线。首 阅读全文
posted @ 2015-08-31 00:43 TaigaComplex 阅读(4671) 评论(0) 推荐(0) 编辑
摘要:映射表基本概念 由于Android调用getEvents得到的key是linux发送过来的scan code,而Android处理的是类似于KEY_UP这种统一类型的key code,因此需要有映射表把scan code转换成key code。映射表在板子上的位置是/system/usr/keyla 阅读全文
posted @ 2015-08-27 13:28 TaigaComplex 阅读(7145) 评论(0) 推荐(1) 编辑
摘要:每创建一个AudioTrack,代表需要新增一个输出实例,即需要根据音频流的的stream type,音频流的音轨数量,采样率,位宽等数据来重新构建buffer,而且输出的设备也可能会有变化,由于Android设备支持的输出设备各种各样,如线控耳机,喇叭,蓝牙耳机,midi设备等,因此如果该设备是第 阅读全文
posted @ 2015-08-23 23:43 TaigaComplex 阅读(13381) 评论(0) 推荐(0) 编辑
摘要:AudioTrack在Android系统中是用于PCM数据的混音、播放,并不涉及到音频的解码。因此MP3这类经过编码的音频格式文件不能直接通过AudioTrack正确地播放,AudioTrack只能播放PCM格式的音频数据,如wav格式的音频。 AudioTrack播放音频的实例如下: 共有三个步骤 阅读全文
posted @ 2015-08-23 14:16 TaigaComplex 阅读(4684) 评论(0) 推荐(1) 编辑
摘要:在上一篇文章的最后,我们发现InputDispatcher是调用了InputChannel->sendMessage把键值发送出去,那么相应的,也有接收键值的地方。接收函数是InputChannel->receiveMessage。 在InputConsumer::consume内找到了receiv 阅读全文
posted @ 2015-08-22 15:27 TaigaComplex 阅读(5705) 评论(2) 推荐(1) 编辑
摘要:Android输入系统是人与机器交互最主要的手段。我们通过按键或者触碰屏幕,会先经由linux产生中断,进行统一的处理过后,转换成Android能识别的事件信息,然后Android的输入系统去获取事件,分发给上层用户程序进行处理。 下面在细分一下输入事件在Android系统中的流程: 从图上能看到, 阅读全文
posted @ 2015-08-22 03:00 TaigaComplex 阅读(3469) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示