JNIEXPORT jint JNICALL Java_com_example_libdemo_类名_Init
(JNIEnv *jenv, jclass jc, jstring jdevName)
{
char* devName = (char *)(jenv->GetStringUTFChars(jdevName, 0));
char gDevName2[128] = {0};
strcpy(gDevName2, devName);
jenv->ReleaseStringUTFChars(jdevName, devName);
return 0;
}
JNIEXPORT jbyteArray JNICALL Java_com_example_libdemo_类名_func
(JNIEnv *jenv, jclass jc)
{
unsigned char res[3074] = {0x10, 0x0a,0x0b,0x0c,0x0e, 0x0f};
unsigned int resLen = 6;
jbyteArray jres = NULL;
jres = jenv->NewByteArray(resLen);
jenv->SetByteArrayRegion(jres, 0, resLen, (jbyte*)res);
return jres;
}
(3)java中调用 func
byte[] recvData = 类名.func();
if (recvData != null)
{
// 在文本框中显示
EditText editText3 =(EditText)findViewById(R.id.editText3);
editText3.setText(byteArrayToHex(recvData).toCharArray(), 0, byteArrayToHex(recvData).length());
}
Java byteArrayToHex实现:
public static String byteArrayToHex(byte[] a) {
StringBuilder sb = new StringBuilder();
for(byte b: a)
sb.append(String.format("%02x", b&0xff));
return sb.toString();
}
C 字符串转成十六进制,例如字符串“0084000008”转换成 十六进制 00 84 00 00 08
static void tohex(char *hh, unsigned char *dd,int len)
{
int i = 0;
char h1,h2;
unsigned char s1,s2;
for (i=0;i<len;i++){
h1 = hh[2*i];
h2 = hh[2*i+1];
s1 = toupper(h1) - 0x30;
if (s1 > 9) s1 -= 3;
s2 = toupper(h2) - 0x30;
if (s2 > 9) s2 -= 3;
dd[i] = s1*16 + s2;
}
}
//用EditText前,请先:import android.widget.EditText;
//获取文本框1的文本
String str1="";
EditText editText1 =(EditText)findViewById(R.id.editText1);
str1=editText1.getText().toString();
//将文本框1的文本赋给文本框2
EditText editText2 =(EditText)findViewById(R.id.editText2);
editText2.setText(str1.toCharArray(), 0, str1.length());