![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
安卓
aningxiaoxixi
此人很聪明,一看就会,所以不写
展开
-
linux kernel switch driver(android headset device detection) 例如(耳机)
android native层的input flinger会去读这个event,读到后往android java层notify,notify给InputManagerService/WiredAccessoryManager,WiredAccessoryManager在处理这个msg,比如当收到的msg表示有耳机接入时,会将外放mute掉。上面的CallVoidMethod调用就是native层call java层的函数,call的对应的java层的函数是InputManagerService类中的方法。.转载 2022-09-01 00:24:31 · 532 阅读 · 0 评论 -
android AV流程
音视频原创 2022-08-15 20:48:56 · 6148 阅读 · 0 评论 -
安卓audio外接设备连接,大致流程图
audiomanager原创 2022-06-28 22:59:55 · 642 阅读 · 0 评论 -
android audio volume 知识点
volume原创 2022-06-26 13:49:21 · 952 阅读 · 0 评论 -
audiosever 基础知识点
audio 零散知识点原创 2022-06-23 23:54:10 · 1167 阅读 · 0 评论 -
hdmi基础知识
hdmi原创 2022-06-18 07:41:44 · 641 阅读 · 0 评论 -
安卓audio init进程与audiosever进程
安卓 audio原创 2022-06-13 23:00:18 · 247 阅读 · 0 评论 -
安卓音频定位手段
【ALSA音频】一、音频定位手段原创 2022-03-23 23:32:50 · 242 阅读 · 0 评论 -
android 音量调整
1 流程图2 audio_policy_volumes.xml阐述了 流跟device 的音量范围【Android Audio】5、EngineBase加载音量曲线和策略 【基于Android Q 】原创 2022-04-25 00:01:44 · 3382 阅读 · 0 评论 -
android 有线耳机插拔
framework 流程log打印logcat |grep -E “WiredAccessoryManager|AudioPolicy|AudioService”04-23 11:42:07.280 1557 1557 I SystemServer: StartAudioService //strat SystemServer04-23 11:42:07.280 1557 1557 I SystemServiceManag原创 2022-04-23 20:10:39 · 3267 阅读 · 0 评论 -
安卓 device 编号
分为 c++ 层 跟 java 层java 层在 frameworks/base/media/java/android/media/AudioSystem.java 里面 public static final int DEVICE_NONE = 0x0; // reserved bits public static final int DEVICE_BIT_IN = 0x80000000; public static final int DEVICE_BIT_DEFAU原创 2022-04-23 10:49:52 · 325 阅读 · 0 评论 -
安卓logcat
1 安卓内部会维护一个log.d 服务2log.d 服务维护几个 buff (属于用户空间)包括main 比如说 app (查看日志缓冲区,不包括系统和崩溃日志信息)system 守护进程 服务进程 (查看系统日志缓冲区)events (查看已经解释的二进制系统事件缓冲区消息)radio 打电话 上网 短信 (查看无线装置/电话相关消息的缓冲区)crash 奔溃 (查看日志崩溃缓冲区)kernel如果用 logcat 那么默认会 打印原创 2022-02-16 16:25:51 · 1281 阅读 · 0 评论 -
audio的Framework层到hal 如何调用(以setparameters为例)
首先查看AudioManager之setParameters从应用到hal流程分析 android6.0看到最后两个格:audio_hw_device_t ->set_parameters() 是上层 调用hal层的接口导致 下层***audio_hw->adev_set_parameters()*** 执行。他们之间的联系,通过legacy_adev_open 建立联系。legacy_adev_open 是干什么的?1 首先链接 audio_hw_device_t(h原创 2020-12-15 14:25:47 · 1614 阅读 · 0 评论 -
音量大小设置
关键词1 音频流类型2 输出设备3 设置音量大小4 设备切换路由Android杂谈:音频调试小计原创 2020-11-30 10:02:33 · 302 阅读 · 0 评论 -
切换声音通道流程
5.4 切换声音通道流程A. 在驱动程序中切换:比如: 插上耳麦发生中断, 在中断处理程序中设置声卡让声音从耳机中输出B. 把输出通道的选择权交给android系统驱动程序上报音频拔插事件,该事件为某个device插入或拔出,Android系统需要切换声音通道,过程为(核心文件为frameworks/av/services/audiopolicy/AudioPolicyManager.cpp):(核心函数为 setDeviceConnectionState)a. checkOutputsF原创 2020-09-29 22:50:28 · 1031 阅读 · 0 评论 -
安卓识别耳机插拔事件
5.3 耳麦拔插事件调用流程分析使用input子系统还是使用state dev(uevent)上报拔插操作,取决于config_useDevInputEventForAudioJack配置值,该值为true时使用input子系统, 为false时使用uevent机制,该值在下述文件中定义, 后一个文件会覆盖前一个文件:frameworks/base/core/res/res/values/config.xmldevice/friendly-arm/tiny4412/overlay/framewo原创 2020-09-29 22:12:38 · 523 阅读 · 0 评论 -
AudioPolicyService服务
AudioPolicyService服务1 默认的声卡是哪一个?2 声卡中有哪些设备这些都需要 厂家设置设置的方法就是 搞一个配置文件AudioPolicyService服务调用流程图AudioPolicyService服务1 启动就要读取设备文件,因为启动进行设置,所有必须要有一个配置文件为标准2 @ AudioFlinger 不会主动做任何事情@ AudioPolicyService服务 给 AudioFlinger服务 发信息做事情A1 创建实例B1 注册服务原创 2020-08-29 21:41:39 · 266 阅读 · 0 评论 -
安卓audio 解析
audio中 输出传输流程audio中配置文件路径 与其包含 配置信息原创 2020-08-27 22:33:53 · 2095 阅读 · 0 评论 -
Android源代码编译命令m/mm/mmm/make分析
function m(){ T=$(gettop) //函数m调用函数gettop得到的是Android源代码根目录T if [ "$T" ]; then // 判断 $T 是否存在 make -C $T $@ //-C选项用来指定工作目录 $@ 传递给脚本或函数的所有参数。 else echo "Couldn't locate the top of the tree. Try s.转载 2020-08-12 09:01:33 · 2733 阅读 · 0 评论 -
binder系统驱动情景分析 transaction_stack机制
个人感觉似乎就是源进程把数据放到 目的进程的 todo 链表,从而唤醒目的进程,数据被目的进程处理。当一个进程进入 binder驱动,那么就会创建一个 binder_proc 结构体结构体binder_proc用来描述一个正在使用Binder进程间通信机制的进程。当一个进程调用函数open打开/dev/binder设备文件时,Binder驱动程序就会为该进程创建一个binder_proc结构体,并且保存在全局的binder_procs链表中。当A给B发送数据的时候数据会带上BC_T.原创 2020-07-09 23:58:10 · 358 阅读 · 0 评论 -
binder 的 ioctl
不管是写还是读都用一个函数,同时一个 ioctl 可以同时实现读写看内核源码static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg){ int ret; struct binder_proc *proc = filp->private_data; struct binder_thread *thread; unsigned int size = _IOC_SIZE(cmd); vo.原创 2020-07-05 22:20:11 · 610 阅读 · 0 评论 -
binder中 client和server
1 数据复制 是server 使用 mmap方法,client 使用普通io的方法。2 数据中的命令词(ctrol 的参数)是需要 copy_to_user的这个函数原创 2020-07-05 19:59:05 · 351 阅读 · 0 评论 -
安卓的svcmgr_publish
svcmgr_publish 中第四个参数不应该相同原创 2020-07-05 15:02:09 · 259 阅读 · 0 评论 -
安卓的思索
root 有没用这个些文件夹原创 2020-06-27 09:33:13 · 125 阅读 · 0 评论 -
安卓app 调用硬件驱动服务
app 使用直接调用黄线代码!得到服务根据服务调用方法,例如iledService.ledCtrl(3,0);因为 安卓源码中没有这个服务,所有要在 android stdio 中添加 新的 jar 文件一般控制安卓硬件,要使用 jni 文件 跟 hal 文件。hal 文件负责具体的硬件操作。jni 文件是向java层注册本地函数,向下加载 HAL文件,并调用 HAL 函数。dlopen 加载动态库因为 hw_get_module 调用所有根据 hw_get_modul原创 2020-06-26 08:01:48 · 561 阅读 · 0 评论 -
安卓线程传递数据机制
安卓 内核epoll 机制注意 两个线程 主线程 线程1创建一个 pipe 管道2线程 读管道,没有数据,线程休眠3主线程得到动作,写管道,写操作导致内核把线程唤醒原创 2020-06-25 15:55:49 · 342 阅读 · 0 评论 -
安卓硬件访问服务
JNI直接访问1 安卓应用程序通过加载 c库 来访问硬件服务程序2 安卓 app 通过 loadlibrary 加载 c库3 一旦c库被加载 JNI_Onload 函数就会被调用,通过jniRegisterNativeMethods 对方法进行调用 4 app 使用 方法调用 硬件使用服务extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved){ JNIEnv* env = NULL;原创 2020-06-22 22:45:53 · 254 阅读 · 0 评论 -
java 泛类
使用java 泛类 可以实现 在内部方法灵活使用不同class的参数注意:不能使用基本数据类型不使用泛类 1 2 class Person { 3 private Integer age; 4 5 public void setAge(Integer age) { 6 this.age = age; 7 } 8 9 public Integer getAge(原创 2020-06-20 07:44:40 · 267 阅读 · 0 评论 -
C_call_Java
## 基本步骤原创 2020-06-19 09:02:23 · 183 阅读 · 0 评论 -
JNI 解析
1 就一个native的关键字2 https://www.cnblogs.com/bastard/archive/2012/05/17/2506877.htmlLinux下JNI的使用1 native 修饰public native void print(String content); System.loadLibrary("TestJni"); 加载一个库2 根据库名字 生成 JNIEXPORT void JNICALL Java_TestJni_pri原创 2020-06-18 16:05:22 · 129 阅读 · 0 评论 -
安卓入门
安卓与linux的关系原创 2020-06-05 21:02:39 · 111 阅读 · 0 评论