问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中的Bitmap类型通过jni传进cpp后如何转换成IPLImage*类型呢?谢谢!

发布网友 发布时间:2022-04-26 10:30

我来回答

1个回答

热心网友 时间:2023-10-09 09:12

JNI 的基本问题就是解决 Java 和 C++ 代码互相调用的通信问题,在 C++ 代码编写过程中最大的问题莫过于适应其中的代码编写规则,C++调用或是返回的内容必须遵守 JVM 和 C++ 代码的通信规则。
C++ 调用 Java 的一般步骤如下:
获得类:
jclass cls = env->FindClass("com/ldq/Student");
cls 可认为是类的句柄
"com/ldq/Student" 就是类文件,注意不能用 "com.ldq.Student"
获得方法:
jmethodID mid = env->GetMethodID(cls,"<init>","()V");
以上为构造函数,参数是 "<init>" "()V"
jmethodID mid = env->GetMethodID(cls,"getAge","()I");
以上为类的方法,第一个参数是类句柄,第二个参数是方法名字,第三个参数是签名标识

Java类型
符号

boolean Z

byte
B

char
C

short S
int I
long L
float F

double
D

void
V

objects对象 Lfully-qualified-class-name; L类名;
Arrays数组 [array-type [数组类型
methods方法 (argument-types)return-type(参数类型)返回类型
获得对象:
jobject obj=env->NewObject(cls,mid);
以上便获得了一个对象的句柄
获得对象成员变量:
jfieldID fid=env->GetFieldID(cls,"age","I");
以上和获得类方法差不多
操作成员变量:
jint a=env->GetIntField(obj,mid);
age=age+10;
env->SetIntField(obj,fid,a);
返回:
return obj;
下面是本人练习的例子
ExList.java
Java代码
package com.ldq.list;

import java.util.List;

public class ExList {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("-------WifiManager.test()");
System.out.println(WifiManager.test());

System.out.println("-------WifiManager.testArray()");
String[] s1 = WifiManager.testArray();
for (int i = 0; i < s1.length; i++) {
System.out.println(s1[i]);
}

System.out.println("-------WifiManager.testObject()");
System.out.println(WifiManager.testObject().ssid);
System.out.println(WifiManager.testObject().mac);
System.out.println(WifiManager.testObject().level);

System.out.println("-------WifiManager.getScanResultsA()");
ScanResult[] s2 = WifiManager.getScanResultsA();
for (int i = 0; i < s2.length; i++) {
System.out.println(s2[i].ssid);
System.out.println(s2[i].mac);
System.out.println(s2[i].level);
}

System.out.println("-------WifiManager.getScanResults()");
List<ScanResult> list = WifiManager.getScanResults();
System.out.println(list.get(0).ssid);
System.out.println(list.get(0).mac);
System.out.println(list.get(0).level);

}
}
package com.ldq.list;import java.util.List;public class ExList {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("-------WifiManager.test()");System.out.println(WifiManager.test());System.out.println("-------WifiManager.testArray()");String[] s1 = WifiManager.testArray();for (int i = 0; i < s1.length; i++) {System.out.println(s1[i]);}System.out.println("-------WifiManager.testObject()");System.out.println(WifiManager.testObject().ssid);System.out.println(WifiManager.testObject().mac);System.out.println(WifiManager.testObject().level);System.out.println("-------WifiManager.getScanResultsA()");ScanResult[] s2 = WifiManager.getScanResultsA();for (int i = 0; i < s2.length; i++) {System.out.println(s2[i].ssid);System.out.println(s2[i].mac);System.out.println(s2[i].level);}System.out.println("-------WifiManager.getScanResults()");List<ScanResult> list = WifiManager.getScanResults();System.out.println(list.get(0).ssid);System.out.println(list.get(0).mac);System.out.println(list.get(0).level);}}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
泡沫之夏Ⅲ内容简介 影响茄子秧苗长势的因素有哪些 如何提高茄苗长势 轻客什么证 轻客校车轻客校车安全管理条例 路比较窄的乡村学校需要安全的校车,有没有推荐 js中实现一个证件类型选择 选择是一个下拉框当选择身份证 如何... ...两个半圆柱,已知每个半圆柱的底面周长是20.56cm,求半圆柱表面积_百... 圆柱沿直径截成两个半圆柱,底周长20.56cm,高是15厘米,求圆柱体积... ...1、一个半圆柱的底面积周长是20.56cm,高是5cm,求这个半圆柱的表面积... ...求圆柱体积(侧面是个正方形,长方形的长是20.56CM) 算式要 魔芋面真难吃吗 如何解决bitmap 内存溢出out of memory的问题 魔芋面可以用开水泡着吃吗 android 怎么判断bitmap对象有没有被使用 android 在Java代码中,我调用一个函数后返回Bitmap图,想将它设为背景,每次调用setbackground都出错 魔芋面怎么吃?魔芋米怎么吃?魔芋米到底怎么吃? java中Bitmap bitmap = null;Bitmap是一个类还是一个一种数据类型? Java里,把Bitmap转换为View。 求教java中有没有类似android中的bitmap类 java中getBitmap()什么意思? JAVA int数组转bitmap问题 android bitmap使用时注意什么 java Bitmap怎么转成BufferedImage呢? 如何高效使用和管理Bitmap 火影忍者中六道是谁? 火影六道 火影中,潘恩六道的六道的能力分别是什么? 火影里的佩恩六道到底是什么人? 火影忍者六道仙人的能力 六道轮回和六道仙人是怎么回事? 吃魔芋面真的可以减肥吗 Bitmap recycle作用是? 吃了魔芋面胃很难受 Java处理bmp图像,怎样操作BMP位图的数据 网传的魔芋面真的很低卡吗? 怎样在java里用URL引入图片引入图片 大家吃过魔芋面吗?不掺合面粉的 如何判断bitmap是否为空 胃不好可以吃魔芋面吗 Android系统中Bitmap是否有调用recycle方法的必要性 乌冬面和魔芋面减肥吃哪个好? 魔芋面减肥的问题 魔芋面糖尿病可以吃吗? 如何从电脑上往p3上下载歌曲,具体步骤是什么 你们觉得什么魔芋面更适合午晚餐吃? 用荞麦面好,还是魔芋面好,还是混在一起吃好 有人吃‘魔芋面’减肥吗。有关每日摄入能量问题 葡萄酒和螃蟹能一起吃吗 螃蟹与红酒可以一起吃吗?? 红酒和螃蟹能一起吃吗