自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 基于RKNN的YOLOv5安卓Demo

基于RKNPU2 SDK 1.6.0版的安卓YOLOv5演示应用程序,选择图片进行对象检测并显示识别结果。

2024-04-08 09:14:28 430 1

原创 OpenHarmony4.0适配LVDS屏幕驱动

手头有一块RK3568的开发板OK3568-C,但是还没有适配OpenHarmony,用的还是LVDS屏幕,但是官方和网上好像还没有OpenHarmony4.0的LVDS屏幕驱动的通用实现,所以决定尝试了一下适配该开发板,完成LVDS屏幕驱动的适配,点亮屏幕

2024-01-11 15:59:05 2228 1

原创 Linux内核模块入门HelloWold

本文主要是介绍怎么编写一个最简单的Linux内核模块“HelloWold”。

2023-03-02 08:31:40 1636

原创 UVCAndroid,安卓UVC相机通用开发库(支持多预览和多摄像头)

简介UVCAndroid基于saki4510t/UVCCamera开发,对原UVCCamera库进行了一部分的重构,升级了原生层的libjpeg-turbo、libusb和libuvc库为较新的版本,拍照和录像API参考了goolge的CameraX库的实现。主要功能主要功能包括:(1) 支持USB Camera设备检测,画面实时预览;(2) 支持抓拍jpg格式图片,可设置图片压缩质量;(3) 支持录制mp4格式视频,可屏蔽音频,可设置视频和音频的录制参数;(4) 支持获取camera支持的分

2022-04-19 08:46:49 26680 122

原创 YuvImage和Bitmap压缩为Jpeg时,质量和耗时的关系

前言查看CameraX库的拍照功能ImageCapture类,可以发现两个常量: private static final byte JPEG_QUALITY_MAXIMIZE_QUALITY_MODE = 100; private static final byte JPEG_QUALITY_MINIMIZE_LATENCY_MODE = 95;对于使用CameraX的拍摄的Jpeg图片,这两个常量对应着图片质量两种设置:最大质量减少延迟其中,最大质量的Quality值是100,减少延

2022-03-27 08:31:09 2418

原创 Android 10 无法获取USB设备权限异常问题

问题在小米和VIVO的Android 10的版本上面,利用如下代码无法获取USB设备的权限: private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION"; private final BroadcastReceiver usbReceiver = new BroadcastReceiver() { public void onReceive

2021-12-13 16:23:37 7320 1

原创 NDK的多线程编程<pthread.h>库的使用问题

问题在项目中使用一个开源库,里面有原生的C++代码,其中有不少并发操作,使用了<pthread.h>库保证线程安全。其中线程同步是使用互斥锁来实现的,正常的流程情况是:初始化锁 – pthread_mutex_init加锁 – pthread_mutex_lock、pthread_mutex_trylock解锁 – pthread_mutex_unlock销毁锁 – pthread_mutex_destroy但是因为逻辑比较复杂,导致偶尔会出现执行异常,出现了销毁锁之后又进行加

2021-12-10 09:10:23 3778

原创 自动旋转时,AndroidAutoSize的自适应问题(横竖屏不同布局)

问题开发中的应用的横竖屏可以自动切换,并且拥有不同布局。横向布局是按照平板设计的,纵向布局是按照手机设计的。为了自动适配,使用了AndroidAutoSize。AndroidAutoSize需要配置设计宽度和设计高度,但是UI设计的横屏和竖屏的宽度和高度刚好是相反的。导致配置完成之后,一旦旋转屏幕,竖屏或者横屏的适配就不正常(只能对横屏或者只能对竖屏进行适配)。解决办法初始化AndroidAutoSize时,进行如下配置://屏幕适配监听器AutoSizeConfig.getInstance()

2021-05-22 09:18:51 2922 2

原创 Android使用UVC库提示“failed to open USB device(has no permission)”错误

问题Android使用UVC软件库连接USB摄像头,不显示图像也没有其他反应,在Logcat中发现无法正常获取USB权限,并且提示“failed to open USB device(has no permission)”错误。当前targetSdkVersion为30,比较高,调低到26,程序就正常了,可以正常显示图像。因为当前应用的Jetpack库用的比较新,调低targetSdkVersion版本会有影响,还得对应修改Jetpack库的版本。所以就找了一下根本原因,发现UsbManager的has

2021-05-20 17:01:24 1972 2

原创 基于paho.mqtt.java的开源Android端MQTT框架 MqttAndroid

背景现在最常用的Android端MQTT框架是 paho.mqtt.android。paho.mqtt.android作为对 paho.mqtt.java 的一层包装,具体实现逻辑有点臃肿。于是想着模仿 paho.mqtt.android,实现对 paho.mqtt.java 更加简单的包装。简介对 paho.mqtt.java 库进行了的简单包装,方便Android端使用。Github地址:https://github.com/shiyinghan/MqttAndroid使用方法第一步:在pr

2021-04-14 08:51:43 2047

原创 使用Android Studio 4.1 时,viewBinding中控件引用显示不全的问题

问题使用Android Studio 4.1 时,如果在布局中的UI控件之间添加注释,并且注释中包含“&”字符的话,viewBinding就无法识别注释之后的所有控件:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/t

2021-03-16 10:41:03 714

原创 Andriod解决SignalR混淆产生的问题

问题使用SignalR进行实时通讯时,在调试安装模式下,程序运行正常。而在打包发布后,运行报错:03-06 15:02:50.504 13121-13158/? I/c.e.a.z1: WebSocket transport connected to: ws://192.168.1.137:8066/messagehub?id=2--aL0lysu5pheJNLJuC6w.03-06 15:02:50.510 13121-13158/? I/c.e.a.v0: HubConnection starte

2021-03-06 20:00:55 210

原创 docker通过 nginx-proxy 实现自动反向代理

前言当使用docker时,如果有多个docker容器作为网站提供服务,nginx不论单独安装还是作为docker容器,配置起来都有些麻烦。而使用nginx-proxy我们可以通过简单的配置就可以完成docker容器的自动反向代理。正文我们使用docker-compose来配置docker服务。为了方便区分开发和正式环境,我们创建三个配置文件:docker-compose.ymldocker-compose.dev.ymldocker-compose.prod.ymldocker-comp

2020-12-17 10:26:29 4273

原创 Spring Boot入门教程:第十章:验证表单输入

本章带你用Spring Boot创建一个服务器应用,包含一个有验证功能的表单。本文目标我们将会构建一个简单的Spring MVC应用,可以接受用户输入,并用标准的注解配置输入的验证规则。输出错误信息,让用户可以重新输入正确的信息。你需要15分钟左右IntelliJ IDEAJDK 1.8+Maven 3.2+用Spring Initializr生成项目代码对于所有的Spring应用,你都可以使用Spring Initializr生成基本的项目代码。Initializr提供了一个快速的方

2020-11-24 16:16:43 245

原创 Spring Boot入门教程:第九章:访问Neo4j图形数据库

本章带你用Spring Data Neo4j构建一个应用,从Neo4j(一个基于图形的数据库)中保存和取出数据。本文目标使用。你需要15分钟左右IntelliJ IDEAJDK 1.8+Maven 3.2+用Spring Initializr生成项目代码对于所有的Spring应用,你都可以使用Spring Initializr生成基本的项目代码。Initializr提供了一个快速的方式去引入所有你需要的依赖,并且为你做了很多设置。当前例子需要JDBC API和H2 Database依赖

2020-11-21 16:06:00 824

原创 在uni-app中,input输入框的输入监听@input事件中,修改输入框内容不生效

使用uni-app时,想对input输入框进行输入范围进行限制,如下:<input type="password" v-model="password" @input="passwordFilter" />passwordFilter:function (event) { let value = event.target.value; if(!value || value == " "){ return ''; } //密码的输入规则是:字母、数字 const rule

2020-08-30 16:55:18 9650 1

原创 Spring Boot入门教程:第七章:使用Redis进行消息传递

本章带你使用Spring Data Redis实现发布和订阅Redis的消息。本文目标用Spring Boot构建一个应用,使用StringRedisTemplate发布一个字符串消息,使用MessageListenerAdapter订阅消息。使用Spring Data Redis发布消息听起来有点奇怪,但是你会发现,Redis不仅提供了一个NoSQL数据存储,还有一个消息系统。你需要15分钟左右IntelliJ IDEAJDK 1.8+Maven 3.2+Redis服务器用Spri

2020-08-06 14:44:10 1464

原创 Spring Boot入门教程:第八章:使用RabbitMQ进行消息传递

本章带你设置一个RabbitMQ AMQP服务器来发布和订阅消息,创建一个Spring Boot应用和RabbitMQ服务器进行交互。本文目标用Spring Boot构建一个应用,使用Spring AMQP的RabbitTemplate发布消息,使用MessageListenerAdapter订阅消息。你需要15分钟左右IntelliJ IDEAJDK 1.8+Maven 3.2+RabbitMQ服务器设置一个RabbitMQ服务器在创建一个消息应用之前,我们需要配置一个负责接收信息

2020-08-06 14:43:53 213

原创 setTextSize配合getDimension设置字体尺寸过大的问题

getDimension()、getDimensionPixelOffset()和getDimensionPixelSize() 这三个函数返回都是像素。1)getDimension返回float;2)getDimensionPixelOffset会进行取整,返回int;3)getDimensionPixelSize会进行四舍五入,返回int;配合getDimension,使用setTex...

2020-08-04 08:15:05 564

原创 Spring Boot入门教程:第六章:使用LDAP对用户进行验证

本章带你用Spring Boot创建一个Web程序,并用Spring Security的LDAP模块进行安全验证。本文目标用Spring Boot构建一个Web应用,使用Spring Security的基于Java的内置LDAP服务器进行安全验证。启动LDAP服务器时,加载一个包含多组用户的数据文件。你需要15分钟左右IntelliJ IDEAJDK 1.8+Maven 3.2+用Spring Initializr生成项目代码对于所有的Spring应用,你都可以使用Spring Ini

2020-07-30 16:52:32 1035 1

原创 Android+Jenkins+Gogs搭建自动化打包平台

Jenkins和Gogs的安装教程网上比较多,这里不再赘述。Jenkins配置Android编译环境在 Manage Jenkins > System Configuration > Configure System 里面,添加Android SDK的环境变量:在 Manage Jenkins > System Configuration > Global Tool Configuration 里面,添加对应版本的Gradle:在Jenkins中创建项目点击创建一个新的

2020-07-29 17:27:22 409

原创 Spring Boot入门教程:第五章:上传文件

本章带你用Spring Boot创建一个服务器应用,可以通过HTTP的multipart形式来上传文件。本文目标用Spring Boot构建一个网络应用,接收文件上传。实现一个简单HTML界面来上传一个测试文件。你需要15分钟左右IntelliJ IDEAJDK 1.8+Maven 3.2+用Spring Initializr生成项目代码对于所有的Spring应用,你都可以使用Spring Initializr生成基本的项目代码。Initializr提供了一个快速的方式去引入所有你需要

2020-07-25 08:17:56 181

原创 Spring Boot入门教程:第四章:使用JDBC访问关系型数据库

本章带你用Spring Boot实现访问关系型数据库。本文目标用Spring Boot构建一个应用,使用JdbcTemplate 去访问储存在一个关系型数据库里面的数据。你需要15分钟左右IntelliJ IDEAJDK 1.8+Maven 3.2+用Spring Initializr生成项目代码对于所有的Spring应用,你都可以使用Spring Initializr生成基本的项目代码。Initializr提供了一个快速的方式去引入所有你需要的依赖,并且为你做了很多设置。当前例子不需

2020-07-22 08:22:48 198

原创 使用Maven编译Java项目

本文带你用Maven编译一个简单的Java项目。本文目标创建一个简单的Java项目,然后用Maven编译。你需要15分钟左右文本编辑器或者IDEJDK 8+创建项目我们首先需要创建项目一个Java项目。为了专注于Maven的操作,这个Java项目越简单越好。创建文件夹结构在你选择的项目文件夹下面,创建子文件夹。Windows系统的话,在命令行运行命令 :mkdir src\main\java\hello*nix系统的话,在运行命令 :mkdir -p src/main/

2020-07-18 11:05:45 11546

原创 使用Gradle编译Java项目

本文带你用Gradle编译一个简单的Java项目。本文目标创建一个简单的Java项目,然后用Gradle编译。你需要15分钟左右文本编辑器或者IDEJDK 6+创建项目在用Gradle编译之前,你需要创建项目一个Java项目。为了专注于Gradle的操作,这个Java项目越简单越好。创建文件夹结构在你选择的项目文件夹下面,创建子文件夹。Windows系统的话,在命令行运行命令 :mkdir src\main\java\hello*nix系统的话,在运行命令 :mkdir

2020-07-14 17:21:38 6944

原创 Spring Boot入门教程:第四章:调用一个RESTful网络服务

本章带你创建一个应用,这个应用调用一个RESTful网络服务。本文目标用Spring Boot构建一个应用,使用RestTemplate从https://gturnquist-quoters.cfapps.io/api/random上面取回一段随机的Spring Boot引语。你需要15分钟左右IntelliJ IDEAJDK 1.8+Maven 3.2+用Spring Initializr生成项目代码对于所有的Spring应用,你都可以使用Spring Initializr生成基本的

2020-07-13 10:39:09 335

原创 Spring Boot入门教程:第三章:调度任务

本章带你用Spring一步一步的实现调度任务。本文目标用Spring Boot构建一个应用,使用@Scheduled注解,实现每五秒钟打印一次当前时间。你需要15分钟左右IntelliJ IDEAJDK 1.8+Maven 3.2+用Spring Initializr生成项目代码对于所有的Spring应用,你都可以使用Spring Initializr生成基本的项目代码。Initializr提供了一个快速的方式去引入所有你需要的依赖,并且为你做了很多设置。当前例子不需要其他Spring

2020-07-12 08:27:57 152

原创 Spring Boot入门教程:第二章:构建一个RESTful网络服务

这篇文章展示了怎么创建一个显示“Hello, World!”的RESTful网络服务。本文目标我们将会构建一个服务,通过http://localhost:8080/greeting接收HTTP的GET请求。服务会返回一个代表问候的JSON字符串,显示如下:{“id”:1,“content”:“Hello, World!”}通过请求字符串中可选项name参数,你可以自定义你的问候语,如下所示:http://localhost:8080/greeting?name=Username参数会覆盖

2020-07-11 08:59:03 184

原创 Win10环境下Qt的Windows最新安装包出现未响应的问题的解决办法

问题:选择Qt的LTS版本的一个最新的安装包,下载下来之后。点击进行安装,运行到选择组件那一步,程序就会变成未响应状态,如下图:解决办法:双击运行前,右键选择“以管理员身份运行”。...

2020-07-10 15:53:22 4921 11

原创 Spring Boot入门教程:第一章:构建一个Spring Boot应用程序

本章提供了一个例子,展示了Spring Boot怎么帮你加速程序的开发。随着你阅读更多的教程,你会看到更多的Spring Boot的使用示例。

2020-07-09 16:53:00 320

原创 Android Studio 3+打包签名时输入的密码,重启就消失的问题

问题:如图,勾选了Remember passwords,但是每次重启密码都会消失。解决办法:在Settings => Appearance & Behavior => System Settings => Passwords里面,选择Save passwords的In KeePass选项。如果提示需要Master passwords,但是已经忘记了的话,可以点击Clear,清除原来的密码。In KeePass选项选择成功后,保存设置。问题解决。...

2020-07-06 10:29:25 3208

原创 错误: Cannot fit requested classes in a single dex file

出现原因:主要原因是你的项目貌似有点大,已经超过65k个方法。一个dex已经装不下了,需要个多个dex,也就是multidex ,因为Android系统定义总方法数是一个short int,short int 最大值为65536解决方法gradle文件的defaultConfig默认配置里面增加:multiDexEnabled true在dependencies中添加:impleme...

2020-07-01 08:34:52 3760

原创 Android四种启动模式的生命周期

Android四个启动模式的进入时的生命周期:1. singleInstance:第一次进入:onCreate => onStart在栈顶再次进入: onNewIntent不在栈顶再次进入:onNewIntent => onRestart => onStart按home键再次进入:onRestart => onStart按返回键:onRestart => onStart2. standard:第一次进入:onCreate => onStart在栈顶再次进

2020-06-26 15:19:29 581

空空如也

空空如也

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

TA关注的人

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