android 模拟键盘鼠标
来源:互联网 发布:php取出数组最大值 编辑:程序博客网 时间:2024/06/05 03:10
1,新建一个android 项目
2,新建主activity类
package test.yutel;import android.app.Activity;import android.os.Bundle;public class RemoteActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main); Servers s=new Servers(); s.start(); finish();}}
2,新建一个多线程序类
package test.yutel;public class Servers extends Thread {public Servers() {}public void run() {send();}public native String send();static {System.loadLibrary("myserver");}}
3,通过javah 生成c语言的头文件
4,新建一个C语言文件
#include <jni.h>#define LOG_TAG "myserver"#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, fmt, ##args)#include <android/log.h>#include <string.h>#include <errno.h> #include <stdio.h> #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <linux/input.h>#include <sys/time.h>#include <sys/types.h>#include <unistd.h>void simulate_key(int fd,int kval) {struct input_event event; event.type = EV_KEY; event.value = 1; event.code = kval;gettimeofday(&event.time,0); write(fd,&event,sizeof(event)) ;event.type = EV_SYN; event.code = SYN_REPORT; event.value = 0; write(fd, &event, sizeof(event)); memset(&event, 0, sizeof(event)); gettimeofday(&event.time, NULL); event.type = EV_KEY; event.code = kval; event.value = 0; write(fd, &event, sizeof(event)); event.type = EV_SYN; event.code = SYN_REPORT; event.value = 0; write(fd, &event, sizeof(event));}void simulate_mouse(int fd){struct input_event event;memset(&event, 0, sizeof(event));gettimeofday(&event.time, NULL);event.type = EV_REL;event.code = REL_X;event.value = 10;write(fd, &event, sizeof(event));event.type = EV_REL;event.code = REL_Y;event.value = 10;write(fd, &event, sizeof(event));event.type = EV_SYN;event.code = SYN_REPORT;event.value = 0;write(fd, &event, sizeof(event));}JNIEXPORT jstring JNICALL Java_test_yutel_Servers_send (JNIEnv* env, jobject obj){int fd_kbd = open("/dev/input/event3",O_RDWR);if(fd_kbd<=0){LOGD("open keybd error:%s",strerror(errno));return -2; }int fd_mouse = open("/dev/input/event4",O_RDWR); if(fd_mouse<=0){ LOGD("open mouse error:%s",strerror(errno)); return -2; }int i = 0; for(i=0; i< 10; i++) { simulate_key(fd_kbd, KEY_A + i);simulate_mouse(fd_mouse);sleep(1); }close(fd_kbd);close(fd_mouse);LOGD("Hello LIB!"); return (*env)->NewStringUTF(env, (char *)"JNITest Native String"); }
5,新建Android.mk文件
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= \ myserver.cLOCAL_C_INCLUDES := \ $(JNI_H_INCLUDE)#LOCAL_SHARED_LIBRARIES := libutilsLOCAL_LDLIBS := -llogLOCAL_PRELINK_MODULE := falseLOCAL_MODULE := myserverinclude $(BUILD_SHARED_LIBRARY)
5,采用ndk-build进行编译成so文件
6,在eclipse中编译本项目
7,用signapk工具将生成的apk采用系统密钥文件进行签名(工具:build/tools/signapk | 密钥文件:build/target/product/security)
signapk platform.x509.pem platform.pk8 input.apk output.apk
8,将output.apk安装到手机里就可以了。
- android 模拟键盘鼠标
- android模拟键盘鼠标
- Android模拟键盘鼠标事件
- Android 模拟键盘鼠标事件
- Android模拟键盘鼠标事件
- android 模拟键盘鼠标事件相关
- android 模拟键盘鼠标事件(adb shell)
- android 模拟键盘鼠标事件(adb shell)
- Android系统模拟鼠标键盘详解
- 鼠标、键盘模拟技术
- 模拟鼠标/键盘
- 鼠标键盘模拟技术
- 模拟鼠标/键盘
- 模拟鼠标键盘事件
- 模拟键盘鼠标操作
- 鼠标键盘模拟
- 键盘鼠标的模拟
- 模拟鼠标键盘操作
- 创建、移动或删除文件后不会刷新 Windows 资源管理器文件夹中的文件列表
- Objective-C名词解释
- java访问xml文件
- RadioButton创建成员变量
- margin属性
- android 模拟键盘鼠标
- 使用JAVA读写Properties属性文件
- Android实现简单的相册
- 编译64位的QtCreator
- office_note_auto_create
- java中抽象类跟接口的区别
- C#操作Excel(2)-- 打开-读取Excel文档
- 第六周实验报告 任务三(改进)
- 如何使用SOCKET 发送HTTP1.1 GET POST请求包