java代码
public class MyActivity extends Activity {
public class MyVersion
{
public int majorVersion;
public int minorVersion;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
int i =carlifelibstarttest();
Toast.makeText(this, "Hello world", 10).show();
System.out.println("Hello world!");
TextView mTextview = new TextView(this);
mTextview.setText(stringFromJNI());
int j=connectionSetup();
long p = class_init();
carLifeLibInit();
disconnect();
carLifeLibDestory();
MyVersion myVersion=new MyVersion();
myVersion.majorVersion=1;
myVersion.minorVersion=2;
System.out.println(String.format("myVersion.majorVersion=%d,myVersion.minorVersion=%d", myVersion.majorVersion,myVersion.minorVersion));
cmdHUProtoclVersion(myVersion);
System.out.println(String.format("myVersion.majorVersion=%d,myVersion.minorVersion=%d", myVersion.majorVersion,myVersion.minorVersion));
setContentView(mTextview);
}
public native int cmdHUProtoclVersion(MyVersion myVersion);
public native int carlifelibstarttest();
public native String stringFromJNI();
public native long class_init();
public native int connectionSetup();
public native int carLifeLibInit();
public native void carLifeLibDestory();
public native void disconnect();
static{
System.loadLibrary("carlifeJni");
}
jni
jint Java_com_xxxx_carlife_VehicleNative_cmdHUProtoclVersion(JNIEnv* env, jobject thiz,jobject myobject)
{
if(!g_obj)
g_obj = env->NewGlobalRef(thiz);
S_HU_PROTOCOL_VERSION *my_version=(S_HU_PROTOCOL_VERSION *)malloc(sizeof(S_HU_PROTOCOL_VERSION));
jclass clazz;
jfieldID my_majorversion;
jfieldID my_minorversion;
clazz= env->GetObjectClass(myobject);
if(clazz==NULL)
{
D("GetObjectClass Failed!\n");
return -1;
}
my_majorversion=env->GetFieldID(clazz,"majorVersion","I");
if(my_majorversion==NULL)
{
D("Failed to get majorVersion filedID!\n");
return -1;
}
my_minorversion=env->GetFieldID(clazz,"minorVersion","I");
if(my_minorversion==NULL)
{
D("Failed to get minorVersion filedID!\n");
return -1;
}
my_version->majorVersion=env->GetIntField(clazz,my_majorversion);
my_version->minorVersion=env->GetIntField(clazz,my_minorversion);
D("majorVersion = %d,minorVersion = %d\n",my_version->majorVersion,my_version->minorVersion);
env->SetIntField(clazz,my_majorversion,11);
env->SetIntField(clazz,my_minorversion,22);
D("majorVersion = %d,minorVersion = %d\n",my_version->majorVersion,my_version->minorVersion);
return CCarLifeLib::getInstance()->cmdHUProtoclVersion(my_version);
}
签名
{"cmdHUProtoclVersion","(Lcom/xxx/test/MyActivity$MyVersion;)I",(void*)Java_com_xxxx_carlife_VehicleNative_cmdHUProtoclVersion}