其实就是把sendevent的代码放到了jni层,这样速度很快,我用输入法试了一下,如果在android里执行sendevent命令发一个点击命令,从发送到上屏至少是800多ms,如果直接用jni调用也就10ms左右。
</pre><pre name="code" class="cpp">#include <jni.h>#include <errno.h>#include <fcntl.h>#include <linux/input.h>#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/ioctl.h>#include <unistd.h>extern "C" {    JNIEXPORT int JNICALL Java_sogou_test_kpi_TestActivity_sendevent(JNIEnv * env, jobject obj,int argc, jobjectArray strArray);}JNIEXPORT int JNICALL Java_sogou_test_kpi_TestActivity_sendevent(JNIEnv * env,jobject obj,int argc, jobjectArray strArray){jstring jstr;jsize len = argc;char **argv = (char **) malloc(len*sizeof(char *));jsize i=0;for (i=0 ; i<len; i++) {jstr = (jstring)env->GetObjectArrayElement(strArray, i);argv[i] = (char *)env->GetStringUTFChars(jstr, 0);}argc = len;    int fd;    ssize_t ret;    int version;struct input_event event;    if(argc != 5) {    close(fd);//fprintf(stderr, "use: %s device type code value\n", argv[0]);        return 1;    }    fd = open(argv[1], O_RDWR);    if(fd < 0) {    close(fd);//fprintf(stderr, "could not open %s, %s\n", argv[optind], strerror(errno));        return 2;    }    if (ioctl(fd, EVIOCGVERSION, &version)) {    close(fd);//fprintf(stderr, "could not get driver version for %s, %s\n", argv[optind], strerror(errno));        return 3;    }    memset(&event, 0, sizeof(event));    event.type = atoi(argv[2]);    event.code = atoi(argv[3]);    event.value = atoi(argv[4]);    ret = write(fd, &event, sizeof(event));    if(ret < (ssize_t) sizeof(event)) {    close(fd);        //fprintf(stderr, "write event failed, %s\n", strerror(errno));        return -1;    }    close(fd);    return 0;}


更多相关文章

  1. Android调用webservice接口
  2. Android电池驱动
  3. Android(安卓)Camera从App层到framework层到HAL层的初始化过程
  4. Android(安卓)SurfaceFlinger 学习之路(五)----VSync 工作原理
  5. EP28-DownloadManager分析(1)
  6. Android视图加载流程(3)之ViewRootImpl的UI刷新机制
  7. Android(安卓)内存溢出(Out Of Memory)
  8. Android(安卓)P wakeup 亮屏流程
  9. 004. Android界面刷新没有调用OnMeasure

随机推荐

  1. Android(安卓)方向传感器 (Orientation Se
  2. View事件传递分析
  3. 深入理解Activity启动流程(一)–Activity
  4. Android应用使用自定义字体
  5. Android - Android Studio 的 Preview窗
  6. Android中visibility的3个属性说明
  7. Android 中文api (81)——InputMethod [
  8. Android MimeType和MimeTypeMap的介绍
  9. android之Progress
  10. Textview基本属性及功能