- 博客(140)
- 资源 (12)
- 收藏
- 关注
原创 不一样的Android体系架构
本文讲述的Android系统体系架构,是指应用层之下的整个系统内部的架构层级关系。而并非常说的4层架构:应用层,framework,运行库与环境,Linux内核,而是把系统内部的流程调用划分更加详细。一、架构Android系统体系架构图: Android系统体系架构分为5层,自顶而下分别是:应用程序框架(Application Framewo...
2018-08-22 17:12:25 1285
原创 LCD屏参:手把手教你配置LCD屏参(proch值)
LCD屏参(proch值)解释和计算Linux内核的lcd控制器使用clcd_panel结构体表示一个LCD屏的硬件参数: /* include/linux/fb.h */ struct fb_videomode { const char *name; /* optional */ u32 refresh; /* optional */ u32 xres; ...
2018-05-16 19:06:04 28569
转载 安卓Handler机制:深入理解Looper,Handler,Message,Messge Queue内部原理
Handler的运行机制Handler的作用:当我们需要在子线程处理耗时的操作(例如访问网络,数据库的操作),而当耗时的操作完成后,需要更新UI,这就需要使用Handler来处理,因为子线程不能做更新UI的操作。Handler能帮我们很容易的把任务(在子线程处理)切换回它所在的线程。简单理解,Handler就是解决线程和线程之间的通信的。Handler的使用使用的handler的两...
2018-05-02 10:25:40 1598
原创 i2c总线(基本原理)
相关文章: 一 . i2c总线协议 二. 普通IO模拟i2c总线 三. 简单i2c设备驱动实例 i2c总线协议1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(...
2017-09-19 10:15:17 7074
原创 OTA升级实例
Platform: RK3399 OS: Android 7.1 一、全编make -j32./mkimage.sh ota二、生成原始的 OTA 完整包make otapackage会在 out/target/product/rk3399_firefly_box/下生成rk3399_firefly_box-ota-eng.root.zip所生成的这个...
2017-09-18 16:28:48 4155
原创 安卓强制横屏或竖屏实例
一. OS:安卓5.1修改文件:frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java 在函数updateOrientationFromAppTokensLocked,强制为竖屏添加:req = ActivityInfo.SCREEN_ORIENTATION_PORTR...
2017-09-14 16:23:08 2668
原创 安卓去除虚拟按键(home键,返回键,列表键)
系统5.1相关文章:安卓添加虚拟按键1.修改以下两个文件中home和recent_app的visibility属性为gone(属性为隐藏)frameworks/base/packages/SystemUI/res/layout-sw600dp/navigation_bar.xmlframeworks/base/packages/SystemUI/res/layout/nav...
2017-08-10 15:48:46 17855
原创 利用libusb接收数据存在丢帧问题
利用lisusb开源库实现读取hid数据,并用libusb多缓存的方式解决了hid协议传输高频数据(例如 imu数据)时,会发生丢帧的问题。在实际项目中很常见。希望能帮到遇到相同问题的同学。
2024-03-11 20:30:50 617
原创 从cameraprovider直接获取camera数据
像XR/VR/AR设备系统,slam算法都是运行在native层,slam主要的数据是camera跟imu,为了提高数据效率,camera部分可以直接从cameraprovider获取。
2023-07-01 10:15:27 328
原创 1.Android Native Sensor(C++)实例
安卓Sensor数据的获取除了java上层开发外,还有native本地开发。比如基于Sensor数据的算法,为了保证效率,肯定是在native层运行。本文主要基于Android Native 获取不同的Sensor(陀螺仪/加速度/重力/角速度/磁力)数据及工程示例代码。
2022-12-26 18:47:43 1537 1
原创 安卓RecyclerView+CardView使用总结
转载于:https://blog.csdn.net/iwanttohitren/article/details/60963706前言: 使用RecyclerView和CardView已经好久了,写一个小程序来回顾和梳理一下知识点。RecyclerView和CardView的介绍和优势,我这里就不再赘述了,网上有很多好的文章,例如:我刚开始学习的时候,是看着鸿洋大神写的Android Recycle...
2021-12-20 14:52:43 2228
原创 c++基础(6) - string
简介:string 是 C++ 中常用的一个类,它非常重要,我们有必要在此单独讲解一下。使用 string 类需要包含头文件<string>,下面的例子介绍了几种定义 string 变量(对象)的方法:#include<iostream>#include<string>using namespace std;int main(){ string s1; string s2 ="c plus plus";...
2021-11-15 21:53:29 1188 1
转载 C++基础(5) - 内存管理
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能。本期专题将从内存管理、内存泄漏、内存回收这三个方面来探讨C++内存管理问题。...
2021-11-11 23:48:43 428
转载 C++基础(4) - 数组
1. Cpp中的数组C++支持数组数据结构,它可以存储一个固定大小的相同类型的元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个单独的变量,如a0,a1,a2,a3,a4...,a99,而是声明一个数组变量,比如as,然后使用as[0],as[1],as[2],...,as[99]来代表一个个单独的变量,数组的特定元素可以通过索引来访问。所数组都是由连续的内存位置组成,最低的地址对应第一个元素,最高的地址对应最后一...
2021-11-09 22:17:31 605
原创 Linux signal、sigaction的使用总结
一、什么是信号信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。比如kill、程序异常crash、段错误等。但它们还可以作为进程间通信或修改行为的一种方式,明确地由一个进程发送给另一个进程。一个信号的产生叫生成,接收到一个信号叫捕获。二、信号的种类信号的名称是在头文件signal.h中定义的,信号都以SIG开头,常用的信号并不多,常用的信号如下:更多的信号类型可在kernel目录下搜...
2021-11-04 22:38:26 1325
原创 Android studio:编译遇到的问题及常用技巧
1. 编写本地代码(C/C++)自动补全: 实际要做的就是将Gradle链接到外部CMake(CMakeLists.txt)或ndk-build(Android.mk)项目从IDE左侧打开“项目”窗格,然后选择Android视图。 右键单击要链接到本机库的模块,例如应用程序模块,然后从菜单中选择“Link c++ Project with Gradle”。您应该看到一个类似于图4所示的对话框。 从下拉菜单中,选择CMake或ndk-build。 如果选择CMake,请使用...
2020-11-06 11:35:08 571
原创 android NDK(四) :JNI本地数组及对象的处理实例
1. C++返回数组类型://返回float[],其他基本数据类型数组类似JNIEXPORT jfloatArray JNICALL Java_com_miles_Test_RetFloatArray(JNIEnv *env, jclass) { jfloatArray positionArray = env->NewFloatArray(2); if (positionArray == NULL){ return NULL; } jfloat tempArray[2
2020-11-04 19:18:33 595
原创 android NDK(三) :C/C++代码调用java实例
1. java代码:package com.miles;import android.content.Context;import android.provider.Settings;import android.util.Log;public class Test { static { System.loadLibrary("native-lib"); } public static String getString() { ...
2020-11-04 09:33:15 481
原创 android NDK(二) :JNI的数据类型和类型签名
基本类型JNI类型 Java类型 描述 jbyte byte 有符号,8位,整型 jshort short 有符号,16位,整型 jint int 有符号,32位,整型 jlong long 有符号,64位,整型 jfloat float 32位,浮点型 jdouble double 64位,浮点型 jboolean boolean 无符号,8位,整型 jchar ...
2020-11-03 22:31:25 664
原创 项目Git tag格式规范
Git tag format:<ProjectName>_<Version>_<comments(optional)>Where:ProjectName- 采用UpperCamelStyle风格。第一个字母大写。Version- version in a format v{major}.{minor}.{build}{patch} ; major is number, minor is number, build is number, patch i...
2020-09-23 17:24:48 2345
原创 软件版本发布说明
RequirementsTitle of "Release Notes". Date with format of:Date:Month ##[st|nd|rd|th], 20## Version with format of:Version:Hello SDK#.# Bulletted/Numbered Lists Each list of items in the Release notes uses a bulletted/numbered list. Bulletted li...
2020-09-23 17:18:51 730
原创 C++代码风格规范
Introduction介绍以下是此代码惯例的重点:C++ Coding Style Guide Highlights但我们强烈建议大家阅读完整文档因为包含了很多有用的信息和例子。头文件通常,每个.c / .cpp文件都应该有一个关联的 .h文件。 有一些常见的例外,例如单元测试(unit tests)和只包含main()函数的小型 .c / .cpp文件。正确使用 header files 会对代码的可读性,大小和性能有所提升。以下规则将会指示使用 header files 的
2020-09-23 10:52:20 785
转载 Android大厂面试题锦集(BAT TMD JD 小米)
上次写这篇文章的时候也差不多是一年前了,这一年我兜兜转转从android到java又回到android,校招面了很多大厂,阿里、京东、小米、头条、知乎、腾讯、有赞,也收获了几个offer。这是集合了牛客网、百度、简书等网站的几十篇面经和我自己面试的经历的合集,希望大家喜欢。1.android事件分发机制,请详细说下整个流程事件分发(面试).png2.android view绘制机制和加载过程,请详细说下整个流程1.ViewRootImpl会调用performTraversals(),.
2020-08-24 16:02:02 1937
转载 Android中三种锁的基本实现
一、synchronized基本概念:对象锁synchronized(object){….}用法在以上的代码块中只能由一个线程执行!!!wait()、notify()是用在这个代码块当中的。wait()可以使当前线程A马上失去对象锁并且沉睡,直到对象调用notify()唤醒该线程。此时持有对象锁的线程B会先行执行完毕,然后再将对象锁交给线程A继续执行。public class Person {private String name;private int age;public Pers
2020-06-22 21:53:38 2696
转载 C++11多线程mutex
mutex又称互斥量,用于提供对共享变量的互斥访问。C++11中mutex相关的类都在<mutex>头文件中。共四种互斥类:序号 名称 用途 1 std::mutex 最基本也是最常用的互斥类 2 std::recursive_mutex 同一线程内可递归(重入)的互斥类 3 std::timed_mutex 除具备mutex功能外,还提供了带时限请求锁定的能力 4 std::recursive_timed_mutex
2020-06-16 19:24:10 834
转载 C++ pthread 多线程
本节将详细介绍std::thread的用法。std::thread在<thread>头文件中声明,因此使用std::thread需包含<thread>头文件。<thread>头文件摘要<thread>头文件声明了 std::thread 线程类及std::swap(交换两个线程对象)辅助函数。另外命名空间std::this_thread也声明在<thread>头文件中。下面是 C++11 标...
2020-06-16 19:00:52 1741
原创 Android Bitmap,Image,Mat之间的相互转换
本文记录的主要是安卓java层获取到图片Image或者Bitmap,传到本地处理, 然后再把本地的图片传回java层显示一 . JAVA层的Image图片传到本地处理,然后再传回java层显示://Image转成YUV Byte[]ImageReader readerImage image = reader.acquireLates...
2020-01-06 17:40:24 7434
转载 C++基础(3) - Singleton单例模式
C++ 单例模式总结与剖析 单例可能是最常用的简单的一种设计模式,实现方法多样,根据不同的需求有不同的写法; 同时单例也有其局限性,因此有很多人是反对使用单例的。本文对C++ 单例的常见写法进行了一个总结, 包括懒汉式、线程安全、单例模板等; 按照从简单到复杂,最终回归简单的的方式循序渐进地介绍,并且对各种实现方法的局限进行了简单的阐述,大量用到了C++ 11的特性如智能指针...
2019-11-16 15:09:00 1385
转载 C++: 隐式类型转换和显式类型转换
第1部分.隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。intival=3;doubledval=3.14159;ival+dval;//ival被提升为double类型2)一种类型表达式赋值给另一种类型的对象:目标类型是...
2019-11-06 12:52:46 4638
转载 C++: Virtual关键字的几种用法
virtual在英文中表示“虚”、“虚拟”的含义。c++中的关键字“virtual”主要用在两个方面:虚函数与虚基类。下面将分别从这两个方面对virtual进行介绍。1.虚函数虚函数源于c++中的类继承,是多态的一种。在c++中,一个基类的指针或者引用可以指向或者引用派生类的对象。同时,派生类可以重写基类中的成员函数。这里“重写”的要求是函数的特征标(包括参数的数目、类型和顺序)...
2019-11-06 09:52:10 2971
转载 C++: vector的使用总结及常用操作
一、C++ vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分使用时需包含头文件:#include <vector>二、C++ vector类有两种使用方式:第一种:STL方式vector< string > text;1. 我们向 vector 中插入元素,而不再是索引元素,以及...
2019-11-05 10:21:31 412
原创 JKalman滤波的使用(java实现的卡尔曼滤波)
JKalman是一个开源项目,利用java实现的卡尔曼滤波,本文主要记录在项目中的使用记录。 1. 官网的源码下载:https://sourceforge.net/projects/jkalman/ 保存到百度网盘的源码及卡尔曼介绍文档下载:https://pan.baidu.com/s/10NLw-4pcTQsxjCB8...
2019-10-29 16:45:56 7018
原创 Ubuntu16.04安装Caffe(CPU_ONLY)
本文记录的是自己在Ubuntu16.04上配置caffe环境跟编译的全部过程。1、安装依赖库 sudo apt-get install libprotobuf-dev sudo apt-get install libleveldb-dev sudo apt-get install libsnappy-dev sudo apt...
2019-09-16 14:53:04 357
原创 Camera结构原理
一.Camera的成像原理 景物通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为模拟的电信号,经过 A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过 IO 接口传输到 CPU 中处理,通过 LCD 就可以看到图像了第一层“LENS” CAMERA的成像关键在于SENSOR,为...
2019-08-27 18:24:05 2629
原创 c语言 - 常用函数
stdlib.hint atoi(const char *str):转换为intlong int atol(const char *str):转换为long intdouble atof(const char *str):转换为doublevoid abort(void):终止一个程序int atexit(void (*func)(void)):当程序正常终止时,调用函数fun...
2019-08-08 17:14:06 353
原创 Linux下动态库的编译及使用示例
1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、 test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。//so_test.h:#include "stdio.h"void test_a();void test_b();void test_c();...
2019-08-07 16:50:21 1655
转载 C++基础(2) - 静态库与动态库
这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上...
2019-06-27 20:15:43 1131
转载 android NDK(一): 集成本地代码(c/c++)到安卓工程并调用
一. 定义:1.什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译...
2019-06-27 09:11:22 2811
大话成像数字成像系统 图像调试 视频
2024-08-17
lisusb解决hid usb设备上报丢帧问题
2024-03-11
高通sxr-sdk 4.0.6
2023-06-25
Android Native Sensor实例(C++)
2022-12-28
程序员面试指南,企业常考面试题
2022-12-27
-Android三维程序设计-基于OpenGL ES的图形应用程序设计
2022-12-27
中断原理及实施(s5pc100)
2022-12-27
android事件分发机制测试demo
2018-07-27
安卓以太网,pppoe拨号上网,部分应用网路异常,网络定位不能使用
2017-12-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人