![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android 软件开发
文章平均质量分 65
齊家治國平天下
超过9年的工作经验,其中超过7年Android framework hal相关的工作经验
展开
-
Android 刚开机就出现“正在关机”对话框的问题分析
前言之前项目,一直会出现刚开机就出现“正在关机”对话框,然后就关机了,通过串口看内核log。发现进入了recovery模式,然后就跟了一下代码,看什么情况下会进入这个模式代码分析关机对话框关机对话框显示在frameworks/base/services/core/java/com/android/server/power/ShutdownThread.java而调用者在frameworks/base/services/core/java/com/android/server/power/Pow原创 2021-07-29 16:21:50 · 921 阅读 · 1 评论 -
Android GDB的使用
官网介绍https://source.android.com/devices/tech/debug/gdb简单使用前提source build/envsetup.shlunch aosp_arm64-userdebugNative processdevelopment/scripts/gdbclient.py -p 例如:mediacodec 的 pid是 388 要dbg mediacodec 只需要development/scripts/gdbclient.py -p 388下面就是原创 2021-07-21 17:15:13 · 499 阅读 · 0 评论 -
Android9 HWbinder使用-获取service流程解析
前言接上篇Android9 HWbinder使用-注册service流程解析讲了hidl service的注册流程,这篇文章接着解析hidl service的获取流程HwBinder框架流程解析废话不多说,继续以USB HAL 1.0为例,解析一下获取的流程以vts为参考获取的代码获取流程1. hardware/interfaces/usb/1.0/vts/functional/VtsHalUsbV1_0TargetTest.cpp改一下代码,以常见的不带参数为例usb = IUsb::原创 2020-12-30 18:19:44 · 2220 阅读 · 0 评论 -
Android9 HWbinder使用-注册service流程解析
前言写一个自己的 Android Hidl Service这里写了怎么创建一个自己的hidlservice,现在讲一下hidlservice的注册和获取流程HwBinder的框架原创 2020-12-30 13:33:39 · 2809 阅读 · 0 评论 -
VS Code常用配置
前言vs code 所有用户自己更改的配置都存储在settings.json文件中存储路径不同的系统存储路径不同linux${HOME}/.config/Code/User/settings.jsonwindows%APPDATA%\Code\User\settings.json常用配置禁止预览。每次打开文件总是新开tab页"workbench.editor.enablePreview": false,字体大小"editor.fontSize": 14,根据出口大原创 2020-12-17 14:44:19 · 214 阅读 · 0 评论 -
Android Android.bp 预编译/集成三方so 二进制 rc etc 配置文件等
前言现在大多数项目需要集成三方的so 二进制 rc etc 配置文件等,下面的方法基本可以覆盖,备用语法参考语法参考官方链接实例预编译继承二进制文件/bin 和启动rc源文件vendor/bin/hw/android.hardware.configstore@1.1-servicerc文件android.hardware.configstore@1.1-service.rccc_prebuilt_binary { name: "android.hardware.config原创 2020-08-04 15:29:31 · 5976 阅读 · 0 评论 -
写一个自己的 Android Hidl Service
HIDLHAL 接口定义语言(简称 HIDL,发音为“hide-l”)是用于指定 HAL 和其用户之间的接口的一种接口描述语言 (IDL)。HIDL 允许指定类型和方法调用(会汇集到接口和软件包中)。从更广泛的意义上来说,HIDL 是用于在可以独立编译的代码库之间进行通信的系统。HIDL 旨在用于进程间通信 (IPC)。进程之间的通信采用 Binder 机制。对于必须与进程相关联的代码库,还可以使用直通模式(在 Java 中不受支持)。HIDL 可指定数据结构和方法签名,这些内容会整理归类到接口(与类原创 2020-06-11 17:13:14 · 3347 阅读 · 5 评论 -
Android native/C/C++ 监控文件夹变化
前言原创 2020-05-08 15:13:07 · 991 阅读 · 0 评论 -
Android源代码编译脚本
前言在Android源代码编译过程中经常要source,lunch等一系列命令,这个脚本实现了默认保存编译log,无参可编译,可根据需求使用参数,可以单编,清编 update-api等脚本代码#!/bin/bash##creat by Deep Lee for android build# set -o errexitusage() { cat <<USAGE...原创 2020-01-16 14:57:41 · 932 阅读 · 3 评论 -
Bash脚本之多线程处理
前言在bash中并没有线程的概念,我们可以用多进程来模拟多线程的操作来达到同样的效果示例代码#!/bin/bash# thread number can modify if neededTHREAD=10ROOTDIR="$(pwd)"TMP_FIFO="/tmp/$.fifo"#cannot del here. this is thread controlmkfifo "$...原创 2020-01-16 14:39:56 · 2422 阅读 · 0 评论 -
Android C/C++获取屏触屏输入设备、屏幕分辨率
#include <stdlib.h>#include <stdio.h>#include <gui/ISurfaceComposer.h>#include <gui/Surface.h>#include <gui/SurfaceComposerClient.h>#include <ui/DisplayInfo.h>...原创 2020-01-14 18:17:07 · 4074 阅读 · 4 评论 -
C语言关键字const作用及其应用
只要学过C语言的,都有知道const这个关键字,知道是用来定义常量的,如果一个变量被const修饰,那么它的值就不能再被改变,那么还有什么其他作用呢?一、const常用作用1. 修饰局部变量const int n=5;int const n=5;/*二者是等价的,均表示变量n的值不能被改变了*/注意:在使用const修饰变量时,一定要给变量初始化,否则之后就不能赋值了!接下来看看co...转载 2020-01-14 16:41:02 · 470 阅读 · 0 评论 -
.gitignore使用详解
1. 简绍我们做的每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。比如我们项目中的npm包(node_modules),它在我们项目中是很重要的,但是它占的内存也是很大的,所以一般我们用Git管理的时候是不需要添加npm包的。2. 常用的规则Git忽略文件的原则忽略操作系统自动生成的文件,比如缩略图等;忽略编译生成的中间...转载 2020-01-14 14:45:42 · 588 阅读 · 0 评论 -
针对特定作者/文件/文件夹的git format-patch
针对特定作者git log X..Y --author='<AUTHOR>' --format="%H" | sed 's/$/^!/g' | xargs -I{} git format-patch {}git log X…Y –author =’< AUTHOR>‘ –format =“%H”以commit id的格式生成X到Y之间author为输出sed’s /...原创 2019-09-27 18:29:00 · 2612 阅读 · 0 评论 -
android 通过客服端 同步 客户端的touch操作
通过后台服务,获取客户端的原创 2014-09-23 15:07:19 · 796 阅读 · 0 评论 -
android 获取APK的包名 版本号 名称,图标等信息
转载,yhttp://blog.csdn.net/csheng1204/article/details/8161290懒得说了,直接附代码:[java] view plaincopyprint?/** * 获取apk包的信息:版本号,名称,图标等 * @param absPath apk包的绝对路径 *转载 2014-09-01 17:06:44 · 2157 阅读 · 0 评论 -
获取当前默认的launcher包名,并弹出选择launcher的界面
final PackageManager pkgMgt = this.getPackageManager();btn_home.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubI原创 2014-10-13 09:39:05 · 2162 阅读 · 0 评论 -
android 通过调用VLC的libvlcjni.so解码视频和rtsp流
前期准备下载NDK 地址:谷歌官方地址 clone vlc的的源码并编译成功 编译及源码下载详细请参考 VLC的官方wiki原创 2014-09-23 11:39:01 · 10689 阅读 · 3 评论 -
android获取设备屏幕分辨率的方法
// 通过WindowManager获取DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);System.out.println("heigth : " + dm.heightPixels);System.out.println(转载 2014-12-22 11:49:27 · 1399 阅读 · 0 评论 -
Android中单击空白区域隐藏键盘
转自:http://www.linuxidc.com/Linux/2015-03/114753.htm项目开发中,产品经理拿着iPhone上的效果说Android!iPhone上在使用键盘输入时,在非输入框位置(即空白区域)点击,键盘会收起来。之前在Android上没有实现过这儿效果,首先想到的是在最外层布局文件上添加onclik事件,由于子view会优先处理事件,所以在点击其他地方时隐...转载 2015-03-10 10:34:21 · 769 阅读 · 0 评论 -
Android 打印文件名、函数名、行号
Log.d(TAG,new Exception().getStackTrace()[0].getMethodName()); //函数名 Log.d(TAG, Thread.currentThread().getStackTrace()[2].getMethodName()); //函数名 Log.d(TAG, “”+Thread.currentThread().getStackTrace()[转载 2015-07-15 09:56:15 · 3964 阅读 · 1 评论 -
Git常用命令整理,详细全面
Git篇安装之后第一步安装 Git 之后,你要做的第一件事情就是去配置你的名字和邮箱,因为每一次提交都需要这些信息:git config --global user.name "Deep Lee"git config --global user.email "deeplee@gmail.com"获取Git配置信息,执行以下命令:git config --list...转载 2018-04-10 10:10:39 · 395 阅读 · 0 评论 -
利用ContentObserver获取系统时间制式12/24小时
Function 1直接获取 Settings.System.getInt(getContext().getContentResolver(), Settings.System.TIME_12_24, 0);Function 2利用数据库的回调 // 注册监听 getContext().getContentResolver().registerContentObserver(Set...原创 2019-09-12 10:54:00 · 360 阅读 · 0 评论 -
Clang-format 配置文件
官方文档官方详细配置解释点击此处文件格式.clang-format配置文件放置规则不指定,默认字需要格式化的文件同级目录向上寻找.clang-format文件--stype指定配置文件或者默认配置参考配置文件#基于那个配置文件BasedOnStyle: GoogleLanguage: CppColumnLimit: 120BraceWrapping: # class...转载 2019-09-16 10:04:10 · 8243 阅读 · 0 评论 -
利用MediaPlayer 获取一个音频或者视频文件的播放时长
MediaPlayer md = new MediaPlayer(); try { LogUtils.log(Environment.getExternalStorageDirectory() +"/123.mp3"); md.setDataSource(Environment.getExternalStorageDirecto转载 2014-08-28 09:13:31 · 11689 阅读 · 0 评论