我正在使用具有本机库函数的这个类。
但是函数返回NULL。可能的原因是什么?
注意:还有另一个具有NDK功能的类,工作正常。
package com.fgtit.data;
import android.util.Base64;
import android.util.Log;
public class Conversions {
private static Conversions mCom=null;
public static Conversions getInstance(){
if(mCom==null){
mCom=new Conversions();
}
return mCom;
}
public native int StdToIso(int itype,byte[] input,byte[] output);
public native int IsoToStd(int itype,byte[] input,byte[] output);
public native int GetDataType(byte[] input);
public native int StdChangeCoord(byte[] input,int size,byte[] output,int dk);
public String IsoChangeOrientation(byte[] input,int dk){
int dt=GetDataType(input);
if(dt==3){
byte output[] =new byte[512];
byte stddat[]=new byte[512];
byte crddat[]=new byte[512];
IsoToStd(2,input,stddat);
StdChangeCoord(stddat,256,crddat,dk);
StdToIso(2,crddat,output);
return Base64.encodeToString(output,0,378,Base64.DEFAULT);
}
return "";
}
public String AllToIso(byte[] input,int dk){
Log.d("checking", "response");
switch(GetDataType(input)){
case 1:{
byte mTmpData[]=new byte[512];
byte mIsoData[]=new byte[512];
StdChangeCoord(input, 256, mTmpData, dk);
StdToIso(2,mTmpData,mIsoData);
return Base64.encodeToString(mIsoData,0,378,Base64.DEFAULT);
}
case 2:{
byte mTmpData1[]=new byte[512];
byte mTmpData2[]=new byte[512];
byte mIsoData[]=new byte[512];
IsoToStd(1,input,mTmpData1);
StdChangeCoord(mTmpData1, 256, mTmpData2, dk);
StdToIso(2,mTmpData2,mIsoData);
return Base64.encodeToString(mIsoData,0,378,Base64.DEFAULT);
}
case 3:
return IsoChangeOrientation(input,dk);
}
return "nothing";
}
public String AllToStd(byte[] input,int dk){
switch(GetDataType(input)){
case 1:{
byte mTmpData[]=new byte[512];
StdChangeCoord(input, 256, mTmpData, dk);
return Base64.encodeToString(mTmpData,0,256,Base64.DEFAULT);
}
case 2:{
byte mTmpData1[]=new byte[512];
byte mTmpData2[]=new byte[512];
IsoToStd(1,input,mTmpData1);
StdChangeCoord(mTmpData1, 256, mTmpData2, dk);
return Base64.encodeToString(mTmpData2,0,256,Base64.DEFAULT);
}
case 3:{
byte mTmpData1[]=new byte[512];
byte mTmpData2[]=new byte[512];
IsoToStd(2,input,mTmpData1);
StdChangeCoord(mTmpData1, 256, mTmpData2, dk);
return Base64.encodeToString(mTmpData2,0,256,Base64.DEFAULT);
}
}
return "";
}
static {
System.loadLibrary("conversions");
}
}
答案 0 :(得分:1)
我有一次类似的问题,在我离开课堂后只运行库方法。像这样:
public class LibInterface { 静态的 { 的System.loadLibrary("库&#34); } public native int get_method(int param); }