- 博客(185)
- 资源 (19)
- 收藏
- 关注
原创 JNI开发使用jsoncpp
在 Android JNI 开发中,如果使用 jsoncpp 库来生成和解析 JSON 数据,可以通过以下步骤进行集成。jsoncpp 是一个流行的 C++ JSON 库,可以方便地用于处理 JSON 数据。2.1. src\lib_json目录copy到项目main/cpp目录。2.2. include\json目录copy到项目main/cpp目录。在 JNI 中使用 jsoncpp 生成和解析 JSON 数据。手动将 jsoncpp 源代码文件加入到项目。修改 CMakeLists.txt。
2025-01-15 10:04:38
1026
原创 taskset命令
taskset 是 Linux 系统中的一个命令,用于设置或获取进程的 CPU 亲和性(CPU affinity)。CPU 亲和性决定了进程可以在哪些 CPU 核心上运行,通常用于优化性能,避免多个进程在同一核心上竞争资源。在 Android 系统中,由于它是基于 Linux 内核的,因此 taskset 命令也可以使用,但需要确保设备已经启用了 taskset 工具,并且你的设备具备了 root 权限,或者你正在使用开发者选项中的 ADB 工具。
2025-01-15 10:04:13
472
原创 Constructor of inner class ... can be called only with receiver of containing class
内类 (inner class) 必须通过外部类的实例来创建,因为它持有外部类的引用。确保你先实例化外部类,再通过外部类的实例来实例化内部类。
2025-01-14 14:42:44
280
原创 CSV文件对包含逗号的
使用 field.replace(“”“, “””") 处理字符串中的双引号,将每个双引号替换为两个双引号(这是 CSV 标准要求的做法)。在保存数据到 CSV 文件时,如果数据中包含逗号,应该对包含逗号的数据进行处理,以避免它被误认为是字段分隔符。将每个字段写入文件,并加上逗号分隔符。field.contains(“”") 检查数据是否包含双引号。field.contains(“,”) 检查数据是否包含逗号。如果数据中包含逗号或双引号,使用双引号将数据包裹起来。将每个字段通过逗号分隔写入 CSV 文件。
2025-01-14 14:42:00
533
原创 Android App获取root权限
在 Android 中,获取 root 权限通常意味着你需要通过 su(superuser)命令来执行具有更高权限的操作。对于系统应用(System App)来说,由于它们具有一定的系统权限,可以访问一些普通应用无法访问的资源,但它们通常并不能直接获得 root 权限,除非设备已经被 root 过。要执行带有 root 权限的命令,只需要调用上述方法并传递想要执行的命令。例如,删除一个只读文件或写入受保护的目录。
2024-12-02 09:49:02
928
原创 Android 输入事件拦截机制
doInterceptKeyBeforeDispatchingLockedInterruptible调用Java层的interceptKeyBeforeDispatching做拦截操作,然后根据返回结果设置 key event的interceptKeyResult, 如果没有拦截,设置interceptKeyResult为INTERCEPT_KEY_RESULT_CONTINUE, 否则设置为INTERCEPT_KEY_RESULT_SKIP或TRY_AGAIN.
2024-11-30 23:01:49
958
原创 android WakeLock简介
以下代码为WakeLock申请释放示例,要申请WakeLock,必须有PowerManager实例,如下。如果是通过acquire(long timeout)方法申请的超时锁,则会在到达时间后自动去释放,如果是通过acquire()方法申请的永久锁,则必须进行显式的释放,否则由于系统一直持有wakelock锁,将导致无法进入休眠状态,从而导致耗电过快等功耗问题。根据作用时间,WakeLock可以分为永久锁和超时锁,永久锁表示只要获取了WakeLock锁,必须显式的进行释放,否则系统会一直持有该锁;
2024-11-30 23:01:20
1056
原创 Android开发获取目录空间
在 Android 中,totalSpace 返回的是存储设备的总空间(以字节为单位)。该值表示该存储设备的总容量,不同于 freeSpace 和 usableSpace,后者分别表示可用的空间和当前系统可以使用的空间。
2024-11-29 09:44:32
224
原创 Android监听USB设备并获取挂载路径
在 Android 开发中,如果你想要监听 USB 设备的连接和断开事件,通常会使用 UsbManager 类来管理和处理 USB 设备的连接。Android 提供了 BroadcastReceiver 来接收系统广播,监听 USB 设备的插拔。通过创建一个 BroadcastReceiver 来监听系统发送的与 USB 设备连接相关的广播事件。首先,你需要在 AndroidManifest.xml 文件中声明 USB 权限和设备特性。动态注册 BroadcastReceiver。
2024-11-29 09:44:21
1298
原创 Android使用UVCCamera打开USBCamera-预览
获取TextureView的Surface,开启预览。写一个管理类封装UVCCamera相关API。导入libuvccamera.aar。
2024-11-28 09:29:36
1413
原创 Android使用UVCCamera打开USBCamera-编译
直接删除下面引用,后面根据编译报错删除HandlerThreadHandler和BuildCheck相关API的调用,不影响后面使用。执行后生成libuvccamera\build\outputs\aar\libuvccamera-release.aar。NDK版本过高,我这边使用r12版本,下载地址。在local.properties文件后添加。修改build.gradle文件。libcommon库问题。
2024-11-27 09:44:10
1115
原创 Android 设备上使用 tcpdump 抓包
在 Android 设备上使用 tcpdump 抓包是一个比较常见的网络调试操作,尤其对于开发者和安全研究人员来说。tcpdump 是一个强大的网络抓包工具,可以捕获传输的数据包,并且支持过滤和分析网络流量。这条命令会抓取所有接口上的所有数据包,-s 0 表示捕获整个包,-w 后面跟的是输出文件的路径。将 .pcap 文件导入 Wireshark 或其他网络分析工具中进行详细分析。抓取指定 IP 的流量。下载 tcpdump。
2024-11-27 09:42:48
1339
原创 Android HandlerThread 和 Handler区别
HandlerThread 和 Handler 都是 Android 中用于处理线程间通信和异步任务的工具,但它们的使用场景和功能有所不同。下面是它们的主要区别和各自的使用方法。
2024-11-26 09:28:12
546
原创 Android开发实现悬浮窗
在 Android 开发中,实现悬浮窗功能通常需要使用 System Alert Window 权限以及通过 WindowManager 来动态添加视图。悬浮窗是一种常见的 UI 元素,可以在应用界面上方显示,用于显示浮动的按钮、聊天小窗等内容。在 Android 6.0(API 23)及更高版本,SYSTEM_ALERT_WINDOW 权限是运行时权限,需要通过代码动态请求。首先,应用需要请求 SYSTEM_ALERT_WINDOW 权限,该权限允许应用创建悬浮窗并显示在其他应用之上。
2024-11-26 09:27:58
1095
原创 [CXX1300] CMake ‘3.13.4‘ was not found in SDK, PATH, or by cmake.dir property.
SDK目录下没有当前版本Cmake,需要前往。
2024-11-25 11:02:42
230
原创 Android 使用libyuv-缩放
在 Java 中调用 scaleI420 方法,传入原始 YUV 数据和目标宽高。封装一个 JNI 方法来调用 libyuv 的 I420Scale 函数。编写一个 C++ 文件,使用 libyuv 的 I420Scale 方法。
2024-10-31 09:36:08
665
原创 Android 使用libyuv-集成
include文件夹复制到app\src\main\cpp\include。将编译生成的动态库复制到app\src\main\jniLibs目录。修改CMakeLists.txt。修改build.gradle。
2024-10-30 10:35:23
508
原创 Android 使用libyuv-编译
如上错误需要新建jni文件夹,source、jni、Android.mk、application.mk复制到jni,在jni目录下执行。编译动态库出错,需要在Android.mk添加定义宏DLIBYUV_DISABLE_SVE。下面错误需要启用对ARMv8.2-A架构的编译器支持,在Android.mk添加。修改Android.mk文件,删除jpeg和test。进入下载目录,执行ndk-build。新建application.mk。下面错误需要升级NDK版本>22。完整Android.mk。
2024-10-29 09:30:42
1060
1
原创 sed命令替换文件字符串
在替换之前,创建一个名为 test.txt.bak 的备份文件,以便在需要时可以恢复原文件。在 test.txt 文件中,将所有出现的 map 字符串替换为 phone 字符串。
2024-10-29 09:28:25
450
原创 Android使用CurveZMQ实现安全连接
使用jeromq依赖jnacl,下载地址:https://github.com/neilalexander/jnacl/releases/tag/v1.0。
2024-10-28 10:05:37
139
原创 Android 源码在线阅读
http://androidxref.com/https://www.androidos.net.cn/sourcecodehttp://aospxref.com/
2024-09-11 14:25:13
608
原创 Download gradle超时
Android Studio经常会出现一直在Download gradle,可能是无法找到资源,可以按照如下方法。
2024-09-03 19:29:01
582
原创 using定义回调接口
在C++中,using 可以用来定义回调接口,类似于 typedef。这种方法可以使代码更简洁且易于理解。下面是一个使用 using 实现回调接口的示例。
2024-08-30 14:13:10
656
原创 Android JNI 设置环境变量
在 Android JNI 中,setenv 是一个 C 标准库函数,用于设置环境变量。修改环境变量可能不会影响到子进程或系统外部的环境变量,只在当前进程中有效。要在 Android JNI 中获取环境变量,可以使用 getenv 函数。环境变量通常用于以下场景。
2024-08-28 10:54:38
916
原创 C++计算方法耗时
high_resolution_clock 是 C++11 标准中的一个时间库类,定义在 头文件中。它提供了最精确的时间测量,适合用于需要高精度计时的场景。
2024-08-27 15:39:49
331
原创 Android NDK 查看动态库的依赖关系
readelf 是一个用于分析 ELF(Executable and Linkable Format)文件的工具,可以用来查看动态库的依赖关系。你可以在 Android NDK 的工具目录中找到这个工具。假设你已经安装了 Android NDK,你可以使用 readelf 来查看动态库的依赖关系,在 Android NDK 中,readelf 工具通常位于。在 Android NDK 中查看动态库的依赖关系,可以使用以下方法。要查看名为 libexample.so 的动态库的依赖关系,可以运行。
2024-08-26 11:49:08
464
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人