使用AndroidNDK测试Linux驱动 第2页

nbsp;        //  将int类型的单词数转换成jint类型的单词数  
30.    wordcount = (jint) n; 
31.    //  关闭/dev/wordcount设备文件  
32.    close(dev); 
33.    //  返回单词数  
34.    return wordcount; 
35.} 
36.//  将jstring类型的值转换成char *类型的值  
37.char* jstring_to_pchar(JNIEnv* env, jstring str) 
38.{ 
39.    char* pstr = NULL; 
40.    //  下面的代码会调用Java中的String.getBytes方法获取字符串的字节数  
41. 
42.    //  获取java.lang.String类  
43.    jclass clsstring = (*env)->FindClass(env, "java/lang/String"); 
44.    //  将字符串“utf-8”转换成jstring类型的值  
45.    jstring strencode = (*env)->NewStringUTF(env, "utf-8"); 
46.    //  获取java.lang.String.getBytes方法  
47.    jmethodID mid = (*env)->GetMethodID(env, clsstring, "getBytes", "(Ljava/lang/String;)[B"); 
48.    //  调用String.getBytes方法将str变量的值转换成jbytearray类型的值  
49.    jbyteArray byteArray = (jbyteArray)( (*env)->CallObjectMethod(env, str, mid, strencode)); 
50.    //  获取字节长度  
51.    jsize size = (*env)->GetArrayLength(env, byteArray); 
52.    //  将jbytearray类型的值转换成jbyte*类型的值  
53.    jbyte* pbyte = (*env)->GetByteArrayElements(env, byteArray, JNI_FALSE); 
54.    if (size > 0) 
55.    { 
56.        //  为char*类型变量pstr分配空间  
57.        pstr = (char*) malloc(size); 
58.        //  将pbyte变量中的值复制到pstr变量中  
59.        memcpy(pstr, pbyte, size); 
60.    } 
61.    //  返回转换后的值  
62.    return pstr; 
63.} 
64.//  JNI函数:writeStringToDev  
65.//  用于向/dev/wordcount设备文件写入字符串  
66.void Java_mobile_android_word_count_ndk_WordCountNDKTestMain_writeStringToDev( 
67.        JNIEnv* env, jobject thiz, jstring str) 
68.{ 
69. 
70.    int dev;   //  open函数打开/dev/wordcount设备文件后返回的句柄,打开失败返回-1  
71.    //  以只写方式打开/dev/wordcount设备文件  
72.    dev = open("/dev/wordcount", O_WRONLY); 
73.    //  将jstring类型字符串转换成char* 类型的值  
74.    char

上一页  [1] [2] [3] [4] [5] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有