- 博客(73)
- 收藏
- 关注
原创 Anroid u hdmi cec aidl hal service
每个NativeWrapper的实例都实现了NativeWrapper接口和DeathRecipient. 其中binderDied回调函数里面处理了hal service的重连。NativeWrapper, 将之前的setOption接口拆分一下,并且新增了setHpd和getHpd两个接口,在earc协议实现时会使用。可见从u开始,会优先使用aidl的hal service,其次是1.1的hidl,再其次是1.0的hidl。
2023-06-28 19:28:50
456
1
原创 Android T CEC AVC Feature
cec abolute volume control feature on android 13
2022-09-21 10:07:50
695
1
原创 怎么解析yocto上程序崩溃的偏移地址
[ 8515.278774@0] vma for f78e025c:[ 8515.279154@0] f787f000-f795d000 r-xp 00000000 b3:10 779[ 8515.279157@0] /lib/libc-2.31.so[ 8515.279820@0] [ 8515.280237@2] xxxThread[2784]: unhandled exception: 11 DABT (lower EL), ESR 0x92000006, level 2 trans...
2021-11-19 20:03:39
1473
原创 Android R 音量条分级
/** Maximum volume index values for audio streams */ protected static int[] MAX_STREAM_VOLUME = new int[] { 5, // STREAM_VOICE_CALL 7, // STREAM_SYSTEM 7, // STREAM_RING 15, // STREAM_MUSIC 7, // STREAM_A...
2021-09-10 14:35:40
1058
原创 [Q]Sending non-protected broadcast问题分析
有同事遇到发送广播接收不到的问题,分析log发现是system进程发送non-protected广播的问题。Ams在发送广播时,对于systemApp会要求广播必须是声明在frameworks\base\core\res\AndroidManifest.xml里面的protected-broadcast。这样可以避免三方垃圾应用也发送这些广播来捣蛋。03-30 09:35:31.829 ...
2020-03-31 10:10:24
19703
1
原创 [android q] 从后台启动 Activity 的限制
https://developer.android.com/guide/components/activities/background-startshttps://developer.android.com/training/notify-user/time-sensitive从AndroidQ开始android进一步限制了从后台(组件)启动Activity的行为,前台的不受限制。说白...
2020-03-25 18:59:15
2266
1
原创 TIF 和Hdmi cec hotplug热插拔事件过程梳理二
这次梳理下Hdmi设备增删的事件是如何传递到TvInputService,以及TvInputManagerService的处理差异。1.HdmiCecLocalDeviceTvHdmiControlService在收到HdmiCecController的onHotplug回调后,会再依次调用设备列表中的各个HdmiCecLocalDevice的onHotplug方法。以Tv为例,它会发起H...
2019-12-24 11:35:58
1835
原创 TIF 和Hdmi cec hotplug热插拔事件过程梳理一
从Hal开始,具体的code不贴了,只贴下接口。1.注册接口hardware\libhardware\include\hardware\hdmi_cec.h /* * (*register_event_callback)() registers a callback that HDMI-CEC HAL * can later use for incoming...
2019-12-23 22:07:48
2598
1
原创 git 回退单个文件
git log xxxcopy想要回退到的版本的commitidgit reset commit_id xxx这样已经添加到本地库的修改就是回退后的修改,尚未保存的部分则是这个版本前的修改。...
2019-12-10 14:18:26
705
转载 [转载]家庭剧院音效再升级HDMI eARC相容未来效能
byMarshall GoldbergHDMI 2.1是HDMI最新的标准,能够提升达300%的视讯传输速度,并透过压缩功能进一步再提升300%,视讯频宽较HDMI 2.0的18Gbps高9倍。HDMI 2.1标准增加一系列新特性,包括动态HDR(Dynamic HDR)、可变更新率(Variable Refresh Rate, VRR)、以及快速媒体切换(Quick Media Sw...
2019-12-05 10:25:03
2151
原创 android volume keyevents传递流程梳理
Tv的遥控器传递普通的keyevent是通过Tv的dispatchKeyEvent函数,经ITvInputSession onKeyUp/onKeyDown,最终调用HdmiControlService的sendKeyEvent方法将KeyEvent变成HdmiCecKeyCode,发送message MESSAGE_USER_CONTROL_PRESSED/MESSAGE_USER_CONTRO...
2019-11-21 11:14:12
1293
1
原创 android SystemProperties.getBoolean
看到set的时候发现value只能是字串,那getBoolean会不会出问题,一看android已经跟做好优化了。system\core\base\properties.cppbool GetBoolProperty(const std::string& key, bool default_value) { std::string value = GetProperty(k...
2019-10-11 10:51:21
4697
原创 TvInput Cec key事件传递流程
一、TV应用MainActivity1.dispatchInputEvent这里会特殊处理back键,只有Home键才会退出TV应用,back键会传递给cec连接的device处理。如果按键不在黑名单里面,会传递给应用处理。比如音量键就不会传递出去。 public boolean dispatchKeyEvent(KeyEvent event) { if (Sy...
2019-08-27 20:11:01
1165
原创 Using Instrumentation for cts/gts
Engineers don’t setup cts/gts environment, we can use am instrument command to debug.Pls follow below steps to setup the debug environment: Install cts apk: adb install CtsHardwareTestCase...
2019-08-22 13:58:06
501
原创 IHdmiCec
/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * Y...
2019-07-30 19:37:47
495
原创 HdmiControlService 流程梳理
HdmiControlService是提供发送和处理HDMI控制消息, HDMI-CEC和MHL控制命令的服务。一 HdmiControlService启动1.SystemServer在startOtherServices过程中会启动HdmiControlService if (mPackageManager.hasSystemFeature(PackageM...
2019-07-30 17:06:08
4374
原创 CEC和ARC介绍
CEC和ARC介绍 众所周知,HDMI作为一个数字化视频音频的接收标准,是可以同时传输视频和音频的,当然随着HDMI版本的提升,它的功能也一直在增强。事实上当HDMI升级到1.3时,人们就发现了HDMI多了一个CEC功能。ARC就是在HDMI版本升级到1.4出现的功能。一、CEC是什么? 1、CEC,全称是Consumer Electronics Control,消费类电...
2019-07-29 17:12:11
8636
2
原创 Android 多用户挂载技术(K/L)
在AndroidK和L版本里面,zygote会将sdcard指向/storage/emulated/0,而非从init启动的bin程序识别的/storage/emulated/legacy,也就是说如果将sdcard的路径传递给二进制服务的时候,必须要进行相应的转换。类似于下面的code。 if (!strncasecmp("/storage/emulated/0", mIma...
2019-07-18 10:14:00
1067
原创 TreeSet、TreeMap多线程场景可能出现infinite loop
1.TreeSet,基于TreeMap线程不安全的红黑树数据结构。在线程不安全访问时,有可能出现死循环。https://ivoanjo.me/blog/2018/07/21/writing-to-a-java-treemap-concurrently-can-lead-to-an-infinite-loop-during-reads/android p里面RunningTasks.java...
2019-05-21 14:37:37
1635
原创 android Nextflix 视频丢帧问题分析
1.atrace -b 15000 sched irq video-o /data/local/tmp/trace1video category对应的VFRAME_INPUT能直观的看到在丢帧时会出现明显的滑坡。那么就需要把注意力放到这一段cpu的时间片分布情况。2.对比正常版本的时间片分布,发现SystemServer内部的IpClient.eth0和HeapTaskDaemon...
2019-05-09 11:34:39
1072
原创 android 虚拟机prop
* <tr><td>java.library.path</td> <td>Search path for JNI libraries</td> <td>{@code /vendor/lib:/system/lib}</td></tr> * <p>The foll...
2019-04-26 19:05:51
142
原创 strace 查看 socket block 状态
strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。比如已知setprop动作卡在socket连接上,socket对端也没有日志打印,...
2019-04-15 16:12:27
1145
原创 Youtbe 4k 起播阶段时间花费分析
1.什么是Youtube 4k起播阶段从用户操作来讲,是在remotecenter键点击开始到Youtube开始显示视频资源的时间。从android显示的流程来看,是从omxhal开始视频解码到SurfaceView显示第一个buffer的时间。2.如何保证播放4k资源这个是由youtube应用自己根据网络的带宽情况控制的。3.如何分析systrace4.开始时间段...
2019-04-09 17:21:40
268
原创 java和c++的值传递和引用传递
主要参考:https://blog.csdn.net/superhill/article/details/7446669今天写改bug的时候突然就发现了这样一个问题:int a = 1;int b = a;a = 0;b的值是0还是1?Object a = new Object();b = a;a = null;b的值又为不为空?实际上这就是类似于c++的...
2019-03-21 17:43:31
747
原创 Android SystemUI 通过StorageEventReceiver监听内卡和外卡参考
u盘插入03-07 09:26:33.789 3141 3271 D UsbHostManager: USB device attached: vidpid 0951:1666 mfg/product/ver/serial Kingston/DataTraveler 3.0/0.01/60A44C425324F250899718BC hasAudio/HID/Storage: fals...
2019-03-07 17:56:04
4362
原创 【Android】如何配置打开和关闭selinux
直接配置init进程的Android.bp文件和uboot配置的值最佳,Android.bp下面-DALLOW_PERMISSIVE_SELINUX=0则是关闭,=1则是打开;bootloader/uboot-repo/bl33/board/公司名/configs/对应芯片的配置头文件.h,"EnableSelinux=enforcing\0"\是打开,"EnableSelinux=permiss...
2019-02-21 20:38:16
13420
4
原创 Android startActivityForResult对应的onActivityResult和onRequestPermissionsResult是怎么来的
简而言之,在Activity finish时会将resultCode和resultIntent的数据打包放在原来的Activity的ActivityRecord里面,在这个Activity重新resume时,会将ActivityResult的数据提取出来进行处理,是动态权限的就调onRequestPermissionsResult,一般情况下就回调onActivityResult。Activi...
2019-02-13 16:34:32
3808
1
原创 Android VSYNC事件传递流程
我一直以为DisplayEventReceiver是跟Input一样,通过BitTube的两个socket进行跨进程的通信,也就是SF-APP之间的通信,但实际上不是的。实际上的逻辑是,每次VSYNC事件到来从HAL的线程调之后,01-01 00:35:01.163 2963 3017 D SurfaceFlinger: onVSyncEventEventThread会将这个vsync事...
2019-02-12 11:26:32
1972
原创 BufferSlot
struct BufferSlot { BufferSlot() : mGraphicBuffer(nullptr), mEglDisplay(EGL_NO_DISPLAY), mBufferState(), mRequestBufferCalled(false), mFrameNumber(0), mEglFence...
2019-01-30 11:19:11
396
原创 BufferState
BufferState() : mDequeueCount(0), mQueueCount(0), mAcquireCount(0), mShared(false) { } uint32_t mDequeueCount; uint32_t mQueueCount; uint32_t mAcquireCount;...
2019-01-30 11:15:51
281
原创 Android Input
InputDispatcher publish InputEvent到InputChannel的客户端,在应用主线程调用WindowInputEventReceiver的回调dispatchInputEvent开始事件分发。第一次会交给输入法ImeInputEventSender处理。 InputMethodManager$ImeInputEventSender(InputEventSend...
2019-01-11 10:56:05
485
原创 Android 开发者定位调整log缓冲区来解决丢log的问题
https://blog.csdn.net/kc58236582/article/details/51506896里面提到了开发者定位来调整缓冲区的逻辑,进而理了一下。frameworks/base/packages/SettingsLib/src/com/android/settingslib/development/AbstractLogdSizePreferenceControlle...
2018-12-20 14:05:33
4318
转载 【转载】【Android】如何快速分析fd leaks, 文件句柄泄露.
https://blog.csdn.net/xiaolli/article/details/56012228一篇老文章了,总结的不错。如何快速分析fd leaks, 文件句柄泄露.[Keyword]FD leaks, File Description Leaks, Too many open files, error 24[Solution]android 默认每一个进程最多能够打开的...
2018-12-17 16:47:21
2562
原创 Android 休眠流程的一点理解
1.电源管理通过监测display的状态,当灭屏时则发起休眠的流程,调用native层的方法继续往下走。首先是在DisplayPowerController中收到MSG_UPDATE_POWER_STATE消息,随后经过一系列的回调了DisplayBlanker接口的requestDisplayState。 然后是DisplayPowerCallbacks接口的onDisplayStateChan...
2018-12-13 11:14:23
4094
原创 Android malloc debug定位native内存问题(主要是内存泄漏)
android sources全局指导坐镇https://source.android.com/devices/tech/debug/native-memory一直没有实践native进程的内存泄漏问题的debug,网上也一直没找到有用的。直到遇到heapsnap,发现真是有用,至此一块心病也是解决了。再加上之前用asan来分析userspace的内存问题,可以说稳定性这块关于内存的算是有...
2018-11-21 16:58:14
10905
3
原创 Android P Asan使用总结
参考官网的指导针对use after free的场景使用asan在P上做了测试,现在总结放在这里。以后至少在user space踩内存的问题没那么怕了。https://source.android.com/devices/tech/debug/asan?tdsourcetag=s_pctim_aiomsg1.all app①frameworks/base/cmds/app_process...
2018-11-14 17:15:23
9606
1
原创 Android 默认输入法配置问题
Android默认输入法的配置和两个关键词相关,都保存在SettingsProvider或者settings_secure.xml里面。一个是enabled_input_methods,表示配置的系统允许使用的输入法的id字符串,中间以冒号分隔,比如com.android.inputmethod.latin/.LatinIME:com.xxxx.inputmethod.remote/....
2018-09-20 16:47:01
3111
转载 【转载】Fd leak in Android
写得很好。链接:http://huzhengyu.com/2017/01/21/Fd-leak-in-Android/FD(File Descriptor)文件描述符在形式上是非负整数,它是一个索引值,指向内核为每个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在Linux系统中,一切设备都视作文件,文件描述符为Linux平台...
2018-09-14 13:32:35
1957
原创 Android 启动Activity时唤醒系统的方法(Sleep、Dream)
今天有客户求助一个问题,说是之前在L版本还可以的唤醒系统的方案,在O版本上不行了。他的代码的思路是这样子,首先在Activity里面aquire一个ACQUIRE_CAUSES_WAKEUP flag的wakelock,然后再设置添加window的flag WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON。首先,如果要在Activity里面保持系...
2018-09-03 19:44:59
4076
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人