我的 NDK 应用程序有一个 c 文件(ht_NDK.c)功能,如下所示,
int heatcon_readtemperature(char* temperature)
{
int nret,ok;
char cmd[3]={'d',0x0d, 0x0a};
struct pollfd pfd;
static int i=0;
char read_temp[255]="banagalore";
i++;
memcpy(temperature, &read_temp, i);
if(i==10)
i=0;
return nret;
}
在另一个 c 文件(second.c)中,我正在调用上面的函数,如下所示,
jstring
Java_com_example_ndk_ReadData_readData( JNIEnv* env,
jobject this,jstring printMatter, jint j)
{
char sz[55] = {0};
return((*env)->NewStringUTF(env, heatcon_readtemperature(sz)));
}
上面的函数在我的 java 类(ReadData.java)中调用,如下所示
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read_data);
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
ReadData rd = new ReadData();
String n = rd.readData();
Log.i("NDK", "msg" +n);
}
});
}
static
{
System.loadLibrary("ht");
System.out.println("loded library");
}
public native int[] readData();
}
}
这样每当我按下按钮时,该值都应该打印在控制台上,一切都很好,但它的打印值为空。如何char
在java类中调用数据类型。我想我错过了一些东西。如何解决这个问题?