Java — функция NDK не работает

Я работаю с этим классом, имеющим встроенные библиотечные функции.
Однако функции возвращают 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");
}
}

1

Решение

Однажды у меня была похожая проблема: запустить после того, как я покинул класс, только и только методы библиотеки. Как это:

открытый класс LibInterface {
статический
{
System.loadLibrary ( «Lib»);
}
public native int get_method (int param);
}

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]