05 2019 档案

Android 中的 wakelock
摘要:1. 内核中相关文件kernel/power/wakelock.c //wakelock核心实现kernel/power/userwakelock.c //导出用户空间使用的sysfs wakelock接口 2. Framework中的相关文件PowerManagerService.java 3. 阅读全文

posted @ 2019-05-31 19:44 Hello-World3 阅读(1715) 评论(0) 推荐(0) 编辑

Android音频(10)——多App同时录音实现
摘要:一、使用c++编写录音程序 1. PCM音频数据是原始音频数据,无法使用播放器播放,需要给它加上一个头部,表明声音有几个通道,采样率是多少等等。将PCM音频数据转换为WAV格式,这样其它播放器才能播放出来。 2. 录音时要确定3个参数(1)采样率:一秒钟对声波采样的次数。常用的采样率有8000,11 阅读全文

posted @ 2019-05-30 01:35 Hello-World3 阅读(7684) 评论(1) 推荐(0) 编辑

Android音频(9)——音量调节
摘要:一、音量相关概念 1. 相关术语解释 track volume : 单个App设置音量时设置的是这个,它只影响本App的音量。stream volume :设置某一stream的音量,Android系统中支持10种stream。stream volume alias:设置的是同一组stream的音量 阅读全文

posted @ 2019-05-29 19:59 Hello-World3 阅读(12428) 评论(0) 推荐(2) 编辑

Android音频(8)——HAL分析
摘要:一、HAL之框架 1. tiny4412上HAL框架 audio.primary.tiny4412.so文件的Makefile:device/friendly-arm/common/libaudio/Android.mk libaudiohw_legacy依赖文件: 所以库文件audio.prima 阅读全文

posted @ 2019-05-29 12:58 Hello-World3 阅读(6888) 评论(0) 推荐(1) 编辑

Android音频(7)——项目实战——耳麦插拔
摘要:一、驱动程序上报耳麦拔插事件 1. 在有些Android版本中并不会在状态栏上显示耳麦图标。切换声道也不在系统中实现,而是在驱动中实现的。 2. headset headPhone lineOutheadset:既有听筒又有MicheadPhone:只有听筒,没有MiclineOut: 就是输出模拟 阅读全文

posted @ 2019-05-28 19:05 Hello-World3 阅读(3904) 评论(0) 推荐(0) 编辑

Android音频(6)——音频系统分析
摘要:一、AudioPolicyService启动过程分析 1. 播放声音,声音从哪个设备播放出来是由audio policy决定的。 2.在每一个声卡,对应一个output,一个output对应系统中都有一个线程与其对应。 3.对硬件的访问操作是由AudioFlinger来完成的 4.AudioPoli 阅读全文

posted @ 2019-05-27 18:27 Hello-World3 阅读(3039) 评论(0) 推荐(0) 编辑

Android音频(5)——框架中的概念和涉及的文件
摘要:一、涉及的概念 1. 概念output(1) 一个output对应一个或多个设备节点,比如/dev/snd/pcmC0D0p。为了避免麻烦,一个设备节点只由一个Thread(线程)操作。(2) 一个putput是多个device的组合(比如声卡上有喇叭(dev1)和耳机(dev2)),这些devic 阅读全文

posted @ 2019-05-26 22:39 Hello-World3 阅读(2310) 评论(1) 推荐(1) 编辑

Android音频(4)——音频驱动实战
摘要:一、应用测试工具的使用 1.在external/tinyalsa下有以C语言实现的alsa的测试程序,编译后生成tinypcminfo tinyplay tinycap tinymix 四个elf格式的测试工具 (1) tinypcminfo :获取PCM In和PCM # tinypcminfo 阅读全文

posted @ 2019-05-26 00:37 Hello-World3 阅读(4602) 评论(0) 推荐(0) 编辑

Android音频(3)——ALSA声卡驱动——DAPM
摘要:一、DAPM简介 DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc c 阅读全文

posted @ 2019-05-25 22:44 Hello-World3 阅读(4045) 评论(0) 推荐(0) 编辑

Android音频(2)——ALSA声卡驱动——ASoC
摘要:一、ASoC简介 ASoC(Alsa System on Chaip),也称为移动设备中的ALSA。是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。ASoC不能单独存在,他只是建立在标准ALSA驱动上的一个它必须和标准的ALSA驱动框架相结合才能工 阅读全文

posted @ 2019-05-24 16:15 Hello-World3 阅读(2170) 评论(0) 推荐(0) 编辑

Android音频(1)——ALSA声卡驱动
摘要:一、ALSA基础知识 1. ALSA(Advanced Linux Sound Architecture)目前已经成为了linux的主流音频体系结构,ALSA开源项目网址:http://www.alsa-project.org/。另一个音频驱动框架是OSS(open sound system),收费 阅读全文

posted @ 2019-05-24 13:03 Hello-World3 阅读(4663) 评论(0) 推荐(1) 编辑

HDMI接口学习笔记
摘要:1. HDMI接口内部还有一个i2c接口,用于读取EDID数据 2. HDMI接口比一般的接口多出 ① 多个显示源:Framebuffer数量变多,VideoProcess模块(Tiny4412上是这样的,不同平台不同)② 混合器:Mixer③ HDMI还支持音频传输④ HDMI接口里面集成了一个i 阅读全文

posted @ 2019-05-21 12:05 Hello-World3 阅读(1078) 评论(0) 推荐(0) 编辑

switch_class
摘要:1. switch_class简介 实现:drivers/switch/switch_class.c 典型应用:drivers/switch/switch_gpio.c switch_class用于在/sys/class/switch提供name和state两个属性文件,在state改变时通过uev 阅读全文

posted @ 2019-05-21 12:02 Hello-World3 阅读(581) 评论(0) 推荐(0) 编辑

Linux 驱动杂项总结
摘要:1. copy_to_user与put_user的区别 copy_from_user/copy_to_user 用于内核空间和用户空间之间的数据块拷贝,但是可能会睡眠。get_user/put_user 只能传递一个基本类型数据,不会睡眠。 2. 内核字符串转整数 int kstrtoul() // 阅读全文

posted @ 2019-05-21 10:10 Hello-World3 阅读(160) 评论(0) 推荐(0) 编辑

Mutex::AutoLock介绍
摘要:AutoLock类是定义在Mutex内部的一个类,用于解决lock和unlock必须必须一一对应的问题。unlock这句代码可能会忘记写,从而导致死锁。AutoLock充分利用了C++的构造和析构函数,来达到自动调用unlock函数的目的。 Mutex::Autolock声明和实现: 注意事项: A 阅读全文

posted @ 2019-05-20 16:18 Hello-World3 阅读(4733) 评论(0) 推荐(0) 编辑

C++中的友元——友元函数、友元类、友元成员函数
摘要:有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的。例如被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员。 友元(frend)机制允许一个类将对其非公有成员的访问权授予指定的函数或者类,友元的声明以friend开始,它只能出现在类定义的内部, 阅读全文

posted @ 2019-05-19 10:25 Hello-World3 阅读(354) 评论(0) 推荐(0) 编辑

Android显示系统(1)——显示框架
摘要:1.Android系统显示框架参考文档https://community.nxp.com/docs/DOC-93612 2. 涉及的概念:GPU DC HWC FB OverLay 3. FB表示的是帧缓冲,不但视频显示使用到,Camera视频输入也使用到,也就是说FB不是显示上特有的概念。 4. 阅读全文

posted @ 2019-05-18 11:45 Hello-World3 阅读(2468) 评论(0) 推荐(0) 编辑

Android输入系统(6)——多点触摸处理
摘要:1. 多触摸和单触摸的Mapper不同 因此处理按键事件的核心是KeyboardInputMapper.process(),单点触摸的是SingleTouchInputMapper.process(),多点触摸的是MultiTouchInputMapper.process()。 2. 一般来说触摸屏 阅读全文

posted @ 2019-05-18 01:11 Hello-World3 阅读(1078) 评论(0) 推荐(0) 编辑

Android输入系统(5)——一键启动App测试
摘要:1. App接收者注册 动态注册:手工执行代码去注册,缺点:程序退出之后,接收者就不起作用了,就接收不到消息了。 静态注册:在AndroidManifest.xml中添加如下: 我们的目的是按下一个键就能启动App,就需要接收者要常驻系统,因此需要静态注册。 2. 复写onReceive() 新建M 阅读全文

posted @ 2019-05-18 01:00 Hello-World3 阅读(424) 评论(0) 推荐(0) 编辑

Android输入系统(4)——Reader、Dispatcher、App处理流程
摘要:一、两个线程启动过程 SystemService.java 启动 InputManagerService 服务 Service: InputManagerService.java JNI: com_android_server_input_InputManagerService.cpp InputM 阅读全文

posted @ 2019-05-17 23:21 Hello-World3 阅读(1607) 评论(1) 推荐(1) 编辑

Android——UI(1) (activity window decor)
摘要:1. activity window decor 之间的关系 android里:1个app里面有一个或多个window1个activity里有1个decor1个window有1个decor1个decor有多个viewgroup/layoutviewgroup/layout中有多个view. acti 阅读全文

posted @ 2019-05-17 23:06 Hello-World3 阅读(136) 评论(0) 推荐(0) 编辑

dump Java和C++函数调用栈
摘要:1. java代码中打印堆栈 (1) 通常的方法是使用exception的printStackTrace()方法: try { ... } catch (RemoteException e) { e.printStackTrace(); ... } (2) 测试Demo class Person { 阅读全文

posted @ 2019-05-17 17:31 Hello-World3 阅读(533) 评论(0) 推荐(0) 编辑

Android输入系统(3)——输入系统框架
摘要:1.优秀文档 android输入系统官方文档:http://source.android.com/devices/input/index.html 中文官方文档《深入理解Android 卷III》第五章 深入理解Android输入系统: http://blog.csdn.net/innost/art 阅读全文

posted @ 2019-05-13 19:17 Hello-World3 阅读(622) 评论(0) 推荐(0) 编辑

Android输入系统(1)—— 必备Linux知识: inotify epoll socketpair binder_fd 双向binder通信
摘要:一、inotify 和 epoll 1.Android不使用hotplug机制,使用的是inotify机制。inotify监听的是/dev/input目录。 2.使用inotify来监听文件的创建与删除,使用epoll来监听设备文件句柄的变化,包括inotify的fd。 3.epoll支持管道,FI 阅读全文

posted @ 2019-05-13 10:16 Hello-World3 阅读(900) 评论(0) 推荐(1) 编辑

LE蓝牙协议学习笔记(1)
摘要:1.参考文章 蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍:http://www.wowotech.net/bluetooth/ble_stack_overview.htmlnordicN51822 ble_app_hrs 属性服务器 示例 句柄分布:https://blog.csdn.net 阅读全文

posted @ 2019-05-11 16:55 Hello-World3 阅读(1442) 评论(0) 推荐(0) 编辑

Binder学习—— C++实现分析
摘要:一、测试Demo的实现 1.Binder C++实现参考文件 frameworks/av/include/media/IMediaPlayerService.h frameworks/av/media/libmedia/IMediaPlayerService.cpp frameworks/av/me 阅读全文

posted @ 2019-05-10 18:24 Hello-World3 阅读(904) 评论(0) 推荐(0) 编辑

Android灯光系统(5)——通知灯分析实验
摘要:一、通知灯系统学习 二、App对通知灯的使用 1.每个APP都有一个 ContextImpl 上下文对象,ContextImpl中的静态代码块注册了一些系统服务 3.App使用notification的流程 三、笔记 1.可只import一个类的静态成员import static android.s 阅读全文

posted @ 2019-05-06 15:40 Hello-World3 阅读(929) 评论(0) 推荐(0) 编辑

Android灯光系统(4)——电池灯分析实验
摘要:一、电池事件的广播的注册 二、电池事件的广播与处理 三、笔记 1.启动服务的流程 所以一个服务的启动,首先构造函数被调用,其次被调用的就是onStart()。 2.获取xml中系统定义的资源 3.BatteryService中使用LightsService的方法 四、例子App 由于Android5 阅读全文

posted @ 2019-05-06 14:02 Hello-World3 阅读(676) 评论(0) 推荐(0) 编辑

Android灯光系统(3)——背光灯控制实现
摘要:2.使用到内容观察者模式 3.App测试Demo MainActivity.java package com.example.mm.lcd_brightness; import android.os.Bundle; import android.provider.Settings; import a 阅读全文

posted @ 2019-05-05 12:02 Hello-World3 阅读(2056) 评论(1) 推荐(0) 编辑

Android灯光系统(2)——HAL实现
摘要:1.Android系统中定义了如下一些灯 2.编写lights的hal文件 好的参考例子,sony手机使用的,移植这个程序: https://android.googlesource.com/device/sony/lt26/+/master/liblight/lights.c移植后的hal文件如下 阅读全文

posted @ 2019-05-05 11:55 Hello-World3 阅读(1192) 评论(0) 推荐(0) 编辑

Android灯光系统(1)——led_class驱动实现
摘要:1.对灯光的要求 (1)亮度可调节,如背光灯(2)颜色可变化,如电池电量指示灯(3)能闪烁,如通知灯 2.Linux内核对led的支持 在Linux内核中已经实现了一个led class, 它里面已经实现了brightness的调节和blink,文件为:drivers/leds/led-class. 阅读全文

posted @ 2019-05-05 11:51 Hello-World3 阅读(2350) 评论(0) 推荐(0) 编辑

Android 消息处理机制
摘要:1.消息处理机制简介 主要用于进程内线程之间的通信,主线程一般调用looper()进行循环等待处理消息,其它线程向它发消息并指定消息的处理方法。 (1)涉及文件包括frameworks中的: Looper.java Handler.java MessageQueue.java Message.jav 阅读全文

posted @ 2019-05-02 00:52 Hello-World3 阅读(1091) 评论(0) 推荐(0) 编辑

epoll简介
摘要:1.epoll简介 epoll是I/O事件通知工具,与select/poll相比,epoll最大的好处在于它不会随着监听fd数目的增长而效率降低。epoll API既可以用作edge触发的接口,也可以用作level触发,并且对于监听大量的文件描述符同样有很好的性能。 因为内核中的select采用轮询 阅读全文

posted @ 2019-05-01 12:12 Hello-World3 阅读(945) 评论(0) 推荐(0) 编辑

C/C++多线程
摘要:一、pthread_once使相关代码只执行一次 这个函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证init_routine()函数在本进程执行序列中仅执行一次。 #include <iostream> #include <pthread.h> #include 阅读全文

posted @ 2019-05-01 09:56 Hello-World3 阅读(338) 评论(0) 推荐(0) 编辑

导航