Android12之快速查找静态注册jni函数方法(一百六十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:快速查找静态注册jni的native函数通用方法

2.应用实例

1.查询setHasPreviewCallback函数对应的native函数

路径:frameworks/base/core/java/android/hardware/Camera.java

private native final void setHasPreviewCallback(boolean installed, boolean manualBuffer);

2.如何查找setHasPreviewCallback对应jni的api呢?

"jni函数名" = "路径名 + 文件名 + 函数" 组合.
查看路径最近为:android/hardware/Camera.java
所以对应的jni的函数可以写为:
android_hardware_Camera_setHasPreviewCallback

3.查找android_hardware_Camera_setHasPreviewCallback函数即可.

查找java函数setHasPreviewCallback对应到的jni的路径:frameworks/base/core/jni/android_hardware_Camera.cpp

static void android_hardware_Camera_setHasPreviewCallback(JNIEnv *env, jobject thiz, jboolean installed, jboolean manualBuffer)
{ALOGV("setHasPreviewCallback: installed:%d, manualBuffer:%d", (int)installed, (int)manualBuffer);// Important: Only install preview_callback if the Java code has called// setPreviewCallback() with a non-null value, otherwise we'd pay to memcpy// each preview frame for nothing.JNICameraContext* context;sp<Camera> camera = get_native_camera(env, thiz, &context);if (camera == 0) return;// setCallbackMode will take care of setting the context flags and calling// camera->setPreviewCallbackFlags within a mutex for us.context->setCallbackMode(env, installed, manualBuffer);
}

注意:如果是动态注册的jni的方法,这种方式就不奏效了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言15】单链表,(对于二级指针与一级指针应用的详细讲述)

文章目录 单链表1.单链表的介绍2.单链表的实现2.1.1单链表结点的创建与销毁2.1.2单链表尾插2.1.3单链表打印2.1.4尾删2.1.5头插2.1.6头删2.1.7查找2.1.8在pos位置之后插入数据2.1.9删除pos位置 单链表 1.单链表的介绍 链表是一种物理存储结构上非连续、非顺序的存储结构&#…

通达OA-V12版本二次开发-2023年7月25日

通达OA-V12版本二次开发-2023年7月25日 1、解密V11版本的文件2、修改V11的文件3、修改mysql_为mysqli_。4、关闭文件&#xff0c;windows下的记事本方式打开&#xff0c;然后另存为utf-8文件。5、V12版本相对于V11版本&#xff0c;改动内容 1、解密V11版本的文件 免费解密工具…

Vue 本地应用 图片切换 v-show v-bind实践

点击切换图片的本质&#xff0c;其实修改的是img标签的src属性。 图片的地址有很多个&#xff0c;在js当中通过数组来保存多个数据&#xff0c;数组的取值结合索引&#xff0c;根据索引可以来判断是否是第一张还是最后一张。 图片的变化本质是src属性被修改了&#xff0c;属性…

国标GB28181视频监控平台EasyGBS视频无法播放,抓包返回ICMP是什么原因?

国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台&#xff0c;可实现的视频功能包括&#xff1a;实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。国标GB28181视频监控平台部署简单、可拓展性强&#xff0c;支持将…

Python原型模式介绍、使用;浅拷贝/深拷贝原理

一、Python原型模式&#xff08;Prototype Pattern&#xff09;简介 1. 概念 原型模式是一种创建型设计模式&#xff0c;它通过复制&#xff08;克隆&#xff09;现有对象来创建新对象。这样可以避免使用复杂的构造函数来创建对象&#xff0c;提高程序的性能和可维护性。 2. 功…

腾讯云tke-ingress开启ingress域名访问日志

容器类型为containers的tke集群控制台创建完ingress-controller之后&#xff0c;由于默认日志是打印在pod内的文件&#xff0c;现在需要自行收集访问日志&#xff0c;需要把日志打印在正常的pod输出上在收集 在ingress-controller中默认nginx配置为 access-log-path: /var/log…

redis 缓存穿透 缓存击穿 缓存雪崩

redis 缓存穿透 缓存击穿 缓存雪崩 1.缓存穿透 前提&#xff1a;应用服务器压力过大 > 导致redis命中率过低&#xff08;查询不到缓存&#xff09;> 一直查询数据库 描述&#xff1a;1.redis查询不到数据 2.出现很多非正常url访问&#xff08;一般出现这些问题都是恶意…

独立站运营简历怎么写?如何做自建站履历?编写独立站经营履历的要点是什么?如何在简历中呈现个人自建站运营经验?

作为一名独立站运营者&#xff0c;一份出色的简历是展示自己能力的重要途径。一个精心制作的独立站运营简历可以为宝子们赢得心仪职位的机会。接下来&#xff0c;我们将介绍如何写一份引人注目的独立站运营简历&#xff0c;从而吸引雇主的目光。 独立站运营简历&#xff1a;个…

微服务——统一网关Getway

为什么需要网关&#xff1f; 网关的两种实现: 网关Getway——快速入门 步骤一 网关背身也是一个微服务&#xff0c;需要注册到nacos中去 步骤二 成功运行后 可以通过网关进行请求转发到对应服务。 流程如下&#xff1a; 路由断言工厂 网关路由可以配置的东西有如下。 spri…

【深度学习】yolov 图片训练的时候的遇到的warning: corrupt JPEG restored and saved

报错原因 是图片在dataset.py 走验证时报的错误。 if im.format.lower() in (jpg, jpeg):with open(im_file, rb) as f:f.seek(-2, 2)if f.read() ! b\xff\xd9: # corrupt JPEGImageOps.exif_transpose(Image.open(im_file)).save(im_file, JPEG, subsampling0, quality100)m…

Redis 九种数据类型的基本操作

一、redis9种数据类型的基本操作 ①key操作 #查找所有的key 127.0.0.1:6379> keys * 1) "pop" 2) "mylist" 3) "lpl" 4) "myset" #设置key的过期时间 返回1表示执行成功&#xff0c;0表示失败&#xff0c;出现问题 127.0.0.1:6379…

Qt Creator mainwindow.obj:-1: error: LNK2019

构建的时候报错&#xff1a; mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __thiscall mynotedig::mynotedig(class QWidget *)" (??0mynotedigQAEPAVQWidgetZ)&#xff0c;该符号在函数 "public: void __thiscall MainWindow::mynoteab…

VMPWN的入门级别题目详解(一)

实验一 VMPWN1 题目简介 这是一道基础的VM相关题目&#xff0c;VMPWN的入门级别题目。前面提到VMPWN一般都是接收字节码然后对字节码进行解析&#xff0c;但是这道题目不接受字节码&#xff0c;它接收字节码的更高一级语言&#xff1a;汇编。程序直接接收类似”mov”、”add”…

前端面试题:探索前沿技术与知识深度的关键

在前端开发领域&#xff0c;面试是评估候选人技能和知识水平的重要环节。面试题涵盖了各个方面的前端知识&#xff0c;旨在考察候选人的理解能力和解决问题的能力。本文将介绍一些常见的前端面试题&#xff0c;并结合具体实例说明&#xff0c;帮助读者更好地理解和准备前端面试…

Dockerfile 创建镜像,构建LNMP+wordpress架构

目录 一、Dockerfile 构建镜像 1.Dockerfile 构建 nginx镜像 1.1创建 nginx Dockerfile 目录 1.2编写 Dockerfile 文件 1.3构建nginx镜像 2.Dockerfile 构建 mysql 镜像 2.1创建 mysql Dockerfile 目录 2.2修改mysql配置文件 2.3编写 Dockerfile 文件 2.4构建mysql镜…

[论文笔记] LLM数据集——金融数据集

一、chatglm_金融 ModelScope 魔搭社区 请将modelscope sdk升级到v1.7.2rc0&#xff0c;执行&#xff1a; ​ pip3 install "modelscope1.7.2rc0" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html # 方式1 git clone http://www.modelscope…

Cesium态势标绘专题-圆角矩形(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

[RabbitMQ] RabbitMQ简单概述,用法和交换机模型

MQ概述&#xff1a; Message Queue(消息队列)&#xff0c;实在消息的传输过程中保存消息的容器&#xff0c;都用于分布式系统之间进行通信 分布式系统通信的两种方式&#xff1a;直接远程调用 和 借助第三昂 完成间接通信 发送方称谓生产者&#xff0c;接收方称为消费者 MQ优…

JMeter基础入门教程之CSV数据文件设置CSV Data Set Config

最近在做压力测试&#xff0c;登录功能用到了配置元件&#xff1a;CSV 数据文件设置&#xff0c;可以将登录用户名和密码放在一个csv文件中&#xff0c;然后通过CSV数据文件设置元件读取出来&#xff0c;用来做压测。 一、CSV文件 CSV文件小知识分享&#xff1a;是指"逗号…

POC CPU 单核性能基准测试 Linux bash 下的简单测试用例 bc计算兀

指令 time echo "scale5000;4*a(1)" | bc -l -q 通过耗时简单评估CPU单核性能 测试环境一 yeqiangyeqiang-MS-7B23:/opt/cpu2006$ cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.2 LTS" NAME"Ubuntu" VERSION_ID"22.04" VERSION&…