- 博客(57)
- 资源 (8)
- 收藏
- 关注
原创 数据结构基础:单链表反转 原地反转版(C++版)
闲来无事,做个练习,记录一下#include <iostream>using namespace std;typedef struct LNode {//单链表定义 struct LNode* next; int data;}LNode, * LinkList;LinkList createList() {//创建链表 因为是头插法所以顺序是0987654321 LinkList L = NULL; for (int i = 0; i < 1
2021-09-02 00:55:21 234
原创 记一次匪夷所思的AndroidStudio 报 Unable to detect adb version 错误的解决过程
起因:新电脑。准备装一个安卓开发环境进行开发。已经轻车熟路了。一切安装妥当。但是打开AndroidStudio时,创建项目,编辑代码完全没有问题,想连接手机调试时,发现设备列表没有手机,只显示了Loading Devices 的字样。EventLog 不停显示Unable to detect adb version 的字样。经过:网上搜索了半天,总共有几种说法:1 adb端口占用,查出占用的进程,杀掉开启adb2 platfrom-tools的adb.exe替换成 旧版本的3 安装其他版本
2021-05-23 19:03:31 1355 3
原创 使用CMake 结合VisualStudio工程使用LINK_DIRECTORIES指令发生LNK1104 “无法打开文件xxx.lib”问题踩坑
这样的 我有一个库工程,已经编译好,生成了lib库。这是 我又建立了一个app工程,想要链接库工程生成的lib库。我在app工程的源码目录编辑了一个CMakeLists.txt文件 如图内容如下ADD_EXECUTABLE(app app.c)INCLUDE_DIRECTORIES(D:/cmakelearn/lesson1/build/install/include/hello)LINK_DIRECTORIES(D:/cmakelearn/lesson1/build/install/lib
2021-03-11 11:52:14 2283
原创 如何轻松理解Android中的Surface概念
安卓开发中,涉及多媒体尤其是视频,经常会接触到一个概念Surface那么如何理解他呢。最简单的理解就是其实就是一块内存区域仅此而已。如果通过字面理解,好像是一个平面,但这个平面在哪里呢?写代码经常有这个感觉,Surface传来传去,生成销毁,甚至MediaRecorder进行内容录制的时候也能创建Surface ,Jni中也能看到surface的引用。但奇怪的是,经常在界面上却没有任何看得见的区域,说这个区域就是一个Surface。有人就会晕了,我咋看不见什么Surface啊!!!关键在这里,S
2021-01-22 19:29:55 1468
原创 ffmpeg视频播放处理流程
一张图说明问题:1 大致分为解码,渲染两部分2 解码分为音频解码和视频解码3 渲染分为视频渲染和音频渲染4 视频渲染用OpenGL 音频渲染用OpenSL5 音视频渲染可以用其他中间件比如SDL,实现音视频一体渲染...
2021-01-22 12:18:59 213
原创 安卓调用系统相机拍照 使用FileProvider.getUriForFile() 获取URI踩坑记录
1 配置文件中的 name path authority必须与代码中匹配 否则URI不会获取成功2 path以及文件必须判断是否存在否则要创建目录以及文件。不创建的话URI可以获取到,但是拍照返回后resultCode会为0导致不能拿到图片。...
2020-10-27 19:05:56 2808
原创 Unity3D 带有赛道编辑器的赛车游戏小示例视频讲解
视频内有源码下载地址,该项目是完全开放源代码的。很值得研究。请看以下视频。如果窗口过小,可以到B站观看。https://www.bilibili.com/video/BV1tZ4y157Qk/ 带地图编辑功能的Unity赛车游戏案例,能编辑赛道,测试赛道,十分适合需要地图编辑功能的Unity开发者 ...
2020-10-05 18:50:28 731
原创 OpenGL编程指南随书代码在VisualStudio2019的运行方法
Opengl学习,这本书是经典的入门书籍,如果只看书,可能会学的半懂不懂。因为书中只展示了关键的代码片段。通过运行随书代码的例子,才能更好的理解这本书。我做了一个视频,如何在VisualStudio2019中运行示例代码。供学习Opengl的同学参考。 OpenGL编程指南随书代码在VisualStudio2019的运行方法 ...
2020-09-29 13:50:32 289
原创 有限状态机机制介绍及在Android中应用的实例
上来可能有疑问什么是状态机?能干什么?第一次听说状态机 是从游戏开发技术中得来的。在游戏开发中,可以使用状态机控制npc的行为,控制角色在 站立,追踪敌人,攻击敌人,逃跑等状态进行切换。每一个状态都会执行该状态进行时执行的一系列操作。简而言之,就是控制对象状态的切换。用图示来表示一下这是一个游戏demo,注意敌人的各种行为敌人没有发现玩家时,呆立不动,这时,敌人可以说是处于 “空闲”...
2020-04-04 21:53:50 625
原创 openglES 3.0环境 glGetUniformLocation()返回 -1 的原因 从2.0迁移过来,GLSL函数需要改变
1 网上大部分说是因为着色器代码中没有使用到这个变量,是一个原因2 但是还有一个原因,openGL ES3.0 着色器代码api发生了变化,比如在2.0中texture2D()函数在3.0中需要用texture()函数来替代。...
2020-03-15 22:34:00 1039
原创 彻底理解OPENGLES 纹理是如何映射的
纹理,就是通过一系列表示颜色的数据,调用对应的GL函数,把绘制出来的几何图形,填充纹理数据所携带的颜色。比如绘制了两个三角形组成的矩形,没有使用纹理的时候是使用常量颜色填充的。当使用纹理的时候如何实现,可以通过《OPENGL ES 3.0 编程指南》第九章的学习和样例代码的编译运行,已经有一定了解。但纹理是查看过代码,对如何映射到绘制的图形,纹理坐标与顶点的关系,可能还是一头雾水。...
2020-02-12 15:28:28 1028
原创 Jetpack Room的一些事实
新项目尝鲜,记录一下以免忘记1 不管新建表,还是某张表增减字段,字段变更,都要执行数据库升级策略2 一个Dao声明可以支持多个表的查询方法。比如XXXDao既可以有queryAllUser();同时也可以有queryAllAccount();其中User实体有一张表,Account实体是领一张表。可以用一个Dao来查询。3 查询必须在子线程,可以通过引用room-rxjava2库方便地进...
2020-02-10 20:58:30 254
原创 OpenGL ES 3.0 编程指南 windows10 环境编译报错解决
这本书该看的应该都看了,demo环境搭建就按照书中16章说的做就好了。想说的是一个困扰了好几天的问题,就是在Visual Studio 2017 下调试,总是会报错,内容为引发了异常: 读取访问权限冲突。esContext 是 nullptr发生在 esUtils_win32.c 这个文件的第80行最后发现,ValidateRect 这个函数是在收到 窗口消息 WM_PAINT 时会...
2020-02-08 20:44:32 379
原创 与程序员相关的 android apk包安装时提示 “应用未安装” 的原因
情景:机器上已经安装了一个版本如果调用系统的安装流程,进行apk包的重新安装,即,安装apk是通过系统弹出如下弹窗安装apk。如果出现提示 “应用未安装”如图:莫慌,不一定是安装包损坏。用adb install命令进行安装,会提示这个错误可知,安装包的版本打包时比之前客户安装的版本还要低。那么,哪里设置这个版本信息呢在build.gradle文件中有如下配置android...
2020-01-19 10:43:03 3992
原创 架构感悟
架构时,需要将代码分层三层,底层是基础的服务,比如硬件调用的抽象接口中间层是业务相关的地层调用,是实现了抽象接口的具体实现类,顶层是业务代码,调用中间层的实现的接口方法进行业务处理...
2019-12-03 16:57:08 125
原创 databinding 结合RecyclerView 适配器带来的坑 不显示数据
有一个Recyclerview item布局的显示使用了databindingitem布局类似这样<?xml version="1.0" encoding="utf-8"?><layout> <data> <variable name="name" type="String...
2019-09-04 10:18:32 1619
原创 2019 最新 Android 平台 ffmpeg 4.1.3 编译流程 集成x264编码库 生成so文件
编译环境1 Ubuntu 64位2 NDK r19c3 FFmpeg 4.1.3 源码 (可以不提前下载)4 x264源码(可以不提前下载)最近在从源码编译视频框架,但网上很多脚本都是两三年前的,不适用于最近的版本ffmpeg ,或者只针对特定cpu架构的。编译过程 ,整个过程就编辑3个脚本文件即可。1 下载NDK r19c (我试过 其他版本的NDK,无法完成整个过程)1 编辑 ...
2019-08-23 09:04:37 918 2
原创 编译x264后 对应的文件没有在配置的目录中的原因
因为make后没有执行 make install只有install后,lib include bin 目录才会出现在$PREFIX配置的目录下面
2019-08-21 09:29:25 302
原创 windows 编译 x264 报错 No working C compiler found 处理方法
编译过程就不说了,网上好多都是可以的。注意两点1 如果出现如题的错误,很可能是编译脚本前几行配置的NDK 路径 和 工具链路径不对比如我的是这样的NDK=D:/ndk/android-ndk-r15cPLATFORM=$NDK/platforms/android-19/arch-armTOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9...
2019-08-20 14:35:53 5247
原创 各历史版本NDK下载地址
https://developer.android.google.cn/ndk/downloads/older_releases.html
2019-08-14 00:53:36 895
原创 用java程序使windows电脑不自动锁屏的方法
有时候电脑受管控,在很短的时间内就会锁屏,带来了很大的不便,通过控制面板是无法成功设置的。于是写了个java程序,通过5秒一次模拟ScrollLock键按键的方式阻止电脑自动锁屏。代码如下import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Main extends WindowAdap...
2019-07-18 13:04:49 3422
原创 导入别人的Flutter工程后,Android项目中的java文件带有红色J标志,代码编辑时没有自动提示的解决方案
刚接触Flutter,github上下载了一个完整的Flutter项目来研究。例如以下的一个项目https://codeload.github.com/lijinshanmx/flutter_gank/zip/master在AS中找到工程目录打开,由于Flutter版本不同等原因,编译报错,根据提示配置就好就行,就不说了。最终配置好后,发现在Android视图下,看不到java代码,类似下...
2019-07-04 13:32:17 4857 5
原创 Android WorkManager使用的坑
使用流程1 应用启动时,网络请求获取用户信息2 获取成功,调用WorkerManager的enqueue传入自定义的Wroker启动任务3 在任务的doWrok中调用用户信息类中的方法进行操作出现的问题:当设备重启后,闪退,报空指针异常。异常位置是在doWrok()方法体中。通过打log打印执行时间发现,设备重启时,doWrok就会执行,在获取用户信息之前导致userInfo为空...
2019-07-01 10:11:56 3802 1
原创 ORMLite createOrUpdate 失败 无法保存记录的原因
Class class com.ygsoft.otbox.entity.sign.VisitorSignFeatureInfo does not have an id field因为数据库实体类没有id 这个字段
2019-06-19 10:44:10 663
原创 安卓 使用了databinding,打包开启混淆,需要额外处理吗
最近项目打包时开启了混淆,项目使用了databinding,担心相关的代码会被混淆影响。因为布局文件绑定了许多实体类,以及viewModel的引用。使用databinding可以安全地开启混淆。因为编译后,布局文件的类引用会被替换成tag标签。...
2019-04-10 16:40:51 2841 3
原创 Android SounPool 播放声音音量大小不稳定的问题
今天使用SoundPool,已经设置了定值,发现声音时大时小。后面发现如下解决方法:初始化时,使用STREAM_MUSIC这个参数来初始化。SoundPool sp = new SoundPool(1,AudioManager.STREAM_MUSIC,0);即第二个参数选择AudioManager.STREAM_MUSIC来初始化。不会造成上述情况。...
2019-02-02 11:56:40 1521
原创 Android 调试 ADB 找不到设备,设备不显示,设备管理器ADBInterface 显示黄色感叹号终极处理方法
Android 调试 ADB 找不到设备,设备不显示,设备管理器ADBInterface 显示黄色感叹号终极处理方法最近公司新机器插真机调试,每一台手机都无法识别,设备管理器显示ADBInterface黄色感叹号。有些手机自带驱动,装上就好,有些设备找不到驱动。最后发现一个终极解决方法,下载一个360手机助手,然后插上手机,就会自动下载驱动。下载完删掉360手机助手就行了。卸磨杀驴...
2018-11-16 15:39:12 10283 8
原创 Android Jetpack 之 Lifecycle极简教程
Androd Jetpack 之 LifeCycle极简教程Android Jetpack 出来很久了,一直没有时间实际使用。它包含了许多优化代码结构的库,能够减少重复的模板代码的编写。主要的包含的内容十分丰富,请看官网介绍:Android Jetpack首页这次介绍一下LifeCycle的最简单的使用。LifeCycle是实现Activity,Fragment生命周期事件向外部类传递的...
2018-11-09 17:33:42 625
原创 关于Android8.0 静态注册广播 行为变更的说明。
Andorid 8.0 对广播的使用做了变更。当广播接收器使用静态注册方式使用时,除了一些例外,这个接收器接收不到隐式广播。 注意这个“隐式”是重点。看了网上几篇文章,对这个变更理解有误。错误的理解是:8.0后,广播接收器使用静态注册,是无法使用的。实时并非如此。先看一个例子:首先,定义一个简单的广播接收器:public class MyReceiver extends Broadc...
2018-10-24 12:33:11 3009 1
原创 二叉树基础操作 ,前中后序遍历,求二叉树高度,二叉搜索树(二叉排序树)Java实现 代码集合
首先,定义一个树对象Tree.javapublic class Tree { public TreeNode root;}定义树节点对象TreeNode.javapublic class TreeNode { public TreeNode(int data) { this.data = data; } public int data; public TreeNode ...
2018-10-21 14:30:23 809
原创 Java虚拟机:运行时数据区域-《深入理解Java虚拟机》笔记
Java 虚拟机在运行时会将管理的内存划分成若干个区域,这些区域各有各的用途,以及各自的创建和销毁的时间。有些随着虚拟机进程的启动而存在,有些依赖用户线程的启动和结束而建立和销毁。Java虚拟机所管理的运行时数据区域如下图。运行时数据区分为 线程共享的 与 线程私有的线程共享的区域包括:方法区,堆。线程私有的区域包括:虚拟机栈,本地方法栈,程序计数器。这些区域都需要在运行时分配空间,...
2018-10-14 13:18:53 186
原创 Android朝花夕拾-介绍Bimap
这篇文章来介绍下安卓中操作图片的Api: BitmapBitmap的本质:位图,即用一些位存储图片数据的一种数据类型。首先,我们用画笔画了一个48*48的图片,保存成bmp格式。这里windows画笔只有四种位图格式可选,我们选24位位图。查看这个文件的属性,发现大小为 6966 byte。...
2018-10-07 19:15:38 259
原创 AndroidStudio使用预编译FFmpeg库结合ndk开发视频项目踩坑记录
现状: 1 已有预编译好的libffmpeg.so和ffmpeg头文件。 2 libffmpeg.so对应armeabi的abi。 3 已有对ffmpeg方法调用的C++代码。需求 在AndroidStudio上集成进上述代码实现jni功能。项目结构: C源码在cpp目录。include下是ffmpeg的头文件,以及功能代码的头文件。剩下的是实现功能的C++代码。...
2018-08-07 13:06:00 878
原创 Java基础知识系列 多线程基础之二 线程安全
系列的几篇文章介绍一下Java语言的多线程的使用。上一篇Java基础知识系列 多线程基础之一已经实现了一个账户(Account) ,可以供多个线程同时进行取钱和存钱的操作。本次将定义一个差不多的账户类,但是多个线程同时操作会带来线程安全的问题。将账户类修改为下面的形式 class AccountUnsafe { int balence = 500;...
2018-07-29 20:53:28 161
原创 Java基础知识系列 多线程基础之一
系列的几篇文章介绍一下Java语言的多线程的使用。首先,模拟一个场景,多个线程同时操纵一个账户(Account),有些进行取钱操作,有些进行存钱操作。每次取钱金额为500,不足500无法取钱。 每次存钱金额100,账户余额大于等于500无法存钱。取钱时金额不足,取钱的线程会等待,等其他存钱的线程存够500则可以继续取钱。 存钱时账户已经有500,则存钱的线程会等待,等其他取钱的线程...
2018-07-29 20:09:55 198
原创 安卓小部件(App Widget) "加载小部件时出现问题" 的原因
今天做了个小部件,模拟器打开,添加到桌面时,无法显示。 后来看了下谷歌文档,小部件根布局支持类型有限。当时外层用的ConstraintLayout 所以无法加载。小部件的布局文件支持如下布局: FrameLayout LinearLayout RelativeLayout GridLayout以及如下控件 AnalogClock Button Chronometer...
2018-07-17 14:18:27 5727 1
原创 Java OOP
1 对于接口(Interface)的理解初入java世界的时候,看到 interface 就眼烦,感觉只有里面只有方法体的这个文件有啥用啊,打开看,发现看了了等于白看。研究了javaSDK源码,AndroidSDK源码后,现在对它有了直观的理解。 认为最重要的功能是,它说明了一种 “能力”。例如Runnable这个接口,命名就直观地表现了实现了它的类是具有 能放到线程中执行的这个能力...
2018-07-08 14:42:45 153
windows防止电脑休眠小工具
2020-09-21
KeepOn.jar
2019-07-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人