Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过Android键盘控制Windows?_Java_Android_Sockets_Keylistener_Keyevent - Fatal编程技术网

Java 如何通过Android键盘控制Windows?

Java 如何通过Android键盘控制Windows?,java,android,sockets,keylistener,keyevent,Java,Android,Sockets,Keylistener,Keyevent,我成功地在客户端为Android创建了移动应用程序 然后服务器端,也就是windows服务器代码也创建了。我能打所有的字母和数字 我的问题是使用shift键和“@”键。我的项目需要“@”。当我按下“@”键时,连接中断并说 无效的密钥代码 在sun.awt.windows.WRobotPeer.keyPress中(本机方法) 位于java.awt.Robot.keyPress(未知源) 在pcHotkey.keyboardServer$capitaler.run 现在,我应该如何用我的应用程序键入

我成功地在客户端为Android创建了移动应用程序

然后服务器端,也就是windows服务器代码也创建了。我能打所有的字母和数字

我的问题是使用shift键和“@”键。我的项目需要“@”。当我按下“@”键时,连接中断并说

无效的密钥代码 在sun.awt.windows.WRobotPeer.keyPress中(本机方法) 位于java.awt.Robot.keyPress(未知源) 在pcHotkey.keyboardServer$capitaler.run

现在,我应该如何用我的应用程序键入“@”。然后我按下shift键,它正确通过,并没有停止按下的状态

我的代码在这里

头等舱:
aMap.put(“移位”,KeyEvent.VK_移位);
aMap.put(“At”,KeyEvent.VK_At);
试一试{
机器人=新机器人();
}
捕获(例外e)
{}
ServerSocket侦听器=新的ServerSocket(9898);
试一试{
while(true){
新的大写字母(listener.accept(),clientNumber++).start();
}
}最后{
listener.close();
}        
二等舱:
公共大写字母(Socket Socket,int clientNumber){
this.socket=socket;
this.clientNumber=clientNumber;
日志(“与客户端的新连接”#“+clientNumber+”位于“+socket”);
}
公开募捐{
试一试{
BufferedReader in=新的BufferedReader(
新的InputStreamReader(socket.getInputStream());
PrintWriter out=新的PrintWriter(socket.getOutputStream(),true);
//向客户发送欢迎信息。
println(“您好,您是客户”#“+clientNumber+”);
out.println(“输入一行,其中只有一个退出周期\n”);
while(true){
字符串输入=in.readLine();
系统输出打印项次(输入);
if(输入等于(“大写”)){
getDefaultToolkit().setLockingKeyState(KeyEvent.VK_CAPS_LOCK,true);
;
}
else if(输入等于(“At”))
{
日志(“日志值:”+输入);
//getDefaultToolkit().setLockingKeyState(KeyEvent.VK_SHIFT,true);
机器人按键(aMap.get(“At”));
//getDefaultToolkit().setLockingKeyState(KeyEvent.VK_SHIFT,true);
}
其他的
机器人按键(aMap.get(input));
}
}捕获(IOE异常){
日志(“错误处理客户端#“+clientNumber+”:“+e”);
}最后{
试一试{
socket.close();
}捕获(IOE异常){
日志(“无法关闭套接字,发生了什么事?”);
}
日志(“与客户端的连接#”+客户端号+“已关闭”);

}
我通过传递“SHIFT”和“2”的键码完成了此操作。问题现在已得到解决。

至少插入“@”符号就足够了。如何解决此问题?有人能帮忙吗?提前谢谢。