Ejemplo n.º 1
0
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // new thread to create connection
    new Thread(
            new Runnable() {
              public void run() {
                String portStr = get_portStr();
                Log.v(TAG, portStr);

                if (portStr.equals("5554")) {
                  sendPort = 11112;
                } else if (portStr.equals("5556")) {
                  sendPort = 11108;
                } else Log.v(TAG, "AVD portStr is neither 5554 nor 5556");

                Log.v(
                    TAG,
                    "recvPort: "
                        + Integer.toString(recvPort)
                        + " sendPort: "
                        + Integer.toString(sendPort));
              }
            })
        .start();

    // listener embedded in this class only
    new Thread(
            new Runnable() {
              public void run() {
                Socket sock1 = null;
                DataInputStream din = null;
                ServerSocket servSocket = null;
                try {
                  servSocket = new ServerSocket(recvPort);
                  Log.v(TAG, "Server Socket port: " + Integer.toString(servSocket.getLocalPort()));
                } catch (IOException e) {
                  Log.v(ERRORTAG, "" + e.getMessage());
                  e.printStackTrace();
                }

                while (true) {
                  try {
                    sock1 = servSocket.accept();
                    Log.v(
                        TAG,
                        "sock1: "
                            + sock1.getInetAddress().getHostAddress()
                            + sock1.isConnected()
                            + Integer.toString(sock1.getLocalPort())
                            + Integer.toString(sock1.getPort()));
                    BufferedReader br =
                        new BufferedReader(new InputStreamReader(sock1.getInputStream()));
                    String str = br.readLine();
                    Log.v(TAG, "recvd msg: " + str);
                    updateTextView("<font color=\"#0000A0\"> <b>Rcvd: </b></font>" + str);
                  } catch (IOException e) {
                    Log.v(ERRORTAG, "" + e.getMessage());
                    e.printStackTrace();
                  } finally {
                    if (din != null)
                      try {
                        din.close();
                      } catch (IOException e) {
                        Log.v(ERRORTAG, "" + e.getMessage());
                        e.printStackTrace();
                      }
                    if (sock1 != null)
                      try {
                        sock1.close();
                      } catch (IOException e) {
                        Log.v(ERRORTAG, "" + e.getMessage());
                        e.printStackTrace();
                      }
                  }
                }
              }
            })
        .start();

    // now just create a thread to send a message
    final EditText editText = (EditText) findViewById(R.id.editText1);

    editText.setOnKeyListener(
        new OnKeyListener() {

          @Override
          public boolean onKey(View arg0, int keyCode, KeyEvent event) {
            if ((event.getAction() == KeyEvent.ACTION_DOWN)
                && (keyCode == KeyEvent.KEYCODE_ENTER)) {
              sendMessage(arg0);
            }
            return false;
          }
        });
  }