- 博客(31)
- 资源 (14)
- 收藏
- 关注
原创 Android系统_输入系统_Linux编程知识inotify和epoll
Android系统是基于Linux内核的,所以Android的系统输入就离不开Linux的系统设备输入。而输入设备的连接断开以及输入设备所传递的输入事件是如何被Android系统所感知的呢?下面我们就来了解一下Linux关于输入系统的两个重要机制notify和epoll。问题1、键盘即插即用,即我们是怎么监测键盘接入与拔出的呢?答:① hotplug:内核发现键盘接入/拔出,会启动hotplug进程,再发消息告诉输入系统② inotify:输入系统使用inotify监测目录 /dev/input问
2020-06-10 22:41:54 370 1
原创 Android6.0 在SElinux下如何获得对一个内核节点的访问权限
Android 6.0下,因为采取了SEAndroid/SElinux的安全机制,即使拥有root权限,或者对某内核节点设置为777的权限,仍然无法在JNI层访问。本文涉及到的用户自定义的内核节点为/dev/freg_device问题Log如下:06-16 00:27:09.313 224 224 I SystemServer: Freg Service06-16 00:27:09....
2019-06-22 22:04:33 525
原创 Ubuntu16.04编译Android 6.0系统源码过程简要记录总结
一,安装VMware Workstation,百度网盘下载(内含注册机)链接: https://pan.baidu.com/s/1wz4hdNQBikTvyUMNokSVYg 提取码: yed7VMware Workstation 15 Pro 永久激活密钥 下载https://blog.csdn.net/felix__h/article/details/82853501二,创建新的虚拟机...
2019-06-03 20:43:33 2338
原创 Android FFmpegHellWorld(最简单的使用FFMpeg库的工程实例)
目录一、创建AndroiStudio工程FFmpegHellWorld二、添加libffmpeg.so库及头文件,修改CMakeLists三、编写JNI方法调用FFmpeg库一、创建AndroiStudio工程FFmpegHellWorld在创建工程的时,将Include C++ Support勾上。创建好的工程目录如下:二、添加libffmpeg.so库及头文件,修改CMakeLis...
2018-09-27 17:13:28 906
原创 FFMpeg编译打包libffmeg.so总结
目录一、基于FFMpeg应用开发流程二、编译打包libffmpeg so库1、下载安装NDK2、下载FFmpeg源码,修改FFmpeg的configure3、生成类库一、基于FFMpeg应用开发流程首先我们根据自己项目需要,来对FFmpeg源码进行功能裁剪以减小最后APK的大小。编译好FFmpeg库后再添加自己的C、C++代码来使用FFmpeg库来实现相应的音视频编解码功能。再编写make文件...
2018-09-26 18:15:09 5729 1
原创 Android JNI Java调用C++以及C++调用Java
目录一、JNI简介二、JNI资源数据类型基本数据类型数组数据类型复杂数据类型Signature三、Java调用C++四、C++调用Java一、JNI简介JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。J...
2018-09-26 15:40:21 3354
原创 Android Binder机制理解
Android Binder机制理解一、说明 Android系统中应用很广泛的但也是最难理解的就是Binder机制了,从APP组被调到系统平台组后感觉需要学的东西更多了,思考的方式也有所改变,从是什么转变到为什么(背后的设计思想和实现细节),初次接触Framework感觉就是在于各种服务打交道,例如ActivityManagerService、WindowManagerService、Pow
2016-08-24 17:55:06 3014 1
原创 Android SensorManager分析
SensorManager 基于Android 5.1源码分析:2016-04-231、Java层启动轮询线程的流程 SensorManager.java这里有4个供上层APP使用的注册接口。public boolean registerListener(SensorListener listener, int sensors)public boolean regist
2016-04-23 17:35:38 10756 1
原创 Linux桌面上运行Android应用解决方案简要汇总
4、Shashlik:Shashlik是一款基于QEMU(Quick Emulator)的开源Android应用运行器,可以在Linux桌面上运行Android应用。3、Android Studio Emulator:Android Studio是Google官方的开发工具,它包含一个Android模拟器,可以在Linux桌面上运行Android应用。6、Scrcpy:Scrcpy是一个开源工具,可以将Android设备的屏幕镜像到Linux桌面上,并且可以在Linux桌面上控制Android设备。
2023-04-21 15:47:30 2397 1
原创 gdb调试技巧
除了常规的调试技巧,GDB还提供了一些高阶技巧,可以帮助开发人员更快速、更准确地找到问题。GDB是GNU Debugger的缩写,是一款常用的命令行调试器,可用于调试C、C++、汇编等程序。以上是一些GDB调试高阶技巧,能够帮助开发人员更快速、更准确地找到问题,但需要根据实际情况进行选择。以上是一些常用的GDB调试技巧,当然GDB还有其他的命令和选项可供使用,需要根据实际情况进行选择。是一个表达式,只有当表达式为真时才会触发断点。,并在它的值发生变化时触发断点。是远程机器的主机名或IP地址,
2023-04-16 11:05:25 984
原创 Android的HIDL理解
HIDL是HAL的升级版,其主要区别在于使用了IDL(Interface Definition Language)来定义接口,这使得HIDL接口更具可读性和可维护性。此外,HIDL支持将接口分成多个部分,以便只加载必要的部分,从而减少了启动时间和内存占用。HAL是Android系统中实现硬件抽象层的传统方法。此命令将生成IMyHidlInterface.h和IMyHidlInterface.cpp文件,其中IMyHidlInterface.h文件包含了C++代码,以便将HIDL接口绑定到C++实现。
2023-04-16 10:18:41 752
原创 进程间通信之共享内存
该程序创建了一个共享内存,然后创建了一个子进程。父进程向共享内存中写入一条消息,子进程从共享内存中读取这条消息并输出。注意,程序需要在最后将共享内存从当前进程的地址空间中解除映射,然后删除共享内存,否则共享内存将一直存在于系统中。该程序可以通过编译器(如gcc)进行编译,然后在Linux系统上运行。
2023-04-14 19:46:55 138
原创 进程间通信之消息队列
该程序创建了一个消息队列,然后创建了一个子进程。父进程向消息队列中发送一条消息,子进程从消息队列中接收这条消息并输出。注意,程序需要在最后删除消息队列,否则消息队列将一直存在于系统中。该程序可以通过编译器(如gcc)进行编译,然后在Linux系统上运行。
2023-04-14 19:18:46 110
原创 进程间通信之管道
该程序创建了一个管道,然后创建了一个子进程。父进程向管道中写入一条消息,子进程从管道中读取这条消息并输出。注意,父进程在写入消息后需要关闭写端,子进程在读取消息后需要关闭读端,否则程序将一直阻塞等待数据的到来。该程序可以通过编译器(如gcc)进行编译,然后在Linux系统上运行。
2023-04-14 19:08:22 71
原创 使用哈希表的C语言示例
哈希表的大小为101,也就是说,我们可以用0到100的整数来作为哈希表的索引。每个哈希表元素是一个指向结构体nlist的指针,结构体nlist中包含了一个指向下一个结构体的指针next,一个字符串name和一个字符串defn,分别表示哈希表中的键和值。需要注意的是,在实际应用中,我们需要考虑哈希表的负载因子、哈希冲突处理、扩容和缩容等问题,以确保哈希表的性能和可靠性。在main函数中,我们向哈希表中插入了三个键值对,然后分别查找了每个键对应的值,并输出了结果。
2023-04-14 14:57:36 338
原创 如何写代码才能够让CPU执行得更快?
优化锁:多线程程序中的锁是常见的同步机制,但是锁的使用会导致线程之间的竞争和等待,从而降低程序的性能。可以通过使用更细粒度的锁、避免锁的嵌套、减少锁的持有时间等方式来优化锁的使用。使用合适的数据结构和算法:选择合适的数据结构和算法可以减少计算时间和内存开销。可以通过使用哈希表、红黑树等高效的数据结构和快速排序、归并排序等高效的算法来优化内核代码。可以通过使用无条件跳转和避免复杂的条件语句等方式来避免分支预测错误。总之,优化内核代码需要结合具体的场景和需求,通过不断优化算法和编码方式来提高CPU的执行效率。
2023-04-14 13:58:52 353
原创 最简单的Surface测试程序
SurfaceTest.cpp#include <cutils/memory.h>#include <utils/Log.h>#include <binder/IPCThreadState.h>#include <binder/ProcessState.h>#include <binder/IServiceManager.h>#include <gui/Surface.h>#include <gui/SurfaceC
2020-06-26 17:28:24 1002
原创 Linux虚机磁盘扩展操作流程
一.找虚机管理员增加磁盘扩展容量二.磁盘分区查看已有分区sudo fdisk -l2.分区过程输入下面命令进入fdisk命令模式(这里要分区的硬盘为/dev/sda):sudo fdisk /dev/sda根据上图提示, 输入m可以显示帮助信息:根据上图提示, 输入n添加一个新分区在后面的分区类型选择中输入p(创建主分区), 其余的设置保持默认值即可.最后输入w保存分区...
2019-04-09 18:45:55 266
原创 Android系统编译:添加OpenCV库和模型配置文件
目录一、添加 libopencv_java3.so库至/system/lib64/二、添加使用OpenCV库时用到的模型文件和配置文件至/data/system/一、添加 libopencv_java3.so库至/system/lib64/在Android源码目录的hardware/libgesture/目录下创建libopencvhw文件夹,并将libopencv_java3.so文件放置于...
2018-09-27 18:10:14 998
原创 bin/bash^M: bad interpreter: No such file or directory解决
问题:bin/bash^M: bad interpreter: No such file or directory原因:.sh脚本在windows系统下用记事本文件编写的。不同系统的编码格式引起的。解决方法:修改.sh文件格式(1)使用vi工具 vi build_android.sh(2)利用如下命令查看文件格式 :set ff 或 :set filef...
2018-08-22 18:02:04 4878
原创 Android 系统使用uinput模拟鼠标输入设备的方法
接到组长给的新任务,项目需要实现一个通过摄像头获取图像数据,然后通过OpenCV进行手势识别,再将识别到的手势信息转换成鼠标事件信息回传给input子系统,进而实现通过手势模拟鼠标操作来对Android系统进行操作的功能。 这里先对事件注入部分做简要分析介绍。 系统端怎样模拟input event呢,此处我们通过uinput桥接;原理是利用内核现有的uinput驱动,通过内核驱动uinput来...
2018-08-16 19:49:16 4048 1
原创 Android 系统内置存储空间满导致系统崩溃的问题解决
测试反馈:设备内存满时,进入设置,点击连接管理,出现死机重启 打印log如下图: 本地验证时发现虽然把/data或/cache填满了,无法再写入数据,但是透过stat查看分区文件系统状态, free blocks并不等于0. 关于文件系统空间预留的说明 ext4模块本身会预留2%左右的分区存储空间做reserved空间,专门为ext4自己保留。 在super.c (/vendor...
2018-08-16 18:01:05 10553 12
原创 Android 系统使用蓝牙遥控器的确定键无法调起输入法问题解决方案
测试反馈Android蓝牙遥控器适配问题:瞩目应用中,点击加入会议,使用遥控器点击返回键收起输入法键盘,再点击会议名称栏无法调出输入法键盘。此问题在Android 6.0必现。经查看分析,应用使用了AutoCompleteTextView控件,此控件自动添加了onclicklistener监听事件。 AutoCompleteTextView继承了EditText,EditText的父类是Te...
2018-08-16 14:47:18 1978 1
原创 Android 系统横屏时按键导航栏遮挡输入法窗口问题解决方案
最近遇到Android 6.0系统横屏时出现按键导航栏遮挡输入法面板的问题,对比查看华为荣耀V9(Android 8.0)上也有同样的问题,如下图: 可见此问题是Android原生的Bug。其原因是由于导航栏在显示和隐藏的时候没有及时更新layout。 打印其堆栈信息如下: 修改PhoneWindow类的updateNavigationGuard方法,在updateNavigatio...
2018-08-16 11:06:16 3095 1
原创 简单总结Android系统开发中LOG的使用
在Android系统中,提供了简单、便利的LOG机制,开发人员可以方便地使用。下面简单介绍在Android内核空间和用户空间中LOG的使用和查看方法。一、内核开发时LOG的使用 printk提供了8种日志级别
2017-06-26 18:26:46 883
原创 Android 系统时间更新机制研究
最近因工作的需要,开始接触到Android系统时间网络同步更新的问题。遇到的实际问题如下:1、手机恢复出厂设置后,系统时间没有及时更新。2、手机使用当中时间同步更新后,时间快了几分钟。3、手机状态栏的时间的分钟显示没有及时更新。 鉴于各个项目问题的重复出现,有很多地方不是太明白,导致解决问题的效率比较低,正想研究一下,所以根据网上相
2016-09-10 10:30:45 4878 1
原创 嫌工资少,先来看看你值多少钱
嫌工资少,先来看看你值多少钱?我们都知道工作和工资挂钩,那么你一直认为工资少的时候,你有想过你自己值多少钱吗?以下是高工资的标准能力,看看你符合几条!否则,请别嫌弃工资少!一:忠诚单位可能开除有能力的员工,但对一个忠心耿耿的人,不会有领导愿意让他走,他会成为单位这个铁打营盘中最长久的战士,而且是最有发展前景的员工。1、 站在老板的立场上思考问题;2、 与上级分享你的想法;3、 ...
2016-08-17 10:40:51 1036
原创 Android开发环境搭建
Android开发环境搭建 获取SDK工具包(Standard Develop Kits) 下载地址:http://dl.google.com/android/adt/adt-bundle-windows-x64.zip工具包,包含以下内容: Eclipse + ADT插件(android develop kit:eclipse的插件) Android SDK
2015-04-02 10:33:12 656
原创 创建Android模拟器
安装Eclipse和ADT,这里我使用的是Google官网提供的一整套开发工具,adt-bundle-windows-x86_64-20140702.zip。官网网址:www.developer.android.com 奇葩的是很多网友说被和谐了,当时我却可以访问并成功下载。在创建Android模拟器之前,我们需要先启动Android SDK Manager,将我们所需的Android版本下载...
2015-04-01 20:40:54 680
原创 JDK安装与环境变量配置
一、认识JDK及环境变量1、什么是环境变量Path环境变量的作用:path环境变量是操作系统外部命令搜索路径2、JDK里面有些什么bin:使用java所用的所有的命令都在这个目录里demo、sample:include:里面的是一些C语言程序jre:Java运行时环境lib:Java所使用的各类包文件各类帮助文档src.zip:放的是JavaJDK的部分源文件3、什么是J...
2015-04-01 18:04:05 444
原创 Ubuntu12.04更新出现 The system is running in low-graphics mode解决方法
通常这种情况是由于ATI显卡引起的,各类机器产生这种情况的具体原因也有所不同。按ctrl+alt+f1进行登录:输入用户名和密码;输入密码时光标只闪烁(密码不显示),直接输入就行。登录完之后输入以下:sudo apt-get install fglrx //linux下安装ati显卡驱动的命令sudo reboot //安装完重启系统...
2013-06-28 16:42:59 774
MobaXterm_Installer_v20.1.zip
2020-04-03
Android FFmpegHellWorld(最简单的使用FFMpeg库的工程实例)
2018-09-27
NDK工具android-ndk-r10e-linux-x86_64
2018-09-26
FFMpeg编译打包libffmeg.so
2018-09-26
android平台的视频编辑SDK
2018-07-12
高仿微信小视频
2018-07-12
Android视频播放器
2018-07-12
Fragment管理框架
2018-07-12
雷凌无线网卡linux驱动 在s3c2440上已编译移植通过
2012-03-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人