android
奔跑的_迷彩狼
这个作者很懒,什么都没留下…
展开
-
Android 写入 csv 乱码,设置UTF-8的流也不行
【代码】Android 写入 csv 乱码,设置UTF-8的流也不行。原创 2024-01-25 14:09:14 · 783 阅读 · 0 评论 -
Android 基础控件bug总结
1. Switch 控件 setChecked方法触发onCheckedChanged监听器问题。2. EditText 内容居右,点击 EditText 编辑,如何让光标居右编辑。代码 setChecked,会触发监听。原创 2024-01-22 20:47:52 · 622 阅读 · 0 评论 -
Android12+ 创建文件、文件夹
Android12+ 创建文件、文件夹原创 2024-01-16 11:26:27 · 856 阅读 · 0 评论 -
Android 12+ MQTT适配
Android 12+ MQTT适配原创 2024-01-15 16:24:28 · 1139 阅读 · 0 评论 -
Android debug带系统签名
Android debug带系统签名原创 2024-01-05 11:37:59 · 612 阅读 · 0 评论 -
自定义GSON解析排序
自定义GSON解析排序原创 2023-05-16 10:41:19 · 236 阅读 · 0 评论 -
Android AES-128-CBC 解密
Android AES-128-CBC 解密原创 2023-02-15 10:25:15 · 755 阅读 · 0 评论 -
Android 双屏异显 Presentation 的快速开发
Android 双屏异显 Presentation 的快速开发原创 2022-10-12 10:35:51 · 1109 阅读 · 0 评论 -
adb 命令扩展
adb 命令扩展原创 2022-06-29 15:05:16 · 214 阅读 · 2 评论 -
Android Windows虚拟串口调试
1.Configure Virtual Serial Port Driver 创建虚拟串口2.设置Android模拟器虚拟串口进入Android SDK的tools目录,通过cmd执行命令:emulator.exe @模拟器名-qemu -serial 模拟器使用的串口名由于我们刚刚创建的模拟器名称为Nexus10,并且我们使用刚刚创建出来的COM3的虚拟串口,所以我们执行命令:emulator.exe @Nexus10 -qemu -serial COM3配置窗口点击..原创 2022-05-06 11:07:04 · 1463 阅读 · 0 评论 -
Android查看串口读写权限
ls -l /dev/tty*原创 2022-04-14 09:38:33 · 3488 阅读 · 0 评论 -
Android NDK C++log报错
__android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__)正常使用:LOGD("123 sdk ,config handler,rows,cols:");但是如果你想输出一个string,或者char*的话:LOGD(targetFileNameStr.data());上面这些写会报错:error: format string is not a string literal带个0就可以了,下面我把TAG也加上了:LOG.原创 2022-03-31 10:27:00 · 2810 阅读 · 0 评论 -
android10+ User has not given permission to access device /dev/bus/usb/005/002
UVC的项目,在Android10以上系统运行后报错:User has not given permission to access device /dev/bus/usb/005/002对比了一下发现是UsbDevice.getSerialNumber()的时候报的异常,尝试搜了一些资料无果,于是与android8系统对比了一下,将这里强行定制化了。因为我们是用固定的摄像头去生产产品,即使这里不改其他地方也有限制,所以直接在这里改了。尝试了下网上开源的UVC项目也是崩溃,git项目原创 2022-03-08 09:22:55 · 5948 阅读 · 3 评论 -
Android NDK multiple definition of `xxxx`
检查C++代码是否定义了相同class。不同文件夹下同名的.cpp是没问题的,但是不能定义相同名字的class。原创 2021-08-17 14:54:21 · 278 阅读 · 0 评论 -
android error: undefined reference to 总结
总的来说一般是两种情况:1.代码(库)缺失,或者没有编进去。踩坑参考:https://blog.csdn.net/qq_24712507/article/details/1154626312.CMakeLists没有链接进去。细分一般是下面几种情况:1.真的缺失文件。这个就非常不细心了。。。2.只有.h文件没有.cpp的实现文件。这种情况.h的函数会报警告,排除警告的时候会创建函数实现,此时请注意。3.链接库的顺序问题。常见引入第三方的情况。比如o原创 2021-08-16 11:33:17 · 1012 阅读 · 0 评论 -
Kotlin JetPack Room 简单使用
Room的使用很简单,主要是一堆注解,以及理解下协程。1.实体类@Entity(tableName = "cipher")data class Cipher( @ColumnInfo(name = "name", defaultValue = "user") var userName: String, @ColumnInfo var password: String,) { @PrimaryKey(autoGenerate = true) @原创 2021-07-27 16:48:46 · 541 阅读 · 0 评论 -
MMKV使用
写在前面内部实现是MMAP,文件映射。CRUD:增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。腾讯的键值对存储开源库,效率比较高。(具体可参考参考1)开始(使用部分详细可参考参考2)引入选择带static的:dependencies {implementation 'com.tencent:mmkv-static:1.1.1'}初始化:...原创 2021-07-27 14:02:42 · 932 阅读 · 0 评论 -
寄存器 RS485 PLC modbus 单片机与Android通过串口通信
场景:工业物联网名词解释:PLC单片机,每一个单片机都有一堆寄存器。RS485串口,与RS232差不多,都是串口的交互(具体百度吧,电气啥的稍微有点差别)。MODBUS是工业通信协议,具体百度下吧。------------------------------------------ 以下来自百度 START ------------------------------------------ RS485属于有线传输,所以就要硬件传输媒介,实际就是两根线就可以了,在这两根...原创 2020-12-10 10:47:09 · 2150 阅读 · 0 评论 -
Android USB通信 Java层 controlTransfer收发消息
写在前面:本篇文章不是从零手把手教USB开发,而是收不到/发不出消息或返回-1可以参考的。从零开始可以参考这篇:https://blog.csdn.net/weixin_44902943/article/details/113837840这篇是arduino板子的,我记得是串口的?这篇比较简单适合入门,除此之外网上也有别的android usb开发资料,git上也有很多开源工具库。正文:本篇例子是通过向硬件主板特定寄存器地址发送消息通讯,核心方法是controlTransf原创 2021-07-05 16:58:42 · 2120 阅读 · 1 评论 -
Android UVCCamera Java层 免驱免root即插即用
写在前面:两年前(2019)任职的公司在rk3288板子5.1系统上搞过UVC多路摄像头,那时自己还比较菜,可以看下这篇博客:https://blog.csdn.net/qq_24712507/article/details/92999760目的是获取多路摄像头数据流做AI的,但是那篇博客还是比较简单的,因为他是在工业板上搞的,而且还是5.1。。。大家都是Android开发,不说废话了。本篇文章是在安全性更高的移动端手机、平板上搞的,先放图。(即使打码了,但是图侵究)环境:小米平板4 晓原创 2021-07-02 16:53:16 · 1580 阅读 · 4 评论 -
Android BLE简介及连接、收发数据
知识点:经典蓝牙(Classic Bluetooth)& 低功耗蓝牙(Bluetooth Low Energy) 经典蓝牙可以用与数据量比较大的传输,如语音,音乐,较高数据量传输等。 BLE 特点就如其名,功耗更低的同时,对数据包做出了限制。所以适用于实时性要求比较高,但是数据速率比较低的产品,如鼠标,键盘,传感设备的数据发送等。 蓝牙 4.0 支持单模和双模两种部署方式,其中单模即是我们说的 BLE,而双模指的是 Classic Bluetooth + BLE 。实际上,原创 2021-07-02 09:41:16 · 2799 阅读 · 0 评论 -
Android Camera TextureView 预览旋转 镜面对称
不需要经过算法处理,底层API封装好了。mTextureView = findViewById(R.id.surface_yuv);mTextureView.setRotation(90); // 顺时针旋转90°mTextureView.setRotationY(180); // 镜面对称只是预览的处理,原始数据不变。...原创 2021-06-23 13:54:55 · 2620 阅读 · 0 评论 -
TextureView onSurfaceTextureAvailable 没调用
getSurfaceTexture()返回NULL检查硬件shibshi加速开一下,TextureView需要硬件加速,Activity默认是开的。原创 2021-06-18 14:50:57 · 1158 阅读 · 1 评论 -
android UVCCamera fix up block for cameras that fail to set dwMax
没有红色错误,只是黄色提醒:fix up block for cameras that fail to set dwMax以及:disconnect failed原创 2021-06-17 10:55:26 · 775 阅读 · 1 评论 -
android UVCCamera could not negotiate with camera:err=-51
setPreviewSize 参数设置问题要改两个地方:1.UVCCamera.javanativeSetPreviewSize2.原创 2021-06-17 10:41:57 · 1203 阅读 · 0 评论 -
Android Studio dimens 屏幕适配工具 ScreenMatch
Android ScreenMatch屏幕适配是一种简单适用的适配方式,是由Android官方推出的适配方法。废话不多说直接上干活:1.首先下载安装ScreenMatch插件,Ctrl+Alt+S打开Plugins2.下载dimens.xml并存放在values目录下dimens.xml下载地址:https://download.csdn.net/download/duanchuanzhi/105443163.生成values-sw384dp~values-sw136...转载 2021-06-03 10:14:58 · 558 阅读 · 0 评论 -
Android Studio CMake 引入静态包.a 以OpenCV为例
以OpenCV为例,记录开发过程并附上部分踩坑细节1.引入openCV的.a包,官方SDK目录如下:记得第三方也要引入。引入后的样子如下:你会发现,x86和arm的包不太一样。2.引入OpenCV头文件.h .hpp首先,在你的cpp/include下,加入openCV的头文件,如下图:官方SDK在这里:3.CMake引入.a及你自己的c++源码先引入头文件:set(libs ${CMAKE_SOURCE_DIR}/..)include_directo原创 2021-05-25 17:02:25 · 2885 阅读 · 3 评论 -
Android Studio打aar包
给客户一个静态aar包比给一堆so动态库和jar包好。打包在你写好的SDK项目基础上,以下操作:(这里写好的意思指运行没问题,so包平台兼容并正常,打的jar包也没问题)使用原创 2021-05-19 16:42:49 · 277 阅读 · 0 评论 -
SqliteDB blob 存byte[]的
Android这边的byte[],对应数据库的blob(数据块)。原创 2021-05-14 13:58:16 · 521 阅读 · 0 评论 -
C++ 与Android NDK的C++语法不同的地方及需要注意的地方
语法:C++是可以这样写的:uint8_t in[bytesCount] = {0};在NDK会报错:error: variable-sized object may not be initialized所以需要改成另一种方式:uint8_t *in = new uint8_t[bytesCount];用完之后记得delete掉:delete in;未完待续;...原创 2021-04-19 12:04:08 · 233 阅读 · 0 评论 -
NDK开发过程中的问题解决方案总结
1.jni代码里面声明char*这种带*的,用完之后记得delete,否则内存泄露。2.c++这边是用回参的方式传递参数,也就是指针、地址的方式,但是java没有啊。jni提供了SetByteArrayRegion 这种方式,env->SetxxxArrayRegion()这种方式,把c++代码里面的回参,复制到java里面变量申请的内存空间。不过,Object相关的没有找到,比较复杂的数据类型没有找到。3....原创 2021-04-14 16:57:44 · 120 阅读 · 0 评论 -
Android上Camera获取byte数据在native层进行转换(转)
openCV的C++底层库用在android里面open()不了,遂换了种方式。用原生Camera的视频流封装成Mat再进行操作。转发自:https://blog.csdn.net/Taily_Duan/article/details/52756166我只能说是真的牛逼这个单通道的,代码是jni的: jbyte * pBuf = (jbyte*)env->GetByteArrayElements(yuv, 0); int width = w; int height = .转载 2021-04-13 16:27:54 · 891 阅读 · 0 评论 -
NDK开发记一下内存泄露,局部变量带*的没有释放
场景:摄像头数据byte流通过jni转换为char*给Cpp。转换过程崩了。转换过程参考这一篇:https://blog.csdn.net/bzlj2912009596/article/details/78715658然后复制粘贴到我的jni转换里面:打码的那行是调用,乍一看没问题。但是内存成喜马拉雅了:是这个原因,虽然人家博客里面写了delete,但是在调用部分。我以为局部变量不用回收,是我太可爱了。。。带*的还是回收一下把。回收后的内存还算正常:因为是demo原创 2021-04-12 15:12:45 · 244 阅读 · 0 评论 -
NDK开发,加载so库,运行崩溃JNI DETECTED ERROR IN APPLICATION: JNI RegisterNatives called with pending exception
JNI DETECTED ERROR IN APPLICATION: JNI RegisterNatives called with pending exception java.lang.ClassNotFoundException: Didn't find class "com.xxx.xxx" on path: DexPathList[[zip file "/data/app/com.xxx.ndkdemo-sKdbYfzMstKNudU5YHhsJQ==/base.apk"],nativeLibra原创 2021-03-30 16:59:36 · 3830 阅读 · 0 评论 -
android studio NDK opencv2开发过程(自己的C++文件引入opencv的cpp源码)
写在前面:android2.2+就支持cmake了,现在最新版都android4.n了,结果网上还是一堆的mk开发NDK。无奈,自己干吧。然后opencv官网文档竟然也是mk的,还是eclipse,我去。。。2021年了还在用五年前的技术。。。各位开发者请奋起!不要总是复制粘贴改别人的bug,挑战下自己吧!此篇也是建立在openCV官方教程、demo的基础上的,是总结性博客。OpenCV官网:https://opencv.org/android/这个地址是你下载的官方androi原创 2021-04-06 16:02:42 · 731 阅读 · 0 评论 -
android studio NDK源码开发,cpp文件点Sync Now没有用,代码加载不进去,std爆红引入文件路径不对
Please include it in the appropriate build file(build.gradle,CMakeLists.txt or Android这个问题,先参考下这一篇:https://blog.csdn.net/qq_24712507/article/details/115296076(不是给自己引流哈,不太喜欢做重复工作)如果解决不了,删除这四个文件夹:Build -> Rebuild Project (最好不要选Make Project)这原创 2021-04-06 15:52:03 · 1419 阅读 · 0 评论 -
NDK 引入C++ 报找不到头文件fatal error: ‘opencv2/core/cvdef.h‘ file not found
文件路径问题,当前你打开的文件的路径是当前文件的文件夹。就如下文件cvdef.h是在opencv2\core路径下,在此路径引入opencv2/core/是没有的,需要先退回到父目录opencv2的父目录才能这样去写。所以改的话,改成这样即可:当前文件路径已经在opencv2/core了。如果需要在上一级目录里面找文件,用的是terminal的方式:..如果是更上一层的,那就是../../嗯......但是这样改的话需要每个文件都去改,小生不才,不会改编辑器默认的当前文件原创 2021-04-02 09:19:21 · 1241 阅读 · 0 评论 -
android studio NDK开发记录 CMakeLists 有cpp、h源码
19年那会儿我还搞过,两年过去了很多步骤忘记了,再就是android studio也升级换代了好几个,网上搜的大部分都过时了,以此记录开发过程。CMakeLists开发;android studio3.6.2,如果选择4.n也能凑合用;gradle-5.6.4-all.zip;classpath 'com.android.tools.build:gradle:3.6.2';compileSdkVersion 30 buildToolsVersion "30.0.3"(这个无所谓,晒出来的意思是最新的也一原创 2021-03-31 12:21:15 · 359 阅读 · 0 评论 -
NDK报错 No implementation found for int com.xxx.xxx tried Java_com_xxx_xxx_xxx_xx
No implementation found for int com.xxx.xxx.Methods.Initialize(java.lang.String) (tried Java_com_xxx_xxx_Methods_Initialize and Java_com_xxx_xxx_Methods_Initialize__Ljava_lang_String_2)一般出现这种问题是因为你的java对应C的class的包名路径与so里面的不一致。解决方案:如果你不知道C源工程的话,so里面声明原创 2021-03-31 10:11:31 · 3103 阅读 · 2 评论 -
NDK编译多个cpp文件 报Please include it in the appropriate build file(build.gradle,CMakeLists.txt or Android
android studio,cmake方式实现NDK开发问题:新增cpp或者粘贴过来的cpp文件爆红,头文件引用不了,比如"string"等。网上大量资料都是旧版方式而且都是单一cpp文件的demo,当添加第二个cpp文件的时候就会报这个错误:This file is not part of the project. Please include it in the appropriate build file(build.gradle,CMakeLists.txt or Android.mk e原创 2021-03-29 11:10:47 · 1691 阅读 · 0 评论