自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (1)
  • 收藏
  • 关注

原创 QT Widget: QT常见组件的属性

上述代码设置按键背景图片,按键文字颜色,按键文字在按键顶部且距离上边缘10个像素。(4) 去掉选中状态下按键周边虚框。二、水平布局QHBoxLayout。(2) 设置布局中控件之间的距离。(4)设置组件在布局中的位置。三、QProgressBar。一、QPushButton。(2)设置按钮不同状态样式。(6)设置组件距离右侧距离。四、QListWidget。(3)设置布局外边距。

2024-03-06 08:28:49 440

原创 QT Widget: 自定义Widget组件及创建和使用动静态库

因为程序在板子里面运行需要把libmySharedLib.so.1.0.0文件push到板子/usr/lib路径下。(4 )添加类名称,我的为QmyBattery选择类型。3、添加代码,完成qmybattery.cpp,qmybattery.h文件。2、把so文件及.h文件拷贝到工程下。(3)创建工程名称mySharedLib,选择工程路径。只选择qmybattery.h文件。静态库的生成和使用 比较简单。1、新建一个工程useShare。5、加载QmyBatter组件。3、构建生成so文件。

2024-02-29 17:03:19 965

原创 QT quick基础:组件Canvas

通过路径还可以绘制二次方贝塞尔曲线quadraticCurveTo,三次方贝塞尔曲线bezierCurveTo、弧线(arc、arcTo)、椭圆ellipse、文字text等。2、上述代码中画图的顺序(ctx.fill();这两句的顺序)不同,出来的效果不同。1、上述代码中获取画布类型可以使用Canvas的contextType属性。以下面的代码段为例,记录画图方法。参考《QT quick 核心编程》绘制图片、变换、裁剪、图像合成。

2024-01-22 15:53:25 442

原创 QT quick基础:组件gridview

我自己的需求,点击gridview的item,修改对应item的图片,并且改变该item的字体颜色。上述代码中,Image没有点击信号,gridview也没有点击事件,所以想到自定义一个可点击的图片按钮,相当于android 中ImageButton组件,替换上述代码中Image组件。注意:代码中,index及currentIndex变量是GridView组件自带的属性。组件gridview与android中gridview布局效果相同。模拟物理按键,右键,点击该按键,图标向右移动。

2024-01-16 08:39:36 602

原创 QT quick基础:加载资源文件(字体)

2、在工程下面新建文件夹fonts,并将字体库放到该文件夹下面。添加现有文件选择Roboto-Regular.ttf。3、在QT Create 工程中添加字体。5、在.qml文件加载字体。

2024-01-15 10:30:43 687

原创 QT quick基础:qml界面切换

再测试过程中发现,程序开始运行时,所有界面的功能逻辑都在运行,这可能导致程序开始运行时浪费性能。因此,学习找到一种方式,当前显示的界面相关功能运行,否则停止运行。因此,写这篇文章记录一下。实例中,写了两个界面,登录界面和主界面。程序运行默认显示登录界面,点击“登录页面-登录按钮”按钮,界面切换到主界面。通过运行效果可以看出,在登录界面和主界面,两个界面的功能逻辑都在运行。既程序运行后,两个界面同时加载,只是通过,界面显示和隐藏逻辑,确定哪个界面输出。打开主界面后及返回登录界面,两个界面都在运行。

2024-01-05 13:51:29 982

原创 AS中部署NCNN

生成ONNX模型,但是该模型不能直接用在android平台,只能将该模型先转化为NCNN或TNN或MNN,再部署到AS中,运行在android系统。本文记录AS部署NCNN的方法。因为AS版本不同,直接在AS中添加工程会有很多问题,所以我习惯新建工程,然后将demo中的代码复制到工程对应的文件中。1、opencv及ncnn部署都一样,只是添加该demo文件修改CMakeList.txt文件即可。注意,assets文件夹下面的yolov5s.bin yolov5s.param,是ncnn文件。

2023-09-22 08:47:59 449 2

原创 摄像头:输出图像YUV格式理论知识

RowStride = 1280.(每行的像素个数是原图像分辨率的一半,通过图中可以看出每行两个y公用一个u,所以u分量上的像素个数是原分辨率的一半)。通过下图可以看出,u平面的像素个数是原像素个数的1/4,可以计算出u平面分量的行数为:1280 * 720 / 4 / 640 = 360。通过下图可以看出,u平面的像素个数是原像素个数的1/4,可以计算出u平面分量的行数为:1280 * 720 / 4 / 640 = 360。该模式的存储方式为:先保存所有Y分量,然后保存所有U分量,最后保存所有V分量。

2023-09-15 16:04:39 448

原创 ffmpeg的使用

3、自动生成其它目录 : 指定了 --prefix 选项 , 那么其它生成 bin 可执行文件目录 , lib 函数库目录 等类型的文件输出目录会在 --prefix 配置的目录基础上生成。2) 路径配置 : 使用 ./configure --prefix=PREFIX 命令 , 指定输出文件的根目录为 ./android/arme64-v8a;把报错及解决方法记录一下。3) 函数库目录 : 自动生成的函数库数据目录为 PREFIX/lib , 即 ./android/arme64-v8a/lib;

2023-09-05 16:26:16 742

原创 opencv的使用(Ubuntu linux环境,AS jni,AS java)

查看/usr/local/lib/lib文件下没有libopencv_shape.so等这三个库,再次打开/usr/local/lib/pkgconfig/opencv.pc文件,将-lopencv_shape 等三个路径删除掉。注意:1、该opencv源码编译的对应so库文件只是linux系统平台文件(我的是x86_64),如果想将该库编译为其他平台,例如arm64需要交叉编译。然后在opencv.pc中添加以下信息,注意这些信息需要与自己安装opencv时的库路径对应:(一下是我自己的内容)

2023-08-29 14:38:07 1232

原创 Linux:编写编译脚本Makefile文件

以.cpp为后缀的文件,为c++代码。既:cpp文件可以使用c语言,c++语言编写。b 代码使用c++语言,编译时,不能使用gcc,也不能使用g++.a 代码使用c++语言,编译时必须要用g++,不能使用gcc。b 代码使用c语言,编译时可以使用gcc ,也可以使用g++。本例子主要区别.c及.cpp文件及编译该文件时使用的编译链。a 代码使用c语言,编译时可以使用g++,也可以使用gcc.以.c为后缀的文件,为c代码,代码最好使用c语言。编译指令:make。注意:在./testadd 之前,需要添加。

2023-08-23 15:53:50 978

原创 ndk开发-交叉编译

添加到FLAG:export FLAG_NDK_17=“–sysroot=/home/lily/ffmpeg/ndk/android-ndk-r17c/platforms/android-28/arch-arm64 -isystem /home/lily/ffmpeg/ndk/android-ndk-r17c/sysroot/usr/include -isystem ${ASM_NDK_17}”使用unzip android-ndk-r17c-linux-x86_64.zip 对压缩文件解压。

2023-08-17 16:44:38 834

原创 方法集汇总

@return Bitmap 只返回倒影的Bitmap。* @return Bitmap 带倒影的Bitmap。* @param imgId 图片资源id。* @param imgId 图片资源id。* @param path 音频路径。// 反射图片和原始图片中间的间距。* 获取音频缩略图Bitmap。2、获取音乐的专辑图片。

2023-06-28 10:31:32 134

原创 将应用加入白名单

修改文件:/home/ss/X9-work/buildsystem/android/frameworks/base/data/etc/privapp-permissions-platform.xml。项目中需要把一个自己写的应用加入到android系统的/system/priv-app目录下面,在该应用的AndroidManifest.xml中添加权限。经过查找,参考链接https://blog.csdn.net/HongEnIT/article/details/124888610。

2023-05-26 10:31:46 239

原创 发送未受保护广播

在做项目过程中,在应用发送自定义广播,看到日志报错“Sending non-protected broadcast xxxxxxx from system xxxxxxxxxx”,但是不会影响广播的发送和接收,查看资料为了广播安全,提醒 系统应用开发者去将 broadcast添加为protected-broadcast,因为非 protected-broadcast 广播是可以被三方应用发送的。而定义为 proected-broadcast 就能防止恶意的三方应用模仿系统应用去发出该广播。

2023-05-25 14:31:38 1588

原创 kotlin:文件I/O操作,正则表达式与多线程(九)

synchronized不是kotlin中的关键字,它替换为@synchronized注解。在这里看不到Runnable,在Kotlin中可以直接使用上面的Lambda表达式来表示。1)使用对象表达式创建(相当于java中集成Thread类)3)使用kotlin封装的Thread()函数。参考《Kotlin从入门到进阶实战》114页。参考《Kotlin从入门到进阶实战》118页。参考《Kotlin从入门到进阶实战》119页。参考《Kotlin从入门到进阶实战》120页。2) 使用lambda表达式创建。

2023-02-03 15:58:13 413

原创 kotlin: 泛型(八)

gt(x : T,y : T)函数的签名中有个T : Comparable,这里的T : Comparable,表示Comparable是类型T的上界,也就是告诉编译器,类型参数T代表的都是实现了Comparable接口的类,这样等于告诉编译器他们都实现了Comparable方法。参数化类型,顾名思义就是将类型由原来的具体类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式,我们称之为类型参数,然后在使用时传入具体的类型(类型实参)。2)当C=>F时,如果有f(F)=>f©,那么f叫做逆变。

2023-02-02 15:01:15 224

原创 Kotlin: 结合类(七)

Map映射容器中存储的每个对象都有一个相关的关键字(key)对象,关键字决定对象在映射中的存储位置。其实关键字本身并不能决定对象的存储位置,它通过散列(hashing)产生一个被称作散列码(hash code)的整数值,这个散列码对应值(Value)的存储位置。Kotlin中分别使用listOf() setOf() mapOf() 函数创建不可变的List列表容器、Set集容器、Map映射容器。集合类主要有3种:List(列表),Set(集),Map(映射)参考《Kotlin从入门到进阶实战》100页。

2023-02-02 10:48:55 266

原创 Kotlin:扩展函数与属性(六)

在前面的List扩展函数myfilter()的实现中,用到了一个this关键字。这里的this指的是接受者对象(receiver object),也就是调用扩展函数时,在点号“.”之前指定的对象实例。2) 在扩展函数中,或带接收者的函数字面值(function literal)中,this代表调用函数时,在点号左侧传递的接收者参数;除了扩展一个类的函数,还可以扩展类属性。3) 如果this 没有限定符,那么它指向包含当前代码的最内层范围,如果想要指向其他范围内的this,需要使用标签限定符。

2023-02-02 10:00:06 299

原创 Kotlin:类型系统与可空类型(三)

Kotlin:类型系统与可空类型(三)

2023-01-13 16:02:46 673

原创 Kotlin:类与面向对象编程(四)

Kotlin:类与面向对象编程(四)

2023-01-13 16:02:11 96

原创 Kotlin:语法基础(二)

Kotlin:语法基础(二)

2023-01-13 16:01:48 152

原创 Kotlin:函数与函数式编程(五)

Kotlin:函数与函数式编程(五)

2023-01-13 16:00:55 591

原创 IO项目实战-apk加固

io实战。apk加固

2022-11-29 16:40:00 491

原创 ndk开发--线程

jni中创建线程

2022-11-12 13:20:52 165

原创 jetpack--navigation

navigation 的简单使用

2022-11-07 14:54:52 836

原创 Jetpack--dataBinding

databinding

2022-11-07 00:55:49 556

原创 jetpac--初级mvvm结合Room

简单mvvm 实现

2022-11-07 00:08:11 1011

原创 jetpack--Room

jetPack--Room的使用

2022-11-05 18:19:01 1120

原创 车载:Framework添加服务接口

在/buildsystem/android/frameworks/base/core/java/android/lilitest/addapi文件下新建manager.java文件(如:AddApiTestManager.java)将新加的服务及接口暴露到客户端。在/buildsystem/android/frameworks/base/core/java/android/lilitest/addapi文件下新建service.java文件(如:AddApiTestService.java)

2022-10-25 16:01:54 494

原创 JVM:基础

JVM基础知识

2022-10-13 15:56:31 1168 2

原创 设计模式:享元模式

简单学习设计模式中的享元模式,需要以后进行更深入的学习

2022-10-13 10:11:32 83

原创 AS使用:添加javaDoc注释

在AS中如何设备方法 及 类 的javaDoc注释

2022-10-13 09:41:43 713

原创 android9:GPS模块-源码调用流程

参考文章:https://blog.csdn.net/grekit_sun/article/details/109469351参考:https://blog.csdn.net/pangsurong/article/details/73912714?utm_medium=distribute.pc_relevant.none-task-blog-title-11&spm=1001.2101.3001.4242参考:https://blog.csdn.net/weixin_45244289/article/

2022-06-09 14:09:08 539

原创 android 源码-android四个层级与源码对应关系

****android系统架构:应用层(system app)、应用框架层(Java API Framework)、系统运行库层(native层)、硬件抽象层(HAL)、Linux内核层。一、应用层(system app)应用层就是App应用程序,这里包括了系统级内嵌的App和常规开发人员的非系统级的App。源码位置:/android/packages二、应用框架层(Java API Framework)应用框架层为开发应用程序提供常规的API,开发人员可以通过应用框架层开发应用,也可以称为J

2022-06-08 16:33:44 529

原创 跨进程通信-ContentProvider应用及工作原理

ContentProvider的使用一、ContentProvider创建流程创建一个自定义的ContentProvider,只需要继承ContentProvider类并实现六个抽象方法即可。onCreate:代表ContentProvider的创建,一般做一些初始化的工作;getType:用来返回一个Uri请求所对应的MIME类型(媒体类型,比如图片、视频等),如果不关注该选项,可以直接返回null或者“/”;剩下四个方法对应CRUD操作,即实现增删改查功能。根据BInder的工作原理,我们知道

2022-03-27 14:12:33 889

原创 androidP:IPC机制

一、Android中得多进程模式1、开启多进程模式在Android中使用多进程只有一种方法,那就是给四大组件在AndroidMenifest.xml中指定android:process属性。例如:获取进程pid、uid//activity.java private void getUid() { ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); App

2022-03-21 20:41:00 49

原创 androidP:Activity的生命周期和启动模式

一、Activity 的生命周期正常情况1、onStart() /onStop是从activity是否可见这个角度来回调的,而onPause/onResume是从activity是否位于前台(交互)这个角度来回调的。2、当前activity为A,启动activityB生命周期调用流程:onPause(ActivityA)->onCreate(ActivityB)->onStart(ActivityB)->onResume(ActivityB)->onStop(Activit

2022-03-19 00:02:41 325

原创 androidP: View的事件体系-view的事件分发机制

androidP: View的事件体系-view的事件分发机制

2022-03-10 16:40:31 200

原创 androidP: View的工作原理-自定义View

一、自定义View分类1、集成View重写onDraw这种方法主要用于实现一些不规则的效果,即这种效果不方便通过布局的组合方式来达到,往往需要静态或者动态地显示一些不规则的图形。即重写onDraw方法。采用这种方式需要自己支持wrap_content,并且padding也需要自己处理。2、集成ViewGroup派生特殊的Layout这种方法主要用于实现自定义的布局,即除了LinerLayout \RelativeLayout\FrameLayout这几种系统的布局之外,我们重新定义一种新布局,当某种

2022-03-03 16:11:37 189

MyApplication.rar

利用Android studio 3.6.3平台搭建ndk环境,并创建第一个native 工程。生成.so库,供其他工程调用。

2020-05-07

空空如也

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

TA关注的人

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