0
나는 안드로이드에 원격 PC 응용 프로그램을 만들고 있습니다. 나는 안드로이드 소켓을 통해 java 서버에 형식화 된 문자를 얻는 방법
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getAction()==KeyEvent.ACTION_DOWN){
int keyUniCode=event.getUnicodeChar(event.getMetaState());
if(keyUniCode!=0){
char charCode=(char) keyUniCode;
Log.i("Code:",""+keyUniCode);
SendMessage msg=new SendMessage(charCode);
msg.execute();
}
}
return super.dispatchKeyEvent(event);
}
AndroiClient.java
아래 쇼엔으로 누른 키의 keyunicode을 얻기 위해 코드를 작성했습니다 그리고 ITI는 PrintWriter
객체를 사용하여 해제 자바 서버를 받았습니다. JavaServer.java
public class KeyListener {
private Robot robot;
private static Socket client;
private static ServerSocket server;
private static InputStreamReader inputStreamReader;
private static BufferedReader bufferedReader;
private static String message;
private static KeyListener keyboard;
public static void main(String... args) throws Exception {
keyboard = new KeyListener();
server=new ServerSocket(6666);
System.out.println("Waiting");
while(true){
client=server.accept();
System.out.println("Accepted");
inputStreamReader=new InputStreamReader(client.getInputStream());
bufferedReader=new BufferedReader(inputStreamReader);
message=bufferedReader.readLine();
System.out.println(message);
keyboard.type(message);
}
}
public KeyListener() throws AWTException {
this.robot = new Robot();
}
public KeyListener(Robot robot) {
this.robot = robot;
}
public void type(CharSequence characters) {
int length = characters.length();
for (int i = 0; i < length; i++) {
char character = characters.charAt(i);
type(character);
}
}
class MyException extends IllegalArgumentException{
public MyException(String message) {
super(message);
}
}
public void type(char character) {
switch (character) {
case 'a': doType(VK_A); break;
case 'b': doType(VK_B); break;
case 'c': doType(VK_C); break;
case 'd': doType(VK_D); break;
case 'e': doType(VK_E); break;
.
.
.
.//other cases
.
.
.
case '\n': doType(VK_ENTER); break;
.
.
.
.//other cases
.
default:
throw new MyException("Cannot type character " + character);
}
}
private void doType(int... keyCodes) {
doType(keyCodes, 0, keyCodes.length);
}
private void doType(int[] keyCodes, int offset, int length) {
if (length == 0) {
return;
}
robot.keyPress(keyCodes[offset]);
doType(keyCodes, offset + 1, length - 1);
robot.keyRelease(keyCodes[offset]);
}
}
이제 문제는 오전 외장이 (가) 입력하고 백 스페이스 키가 안드로이드의 모든 유니 코드를 생성 나던입니다. 그래서 내가 얻을 수있는 방법을 입력하고 BacSpace 자바에 키 입력이 라인을 따라
은 네 것이 도움이 도움이 될 것입니다! 감사 –