2015-01-16 5 views
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 자바에 키 입력이 라인을 따라

답변

2

뭔가

public boolean dispatchKeyEvent(KeyEvent event) { 
    if(event.getAction()==KeyEvent.ACTION_DOWN){ 
     if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) { 
      SendMessage msg = new SendMessage(some identifier for enter); 
     } else if (event.getKeyCode() == KeyEvent.KEYCODE_DEL) { 
      SendMessage msg = new SendMessage(some identifier for delete); 
     } else { 

      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); 
} 
+0

은 네 것이 도움이 도움이 될 것입니다! 감사 –