Android系统
文章平均质量分 69
Android系统驱动,hal ,framewok
Windra6
Android系统开发,音视频开发。
展开
-
Android,Linux在线源码查看跳转
Android,Linux在线源码查看跳转原创 2022-04-24 09:31:18 · 1698 阅读 · 0 评论 -
Android12 AudioFlinger 读写PCM数据
一、前言:前面我们分析了AudioFlinger的初始化流程。这篇来看看AudioFlinger是如何读取pcm数据的。Android 12 AudioFlinger 分析(RK3588)_Windra6的博客-CSDN博客_android audio flinger分析二、Android Audio音频总体框架:三、AudioFlinger读取pcm数据流程:uml流程图:这里使用到FMQ机制。最终是调用到了audio_hw.c文件的pcm_read函数。四、Aud..原创 2022-04-23 10:22:56 · 7185 阅读 · 0 评论 -
Android12 Native C++ 层AudioRecord录音AudioTrack播放
一、背景: 发现网上能搜到的都是几年前的例子,现在Android版本都出到12了,几年前的例子以及不适用新版本了。于是就自己研究了下AudioRecord.java是如何调用到jni和C++层的AudioRecord.cpp。做一下记录为后来者避坑(PS:以前都不喜欢写博客,本人没时间也不太想分享)。改demo应该适用于Android8,Android9,Android10,Android11,Android12。或许过个几年到Androidxx又不适用了。二、遇到比较有意思的坑:程序...原创 2022-04-10 10:10:17 · 4006 阅读 · 7 评论 -
Android 12 AudioFlinger 分析(RK3588)
一、分析背景上一次详细分析跟读AudioFlinger代码还是Android5的时候,最近有空基于RK3588的Android12 sdk跟读了一下代码。工作中大部分也是不需要修改Google部分的代码,大多是是修改hal层代码。从Android O开始很多模块都HIDL化了。之前的版本都是AudioFlinger直接使用 如:audio.primary.XXX.so。mtk平台是 audio.primary.mt6771.so,RK是audio.primary.rk30.so。 其它方...原创 2022-03-12 10:03:46 · 4794 阅读 · 2 评论 -
Android输入系统IMS(2)--基础知识socketpair
套接字可以用于网络通信,也可以用于本机内的进程通信。由于本机内进程的IP地址都相同,因此只需要进程号来确定通信的双方。Linux环境下使用socketpair函数创造一对未命名的、相互连接的UNIX域套接字。socketpair 函数功能:创建一个全双工的流管道原型 int socketpair(int domain, int type, int protocol, int sv[2])...原创 2019-05-12 17:36:39 · 711 阅读 · 0 评论 -
Android输入系统IMS(1)--基础知识epoll和notify
做Android系统三年多,量产项目也有3~4个了,却从来没写过相关博客,最近换工作到新东家报道前这段时间比较闲写写博客总结一下这些年对Android系统的了解。先挑个相对简单的ims下手。epoll产生的背景: 在信息高速发展的时代对服务器的高并发性能要求越来越高,传统的select 、poll等IO多路复用的方法来实现并发服务程序已经无法满足现代化大数据,高并发,集群等应...原创 2019-05-12 15:19:14 · 1364 阅读 · 0 评论 -
c++程序和java程序socket通信Android
java服务端程序放到public void onCreate(Bundle savedInstanceState) {里面 //======================localsocket通信机制====================================================== // 接收线程 Thread local_r原创 2017-09-16 16:29:02 · 564 阅读 · 0 评论 -
编译时报错: error: <strong>two or more data types in declaration specifiers</strong> error:two or more
编译时某个文件报错:error:two or more data types in declaration specifiers原因可能有两个:1. 少了一个分号";",比如定义一个结构体时,在最后忘了加分号。解决方法:加上分号即可。2. 重复定义,比如:a.h文件中有如下定义:#define bool char#def原创 2017-08-25 17:39:22 · 635 阅读 · 0 评论 -
Android启动第三方app报错
1.使用一下方法均报错Permission Denial: starting Intent......................a Intent intent=new Intent(); intent.setClassName("cn.kuwo.kwmusiccar", "cn.kuwo.kwmusiccar.MainActivity"); s原创 2017-08-25 13:35:56 · 2023 阅读 · 0 评论 -
Android触摸屏突然没反应了
一、问题现象安装了一堆apk在跑。用着用着偶尔触摸屏就没反应了。二。通过分析找原因发现驱动是好的能正常上报数据。发现这些apk有些会横竖屏切换。会不会是切换的时候导致的了?查找代码发现旋转屏幕的时候会冻结触摸输入,旋转成功后会解冻。猜测是这些旋转屏幕的apk把触摸冻结了后没有成功解冻导致的。直接修改代码vi frameworks/base/services/java原创 2017-08-18 19:48:36 · 3167 阅读 · 0 评论 -
Android app去掉标题栏
网上找到的三种方法没一种能用的。我使用的方法如下:打开res/values/styles.xml ,把Theme.AppCompat.Light.DarkActionBar修改为Theme.AppCompat.Light.NoActionBar原创 2017-08-16 10:05:01 · 216 阅读 · 0 评论 -
Android系统剪裁后卸载APK失败重启系统
系统剪裁很多后卸载apk失败重启,查找logcat信息追踪代码发现是FIle.java里的delete函数失败返回-1导致PackagemanagerServer退出进而导致SystemServer退出最终重启整个java世界。查找java相关的系统服务c c++层的服务结果都是无功而返,找原因的过程中发现设置->安全选项也会崩溃。于是猜测和安全相关的配置有关,开始修改内核先关配置,结果都是没有效原创 2017-08-08 14:02:45 · 639 阅读 · 0 评论 -
Android之build.prop imx6
./device/fsl/sabresd_6dq/BoardConfig.mk:PRODUCT_MODEL := SABRESD-MX6DQ./out/target/product/sabresd_6dq/system/build.prop:ro.product.model=SABRESD-MX6DQ./out/target/product/sabresd_6dq/recovery/roo原创 2017-07-27 15:24:31 · 641 阅读 · 0 评论 -
android源码中编译的项目导入第三方jar
原本的Android.mk文件LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-java-files-under, src) \src/com/android/music/IMediaPlaybackService.原创 2017-07-07 14:15:07 · 233 阅读 · 0 评论 -
Android switch模块 设备节点名字。
如果是使用dts的方式声明gpio资源的情况 ,加载驱动成功后会在/sys/class/switch目录下生成xxxx.aa文件夹 。其中aa是数字。这个数字是由gpio dts资源声明的位置决定的。应该是gpio资源这棵子树在dts文件中的排序号。原创 2017-07-05 19:24:07 · 571 阅读 · 0 评论 -
Android Binder系统的理解。
以下是本人学习部分binder系统后自己对binder系统总体的想法领悟。欢迎各位大神指正。把binder驱动系统比作中介,把client比作需要找工作的工人,把server比作工厂,把service比作工作岗位。工人(client)端:工人通过电话打通中介(binder_open函数),然后用bio_initbio_put_xxx函数组织语言,然后告诉中介自己需要什么具体原创 2017-02-19 09:41:04 · 296 阅读 · 0 评论 -
Android输入系统IMS(5)--ims分发到java层
1.addWindow函数(InputChannel创建注册): 通过上一篇的分析,我们发现InputDispatcherThread调用InputChannel的sendMessage函数发送了一条消息,但是我们不知道谁在接收这条输入事件消息。在这里提前告诉大家是APP在接收这些消息。这篇我们将讲解消息到底是怎么发送到app的。status_t InputChannel::sen...原创 2019-06-04 16:39:02 · 639 阅读 · 0 评论 -
Android输入系统IMS(4)--ims分发过程
一.线程mDispatcherThread分发: 上一篇讲到了InputDispatcher::notifyKey()。看看这个函数的主要的函数调用:void InputDispatcher::notifyKey(const NotifyKeyArgs* args) { KeyEvent event; event.initialize(args->de...原创 2019-05-19 19:42:17 · 589 阅读 · 1 评论 -
Android输入系统IMS(3)--ims启动过程以及读取数据
艳阳高照的天气适合在出租屋做技术宅~~一. InputManagerService的启动: 1.在Android的SystemServer中的private void startOtherServices() {}函数中会启动InputManagerService,以及InputManagerService服务(这个服务后面会用于和InputChannel打交道获取输入事件分发给指定...原创 2019-05-19 13:11:28 · 806 阅读 · 0 评论