08 2015 档案

摘要:在分析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) 编辑

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