自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android学习之旅

学习是一种修行,脚踏实地,积少成多

  • 博客(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 335 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 489

原创 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 2297

原创 Android FFmpegHellWorld(最简单的使用FFMpeg库的工程实例)

目录一、创建AndroiStudio工程FFmpegHellWorld二、添加libffmpeg.so库及头文件,修改CMakeLists三、编写JNI方法调用FFmpeg库一、创建AndroiStudio工程FFmpegHellWorld在创建工程的时,将Include C++ Support勾上。创建好的工程目录如下:二、添加libffmpeg.so库及头文件,修改CMakeLis...

2018-09-27 17:13:28 854

原创 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 5381 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 3203

原创 Android Binder机制理解

Android Binder机制理解一、说明 Android系统中应用很广泛的但也是最难理解的就是Binder机制了,从APP组被调到系统平台组后感觉需要学的东西更多了,思考的方式也有所改变,从是什么转变到为什么(背后的设计思想和实现细节),初次接触Framework感觉就是在于各种服务打交道,例如ActivityManagerService、WindowManagerService、Pow

2016-08-24 17:55:06 2980 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 10588 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 2070 1

原创 gdb调试技巧

除了常规的调试技巧,GDB还提供了一些高阶技巧,可以帮助开发人员更快速、更准确地找到问题。GDB是GNU Debugger的缩写,是一款常用的命令行调试器,可用于调试C、C++、汇编等程序。以上是一些GDB调试高阶技巧,能够帮助开发人员更快速、更准确地找到问题,但需要根据实际情况进行选择。以上是一些常用的GDB调试技巧,当然GDB还有其他的命令和选项可供使用,需要根据实际情况进行选择。是一个表达式,只有当表达式为真时才会触发断点。,并在它的值发生变化时触发断点。是远程机器的主机名或IP地址,

2023-04-16 11:05:25 808

原创 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 620

原创 进程间通信之共享内存

该程序创建了一个共享内存,然后创建了一个子进程。父进程向共享内存中写入一条消息,子进程从共享内存中读取这条消息并输出。注意,程序需要在最后将共享内存从当前进程的地址空间中解除映射,然后删除共享内存,否则共享内存将一直存在于系统中。该程序可以通过编译器(如gcc)进行编译,然后在Linux系统上运行。

2023-04-14 19:46:55 94

原创 进程间通信之消息队列

该程序创建了一个消息队列,然后创建了一个子进程。父进程向消息队列中发送一条消息,子进程从消息队列中接收这条消息并输出。注意,程序需要在最后删除消息队列,否则消息队列将一直存在于系统中。该程序可以通过编译器(如gcc)进行编译,然后在Linux系统上运行。

2023-04-14 19:18:46 85

原创 进程间通信之管道

该程序创建了一个管道,然后创建了一个子进程。父进程向管道中写入一条消息,子进程从管道中读取这条消息并输出。注意,父进程在写入消息后需要关闭写端,子进程在读取消息后需要关闭读端,否则程序将一直阻塞等待数据的到来。该程序可以通过编译器(如gcc)进行编译,然后在Linux系统上运行。

2023-04-14 19:08:22 49

原创 使用哈希表的C语言示例

哈希表的大小为101,也就是说,我们可以用0到100的整数来作为哈希表的索引。每个哈希表元素是一个指向结构体nlist的指针,结构体nlist中包含了一个指向下一个结构体的指针next,一个字符串name和一个字符串defn,分别表示哈希表中的键和值。需要注意的是,在实际应用中,我们需要考虑哈希表的负载因子、哈希冲突处理、扩容和缩容等问题,以确保哈希表的性能和可靠性。在main函数中,我们向哈希表中插入了三个键值对,然后分别查找了每个键对应的值,并输出了结果。

2023-04-14 14:57:36 204

原创 如何写代码才能够让CPU执行得更快?

优化锁:多线程程序中的锁是常见的同步机制,但是锁的使用会导致线程之间的竞争和等待,从而降低程序的性能。可以通过使用更细粒度的锁、避免锁的嵌套、减少锁的持有时间等方式来优化锁的使用。使用合适的数据结构和算法:选择合适的数据结构和算法可以减少计算时间和内存开销。可以通过使用哈希表、红黑树等高效的数据结构和快速排序、归并排序等高效的算法来优化内核代码。可以通过使用无条件跳转和避免复杂的条件语句等方式来避免分支预测错误。总之,优化内核代码需要结合具体的场景和需求,通过不断优化算法和编码方式来提高CPU的执行效率。

2023-04-14 13:58:52 307

原创 最简单的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 943

原创 Linux虚机磁盘扩展操作流程

一.找虚机管理员增加磁盘扩展容量二.磁盘分区查看已有分区sudo fdisk -l2.分区过程输入下面命令进入fdisk命令模式(这里要分区的硬盘为/dev/sda):sudo fdisk /dev/sda根据上图提示, 输入m可以显示帮助信息:根据上图提示, 输入n添加一个新分区在后面的分区类型选择中输入p(创建主分区), 其余的设置保持默认值即可.最后输入w保存分区...

2019-04-09 18:45:55 234

原创 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 957

原创 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 4773

原创 Android 系统使用uinput模拟鼠标输入设备的方法

接到组长给的新任务,项目需要实现一个通过摄像头获取图像数据,然后通过OpenCV进行手势识别,再将识别到的手势信息转换成鼠标事件信息回传给input子系统,进而实现通过手势模拟鼠标操作来对Android系统进行操作的功能。 这里先对事件注入部分做简要分析介绍。 系统端怎样模拟input event呢,此处我们通过uinput桥接;原理是利用内核现有的uinput驱动,通过内核驱动uinput来...

2018-08-16 19:49:16 3743 1

原创 Android 系统内置存储空间满导致系统崩溃的问题解决

测试反馈:设备内存满时,进入设置,点击连接管理,出现死机重启 打印log如下图: 本地验证时发现虽然把/data或/cache填满了,无法再写入数据,但是透过stat查看分区文件系统状态, free blocks并不等于0. 关于文件系统空间预留的说明 ext4模块本身会预留2%左右的分区存储空间做reserved空间,专门为ext4自己保留。 在super.c (/vendor...

2018-08-16 18:01:05 9799 12

原创 Android 系统使用蓝牙遥控器的确定键无法调起输入法问题解决方案

测试反馈Android蓝牙遥控器适配问题:瞩目应用中,点击加入会议,使用遥控器点击返回键收起输入法键盘,再点击会议名称栏无法调出输入法键盘。此问题在Android 6.0必现。经查看分析,应用使用了AutoCompleteTextView控件,此控件自动添加了onclicklistener监听事件。 AutoCompleteTextView继承了EditText,EditText的父类是Te...

2018-08-16 14:47:18 1836 1

原创 Android 系统横屏时按键导航栏遮挡输入法窗口问题解决方案

最近遇到Android 6.0系统横屏时出现按键导航栏遮挡输入法面板的问题,对比查看华为荣耀V9(Android 8.0)上也有同样的问题,如下图: 可见此问题是Android原生的Bug。其原因是由于导航栏在显示和隐藏的时候没有及时更新layout。 打印其堆栈信息如下: 修改PhoneWindow类的updateNavigationGuard方法,在updateNavigatio...

2018-08-16 11:06:16 2931 1

原创 简单总结Android系统开发中LOG的使用

在Android系统中,提供了简单、便利的LOG机制,开发人员可以方便地使用。下面简单介绍在Android内核空间和用户空间中LOG的使用和查看方法。一、内核开发时LOG的使用 printk提供了8种日志级别

2017-06-26 18:26:46 840

原创 Android 系统时间更新机制研究

最近因工作的需要,开始接触到Android系统时间网络同步更新的问题。遇到的实际问题如下:1、手机恢复出厂设置后,系统时间没有及时更新。2、手机使用当中时间同步更新后,时间快了几分钟。3、手机状态栏的时间的分钟显示没有及时更新。 鉴于各个项目问题的重复出现,有很多地方不是太明白,导致解决问题的效率比较低,正想研究一下,所以根据网上相

2016-09-10 10:30:45 4747 1

原创 嫌工资少,先来看看你值多少钱

嫌工资少,先来看看你值多少钱?我们都知道工作和工资挂钩,那么你一直认为工资少的时候,你有想过你自己值多少钱吗?以下是高工资的标准能力,看看你符合几条!否则,请别嫌弃工资少!一:忠诚单位可能开除有能力的员工,但对一个忠心耿耿的人,不会有领导愿意让他走,他会成为单位这个铁打营盘中最长久的战士,而且是最有发展前景的员工。1、 站在老板的立场上思考问题;2、 与上级分享你的想法;3、 ...

2016-08-17 10:40:51 963

原创 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 630

原创 创建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 652

原创 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 427

原创 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 743

MobaXterm_Installer_v20.1.zip

隆重推出一款集万千于一身的全能型终端神器——MobaXterm!这款神器是我师傅介绍给我的,在我第一次使用它的时候,就深深爱上它了,真的是相见恨晚,从此一发不不可收拾,自己电脑,公司电脑全部都安上了这款神器。 先说说这款神器的优点: 1. 功能十分强大,支持SSH,FTP,串口,VNC,X server等功能; 2. 支持标签,切换也十分方便; 3. 众多快捷键,操作方便; 4. 有丰富的插件,可以进一步增强功能;

2020-04-03

Android FFmpegHellWorld(最简单的使用FFMpeg库的工程实例)

Android FFmpegHellWorld(最简单的使用FFMpeg库的工程实例创建)

2018-09-27

NDK工具android-ndk-r10e-linux-x86_64

android-ndk-r10e-linux-x86_64 NDK资源包,亲测可用。解压后是bin文件,在Ubuntu下面直接执行安装即可。

2018-09-26

FFMpeg编译打包libffmeg.so

FFMpeg编译打包libffmeg.so源码,亲测编译通过,NDK另自行下载,根据自己的NDK路径来修改指导源码编译的shell脚本即可。

2018-09-26

C++和Java互相调用实例

C++和Java互相调用代码实例总结。项目工程实例使用AS创建,下载后可直接编译安装运行

2018-09-26

android平台的视频编辑SDK

在android平台的ffmpeg中采用硬件加速,更快的视频转码.裁剪,剪切,分离,合并,转换,拼接,水印,叠加,混合,转码,压缩, 变速,添加LOGO,添加滤镜,添加背景音乐,加速减速视频,倒放音视频, 多个视频合成等工作; 和普通的ffmpeg相比, 更快速。此SDK可以下载后,可直接试用。

2018-07-12

高仿微信小视频

微信小视频+秒拍,FFmpeg库封装 微信从6.0版本开始推出小视频功能,随着4G网络的出现,视频将会是一个趋势,他能表达出文字所不能表现的东西,增加了微信的黏性。 还记得微信小视频这个功能一推出,如同病毒一样席卷朋友圈。 2016年,4G时代到来,正式宣告进入视频元年,视频直播,短视频类的APP如火如荼, 如果你也正在寻找视频直播,短视频类APP的解决方案,可以下载来参考一下!

2018-07-12

Android视频播放器

视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS支持,支持弹幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频本身自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,直接添加控件为封面,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,其他一些小动画效果,rtsp、concat、mpeg。

2018-07-12

Fragment管理框架

A powerful library powered by aop to manage Fragments.一个基于AOP设计的Fragment管理框架

2018-07-12

WiFiRobot毕业设计

本设计是在无线局域网中实现视频传输和对小车的控制,可以在浏览器网页端打开小车视频查看附近的情况,并点击网页中的控制按钮控制小车的移动。

2015-11-29

wlan direct 文件快传

Android手机APP WiFi直连传输文件

2015-11-26

Android事件分发、拦截、响应Demo

布局多层嵌套后会导致事件冲突,可通过事件的分发、拦截、响应(消费)来解决此问题。

2015-07-11

雷凌无线网卡linux驱动 在s3c2440上已编译移植通过

开发板插上雷凌3070无线网卡,将此.ko文件放入linux driver文件夹。 # insmod rt3070.ko 将显示成功加载信息!

2012-03-23

boa web服务器 ARM9下 linux编译移植成功

嵌入式web服务器支持CGI编程 移植到ARM板上修改权限 chmod +x boa 再输入 # boa & 后台运行

2012-03-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除