PowerSH / HackerTrain

0 stars 0 forks source link

안드로이드 #9

Open 710csm opened 5 years ago

710csm commented 5 years ago

package com.example.chois.myapp;

import android.content.Intent; import android.os.StrictMode; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText;

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket;

public class MainActivity extends AppCompatActivity {

Button btn;
Button sh;
EditText tv;

private String tx="";
private Socket clientSocket;
private BufferedReader socketIn;
private PrintWriter socketOut;
private int port = 11111;
private final String ip = "210.115.226.109";

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // StrictMode는 개발자가 실수하는 것을 감지하고 해결할 수 있도록 돕는 일종의 개발 툴
    // - 메인 스레드에서 디스크 접근, 네트워크 접근 등 비효율적 작업을 하려는 것을 감지하여
    //   프로그램이 부드럽게 작동하도록 돕고 빠른 응답을 갖도록 함, 즉  Android Not Responding 방지에 도움
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    try {
        clientSocket = new Socket(ip, port);
        socketIn = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        socketOut = new PrintWriter(clientSocket.getOutputStream(), true);
    } catch (Exception e) {
        e.printStackTrace();
    }

    btn = (Button) findViewById(R.id.btn);
    sh = (Button) findViewById(R.id.share);
    tv = (EditText) findViewById(R.id.tv);

    tv.setFocusable(false);
    tv.setClickable(false);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("csm","보냄");
            try {
                // InputStream의 값을 읽어와서 data에 저장
                String data;
                while((data = socketIn.readLine()) != null){
                    Log.d("csm",data);
                    tv.setText(data);
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

    sh.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("csm","눌림");
            Intent msg = new Intent(Intent.ACTION_SEND);

           tx += tv.getText();

            msg.addCategory(Intent.CATEGORY_DEFAULT);
            msg.putExtra(Intent.EXTRA_SUBJECT, "지하철 상태");
            msg.putExtra(Intent.EXTRA_TEXT, tx);
            msg.putExtra(Intent.EXTRA_TITLE, "지하철");
            msg.setType("text/plain");
            startActivity(Intent.createChooser(msg, "공유"));
        }
    });
}

}

710csm commented 5 years ago

package com.example.chois.myapp;

import android.content.Intent; import android.graphics.Color; import android.os.StrictMode; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText;

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket;

public class MainActivity extends AppCompatActivity {

Button btn;
Button sh;
EditText tv;
private String data = "-1";
private String tx="";
private Socket clientSocket;
private BufferedReader socketIn;
private PrintWriter socketOut;
private int port = 11111;
private final String ip = "210.115.226.109";
private  MyThread thread;

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // StrictMode는 개발자가 실수하는 것을 감지하고 해결할 수 있도록 돕는 일종의 개발 툴
    // - 메인 스레드에서 디스크 접근, 네트워크 접근 등 비효율적 작업을 하려는 것을 감지하여
    //   프로그램이 부드럽게 작동하도록 돕고 빠른 응답을 갖도록 함, 즉  Android Not Responding 방지에 도움
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    try {
        clientSocket = new Socket(ip, port);
        socketIn = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        socketOut = new PrintWriter(clientSocket.getOutputStream(), true);
    } catch (Exception e) {
        e.printStackTrace();
    }

    btn = (Button) findViewById(R.id.btn);
    sh = (Button) findViewById(R.id.share);
    tv = (EditText) findViewById(R.id.tv);

    tv.setFocusable(false);
    tv.setClickable(false);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            socketOut.println("and:");
            Log.d("csm","and:보냄");

            thread = new MyThread();
            thread.start();

            if(data.equals("-1")){
                tv.setText("접속이 원할하지 않습니다.");
            }else if(data.equals("0")){
                tv.setText("쾌적");
                tv.setTextColor(Color.parseColor("#0CFF10"));
            }else if(data.equals("1")){
                   tv.setText("보통");
                   tv.setTextColor(Color.parseColor("#100BFF"));
            }else if(data.equals("2")){
                tv.setText("혼잡");
                tv.setTextColor(Color.parseColor("#FF0400"));
            }
        }
    });

    sh.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("csm","눌림");
            Intent msg = new Intent(Intent.ACTION_SEND);

           tx += tv.getText();

            msg.addCategory(Intent.CATEGORY_DEFAULT);
            msg.putExtra(Intent.EXTRA_SUBJECT, "지하철 상태");
            msg.putExtra(Intent.EXTRA_TEXT, tx);
            msg.putExtra(Intent.EXTRA_TITLE, "지하철");
            msg.setType("text/plain");
            startActivity(Intent.createChooser(msg, "공유"));
        }
    });
}

class MyThread extends Thread {
    @Override
    public void run() {
        try{
            if((socketIn.readLine())==null){
                data = "-1";
                Log.d("csm",data);
            }else{
                data = socketIn.readLine();
                Log.d("csm",data);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

}