<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Lingbulei的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Lingbulei</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Lingbulei]]></copyright><item><title><![CDATA[深入理解Android相机体系结构之八—KMD]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/147503830</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/147503830</guid><author>Lingbulei</author><pubDate>Fri, 25 Apr 2025 15:14:50 +0800</pubDate><description><![CDATA[但是随着时代的发展，相机硬件模块越发复杂，所以用于直接控制硬件的驱动层也需要承担更为复杂的控制任务，通过上面的分析，我们可以看到，高通重新设计了一套优秀的KMD框架，在其中加入了更多复杂的控制逻辑，以达到精细化控制底层硬件模块的目的，其中比较重要的是CRM对于子设备的横向控制，这样的好处很明显，降低了UMD控制驱动的难度，UMD只需要将请求通过V4L2框架中的设备节点下发至KMD中，之后便由KMD中的CRM来统一管理，适时地将请求下发给各个子设备，进而控制着底层硬件模块。发生在哪一个阶段呢？]]></description><category></category></item><item><title><![CDATA[深入理解Android相机体系结构之七—驱动]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/147494924</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/147494924</guid><author>Lingbulei</author><pubDate>Fri, 25 Apr 2025 01:03:15 +0800</pubDate><description><![CDATA[相机驱动层位于HAL Module与硬件层之间，借助linux内核驱动框架，以文件节点的方式暴露接口给用户空间，让HAL Module通过标准的文件访问接口，从而能够将请求顺利地下发到内核中，而在内核中，为了更好的支持视频流的操作，早先提出了v4l(video for linux)视频处理框架，但是由于操作复杂，并且代码无法进行较好的重构，难以维护等原因，之后便衍生出了v4l2框架。按照v4l2标准，它将一个数据流设备抽象成一个videoX节点，从属的子设备都对应着各自的v4l2_subdev实现，并且通过]]></description><category></category></item><item><title><![CDATA[深入理解Android相机体系结构之六—CamX-CHI]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/147460712</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/147460712</guid><author>Lingbulei</author><pubDate>Thu, 24 Apr 2025 02:29:38 +0800</pubDate><description><![CDATA[但是人无完人，框架也是一样，该框架异步化处理太多，加大了定位问题以及解决问题的难度，给开发者带来了不小的压力。注：Camera3Device 其实重定义了camera3_device_t，其中HwDevice对应于camera3_device_t中的hw_device_t，Camera3DeviceOps对应于camera3_device_ops_t，而在HALDevice的初始化过程中，会将CamX实现的HAL3接口的结构体g_camera3DeviceOps赋值给Camera3DeviceOps中。]]></description><category></category></item><item><title><![CDATA[深入理解Android相机体系结构之五—HAL]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/147399624</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/147399624</guid><author>Lingbulei</author><pubDate>Wed, 23 Apr 2025 18:06:45 +0800</pubDate><description><![CDATA[/此结构体中有open方法//此结构体中有close方法//拓展接口，**Camera HAL3定义的标准接口**void *priv;由定义不难发现，camera_module_t包含了hw_module_t，主要用于表示Camera模块，其中定义了诸如get_number_of_cameras以及set_callbacks等扩展方法；而。]]></description><category></category></item><item><title><![CDATA[相机问题网友总结1]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/147398793</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/147398793</guid><author>Lingbulei</author><pubDate>Mon, 21 Apr 2025 18:00:35 +0800</pubDate><description><![CDATA[在相机进行专业拍照的时候，状态机进行了改变，走的是非zsl模式，点击拍照会停止预览，然后进行非zsl拍照，可是在停止预览操作到彻底关闭通道和流数据之前查看log发现还会有帧数据进行了上传，这时候状态机是为4的状态下，callback函数那边的playshutter会进行判断，这时候状态机已经为非zsl模式，又有了帧数据，就会进行playshutter。最后，发现原先为了节省硬件成本，将sensor的两个电压相同的模拟电和数字电由同一芯片输出供给，导致两者之间互相干扰，影响了sensor的正常工作。]]></description><category></category></item><item><title><![CDATA[Android 把自己的 app当做手机launcher App]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/82910092</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/82910092</guid><author>Lingbulei</author><pubDate>Sun, 30 Sep 2018 16:06:52 +0800</pubDate><description><![CDATA[要实现一个开发板只运行一个app，开机运行，并且好像整个app就像是系统一样的效果：

第一种实现方法：通过监听开机广播 实现开机启动APP（这种方法经测试后，首先会进入系统launcher页面后大概10秒后启动自己的app，不是我要的效果）

1.1 写一个广播接收器，用来接收手机开机广播


public class BootBroadcastReceiver extends Broadcas...]]></description><category></category></item><item><title><![CDATA[Android Studio 之  gradle下载很慢、版本问题]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/82850448</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/82850448</guid><author>Lingbulei</author><pubDate>Wed, 26 Sep 2018 11:47:04 +0800</pubDate><description><![CDATA[如果可以，系统提示说建议升级gradle版本时，建议取消不要更新，因为一旦更新，问题很多；

首先第一个问题：下载慢，而且一旦开始停不了，哪怕关闭AS再重启电脑都是联网再下载：

第一种方法：

在所在项目文件夹下：项目根目录/gradle/wrapper/gradle-wrapper.properties文件里面修改distributionUrl=https://services.gradle....]]></description><category></category></item><item><title><![CDATA[【转】Android之自定义设备管理]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81668529</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81668529</guid><author>Lingbulei</author><pubDate>Tue, 14 Aug 2018 15:58:56 +0800</pubDate><description><![CDATA[需求：控制手机的摄像头和录音全部禁用~

    这篇文章使用android提供的设备管理器类DeviceAdminReceiver ,来实现禁用手机摄像头的功能,还能够改变密码,锁屏,重启等功能,具体功能请去查API,如果我没记错的话有5千多行... ... 但是这篇文章主要就介绍常用的几个功能需求 = = 下面看代码：



1.首先你需要先创建xml文件如上图所示。

2.在device_a...]]></description><category></category></item><item><title><![CDATA[Android之JNI① AS3.0以下DNK下载配置和第一个JNI程序]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81628056</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81628056</guid><author>Lingbulei</author><pubDate>Mon, 13 Aug 2018 13:43:51 +0800</pubDate><description><![CDATA[一、JNI介绍

JNI(Java Native Interface)：一个协议，这个协议用来沟通java代码和外部的本地代码(c/c++)， 外部的c/c++代码也可以调用java代码。

1.1 C语言的优势：

①效率上 C/C++是本地语言，比java更高效；

②代码移植，如果之前用C语言开发过模块，可以复用已经存在的c代码；

③java反编译比C语言容易，一般加密算法都是用C语言编写...]]></description><category></category></item><item><title><![CDATA[Android 蓝牙BLE功能的开发]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81566916</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81566916</guid><author>Lingbulei</author><pubDate>Mon, 13 Aug 2018 11:15:02 +0800</pubDate><description><![CDATA[写在前面的注意：

蓝牙4.0要求版本是在4.3（18）以上，所以需要注意一下sdk版本。
	查看蓝牙地址（看型号）：设置--&amp;gt;通用--&amp;gt;关于手机--&amp;gt;状态信息--&amp;gt;蓝牙地址
Android BLE 蓝牙4.0开始的低功耗技术。在BLE协议中，有2个角色：周边（periphery）和中央（Central），中央设备扫描，寻找广播；外围设备发出广播。

工作流程：Scan--...]]></description><category></category></item><item><title><![CDATA[Android系统权限和root权限的获取以及应用权限列表]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81534143</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81534143</guid><author>Lingbulei</author><pubDate>Thu, 09 Aug 2018 14:43:52 +0800</pubDate><description><![CDATA[Android权限说明

Android系统是运行在Linux内核上的，Android与Linux分别有自己的一套严格的安全及权限机制。

一、linux文件系统上的权限

-rwxr-x--x system   system       4156     2012-06-30 16:12        test.apk.
“-rwxr-x--x”代表的是相应的用户/用户组及其他人对此文件的访问权...]]></description><category></category></item><item><title><![CDATA[Android 系统权限之SuperSU 模拟器root]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81533816</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81533816</guid><author>Lingbulei</author><pubDate>Thu, 09 Aug 2018 11:48:07 +0800</pubDate><description><![CDATA[android 开发过程中程序很多时候免不了需要对系统目录下的内容进行操作，虽然android的内核是linux系统，但是在linux中切换到root下的方式是sudo root，但是在的android中并没有提供我们su文件。
So我们要向需要root的系统中添加su文件，同时改变su二进制文件的权限。

原材料

android 模拟器
	supersu.apk
	supersu.zip
步骤...]]></description><category></category></item><item><title><![CDATA[【转】Android开发中，手把手教你root Android系统]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81532187</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81532187</guid><author>Lingbulei</author><pubDate>Thu, 09 Aug 2018 11:22:05 +0800</pubDate><description><![CDATA[因为从事的是智能家居相关行业，用的系统也是android系统，在某些场景下可能需要拿到系统的root权限。下面就手把手教大家去拿到app的root权限和adb的root权限，比如一般手机在出厂的时候，开关机动画都是固定的，但是如果有一个需求就是需要你动态的去切换开关机的动画的时候，可能就需要你拿到root权限，然后对system/media（手机目录，开关机动画不一定全部在这里）的开关机动画进行操...]]></description><category></category></item><item><title><![CDATA[Android 工具之系统五层框架体系结构详解]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81506537</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81506537</guid><author>Lingbulei</author><pubDate>Wed, 08 Aug 2018 13:21:25 +0800</pubDate><description><![CDATA[这篇是五层架构，比上篇《Android 工具之系统四层体系结构详解》四层架构多出HAL层；

从下图中可以很清楚得看出，整个架构可以分为五大层次：

System Apps：即系统应用层，这一层中都是我们使用手机时都会直接接触到的各种应用。
	Java API Framework：即 Java 接口框架层，这一层是为了上层应用提供各种接口。
	Native C/C++ Libraries &amp;amp...]]></description><category></category></item><item><title><![CDATA[Android 工具之系统四层体系结构详解]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81505708</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81505708</guid><author>Lingbulei</author><pubDate>Wed, 08 Aug 2018 13:12:19 +0800</pubDate><description><![CDATA[这是常见安卓系统体系结构图，还有一种是在C库与底层中间加了一个HAL层，《Android 工具之系统五层框架体系结构详解》。这篇主要说这种四层结构体系：


很明显四层：接下来一一讲解：

Java应用程序层：

Android会同一系列核心应用程序包一起发布，该应用程序包包括客户端，SMS短消息程序，日历，地图，浏览器，联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。

这些应用程序...]]></description><category></category></item><item><title><![CDATA[常见14种手机传感器]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81505347</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81505347</guid><author>Lingbulei</author><pubDate>Wed, 08 Aug 2018 11:35:06 +0800</pubDate><description><![CDATA[手机传感器原理   https://jingyan.baidu.com/article/c35dbcb0fffe568916fcbc0c.html

传感器Sensor就是手机里那些可以被测量并且能按照一定的规律转换成可用输出信号的器件或装置。一般这类传感器都是由敏感元件以及转换元件组成。

手机上的那些能够通过芯片来感应的元器件，如反应距离值、光线值、温度值、亮度值和压力值等。

在手机上增加传...]]></description><category></category></item><item><title><![CDATA[Android 工具之mkDir/mkDirs区别和Environment下的文件路径]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81504677</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81504677</guid><author>Lingbulei</author><pubDate>Wed, 08 Aug 2018 11:09:22 +0800</pubDate><description><![CDATA[1.java mkdir()和mkdirs()区别

mkdirs()可以建立多级文件夹， mkdir()只会建立一级的文件夹， 如下：

new File(&quot;/tmp/one/two/three&quot;).mkdirs();

执行后， 会建立tmp/one/two/three四级目录

new File(&quot;/tmp/one/two/three&quot;).mkdir();

则不会建立任何目录， 因为找不到...]]></description><category></category></item><item><title><![CDATA[Android 报错之 adb 不能打开]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81503582</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81503582</guid><author>Lingbulei</author><pubDate>Wed, 08 Aug 2018 10:30:19 +0800</pubDate><description><![CDATA[1、任务管理器 kill掉adb 或者重启adb server

2、查看任务管理器没有adb，猜测是某个程序占用了adb端口

5037为adb默认端口 查看该端口情况如下：

查看：cmd —— netstat -aon|findstr &quot;5037&quot;

 TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       5...]]></description><category></category></item><item><title><![CDATA[Ubuntu 12.04 使用root用户登录桌面]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81357372</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81357372</guid><author>Lingbulei</author><pubDate>Thu, 02 Aug 2018 14:29:01 +0800</pubDate><description><![CDATA[首先是在按照上篇的进入单用户模式在那里输入的下面命令，但提示打不开视图，但总算可以sudo之后不再提示没有权限了，再次进入终端，输入：sudo gedit /etc/lightdm/lightdm.conf

在图形编辑界面最后添加 allow-guest=false , 保存之后sudo apt-get remove gdm-guest-session或者sudo restart lightdm...]]></description><category></category></item><item><title><![CDATA[Ubuntu12.04进入单用户模式重置密码（忘记密码）]]></title><link>https://blog.youkuaiyun.com/Lingbulei/article/details/81353241</link><guid>https://blog.youkuaiyun.com/Lingbulei/article/details/81353241</guid><author>Lingbulei</author><pubDate>Thu, 02 Aug 2018 10:29:44 +0800</pubDate><description><![CDATA[首先，如果我们可以在终端输入命令“sudo passwd”，然后输入当前用户的密码后”Enter”。
终端会提示我们输入新的密码并确认，此时的密码就是root新密码。
修改成功后，输入命令 su root，再输入新的密码就ok了。

如果不记得root密码，而且被提示没有权限的时候，要进入单用户模式了，首先选择重启，长按Shift（有时候长按shift或Esc没有效果的话，鼠标试下多次单击vm中的...]]></description><category></category></item></channel></rss>