このようなNDKアプリケーション用のcファイル(ht_NDK.c)の関数が1つあります。
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();
}
}
ボタンを押すたびに値がコンソールに出力されるように、すべて問題ありませんが、null 値が出力されます。char
Java クラスでデータ型を呼び出す方法。私は何かが欠けていると思います。これを解決するには?