Переглянути джерело

Activity Class 객체 전달 인자 생성

june9152 5 роки тому
батько
коміт
df9fc1eb18

+ 36 - 17
app/src/main/java/com/example/repeater/MainActivity.java

@@ -36,9 +36,26 @@ public class MainActivity extends AppCompatActivity implements Runnable {
36 36
     String data;
37 37
     Button button_port,button_control;
38 38
     private Socket socket;  //소켓생성
39
-    /*** WIFI END***/
40 39
 
41 40
 
41
+    public boolean isConnection_Status() {
42
+        return Connection_Status;
43
+    }
44
+
45
+    public void setConnection_Status(boolean connection_Status) {
46
+        Connection_Status = connection_Status;
47
+        if(connection_Status){
48
+            Log.d("Port Close", "성공");
49
+            button_port.setText("Port Close");
50
+        }else{
51
+            Log.d("Port Open", "성공");
52
+            button_port.setText("Port Open");
53
+        }
54
+    }
55
+
56
+    /*** WIFI END***/
57
+    private boolean Connection_Status = false;
58
+
42 59
     ImageButton imageButton01;
43 60
     ImageButton imageButton02;
44 61
     @Override
@@ -140,25 +157,26 @@ public class MainActivity extends AppCompatActivity implements Runnable {
140 157
         adapter_rf_set.addItem("AGD Level","","","EDIT");
141 158
         adapter_rf_set.addItem("ISO Level","1.2Ver","","READ");
142 159
         adapter_rf_set.addItem("Temperature","1.3Ver","","READ");
143
-        // 버튼을 누르는 이벤트 발생, 이벤트 제어문이기 때문에 이벤트 발생 때마다 발동된다. 시스템이 처리하는 부분이 무한루프문에
144
-        //있더라도 이벤트가 발생하면 자동으로 실행된다.
145
-        try{
146
-            Runnable start = new MainActivity();
147
-            Thread T = new Thread(start);
148
-            T.start();
149
-            Log.d("MainActivity / 쓰레드 실행","성공");
150
-        }catch (Exception e){
151
-            Log.e("MainActivity / 쓰레드 실행","실패");
152
-        }
153
-
154 160
     }
155 161
     public void onClick(View view) {
156 162
         switch(view.getId()) {
157 163
             case R.id.button_port:
158
-                if(button_port.getText() == "Port Close")
159
-                    button_port.setText("Port Open");
160
-                else
161
-                    button_port.setText("Port Close");
164
+                if(button_port.getText() == "Port Close") {
165
+                    setConnection_Status(false);
166
+                }
167
+                else {
168
+                    // 버튼을 누르는 이벤트 발생, 이벤트 제어문이기 때문에 이벤트 발생 때마다 발동된다. 시스템이 처리하는 부분이 무한루프문에
169
+                    //있더라도 이벤트가 발생하면 자동으로 실행된다.
170
+                    try{
171
+                        Runnable start = new MainActivity();
172
+                        Thread T = new Thread(start);
173
+                        T.start();
174
+                        Log.d("MainActivity / 쓰레드 실행","성공");
175
+                        setConnection_Status(true);
176
+                    }catch (Exception e){
177
+                        Log.e("MainActivity / 쓰레드 실행","실패");
178
+                    }
179
+                }
162 180
                 break;
163 181
             case R.id.button_control:
164 182
                 if(button_control.getText() == "Status") {
@@ -227,12 +245,13 @@ public class MainActivity extends AppCompatActivity implements Runnable {
227 245
 
228 246
     @Override
229 247
     public void run() {
230
-        connect con = new connect();
248
+        connect con = new connect(this);
231 249
         con.run();
232 250
         try {
233 251
             Log.d("MainActivity / Run 함수 실행", "성공");
234 252
         }catch(Exception e){
235 253
             Log.e("MainActivity / Run 함수 실행", "실패");
254
+            setConnection_Status(false);
236 255
         }
237 256
 
238 257
     }

+ 7 - 4
app/src/main/java/com/example/repeater/connect.java

@@ -1,5 +1,6 @@
1 1
 package com.example.repeater;
2 2
 
3
+import android.content.Context;
3 4
 import android.util.Log;
4 5
 
5 6
 import java.net.Socket;
@@ -10,22 +11,24 @@ public class connect implements Runnable  {
10 11
     private String ip = "192.168.10.4";
11 12
     private Socket socket;
12 13
     private Timer timer = null;
13
-
14
-    public connect() {
14
+    private Context mContext = null;
15
+    public connect(Context context) {
15 16
         try {
17
+            this.mContext = context;
16 18
             socket = new Socket(ip, port);    //서버에 연결
17 19
             timer = new Timer();
18 20
             Log.d("connect.class / 소켓 연결", "성공");
19 21
         }
20 22
         catch(Exception e) {
21 23
             Log.e("connect.class / 소켓 연결", "실패");
24
+            ((MainActivity)mContext).setConnection_Status(false);
22 25
         }
23 26
     }
24 27
     @Override
25 28
     public void run() {
26
-        // TODO Auto-generated method stub
29
+    // TODO Auto-generated method stub
27 30
         send s = new send(socket);    //서버에 연결된 socket을 생성자를 통해 넘긴다
28
-        receive r = new receive(socket);  //서버에 연결된 socket을 생성자를 통해 넘긴다
31
+        receive r = new receive(socket, this.mContext);  //서버에 연결된 socket을 생성자를 통해 넘긴다
29 32
         timer.scheduleAtFixedRate(s, 1000, 7000);
30 33
         r.run();        //스레드 실행
31 34
     }

+ 3 - 4
app/src/main/java/com/example/repeater/receive.java

@@ -1,5 +1,6 @@
1 1
 package com.example.repeater;
2 2
 
3
+import android.content.Context;
3 4
 import android.util.Log;
4 5
 
5 6
 import java.io.BufferedReader;
@@ -19,8 +20,8 @@ public class receive implements Runnable{
19 20
     private int numberOfBytesRead = 0;
20 21
     private char buff[] = new char[1024];
21 22
     private Socket m_socket = null;
22
-
23
-    public receive(Socket socket) {         //생성자를 통하여 소켓을 받아온다
23
+    private Context mContext = null;
24
+    public receive(Socket socket, Context context) {         //생성자를 통하여 소켓을 받아온다
24 25
         try {
25 26
             m_socket = socket;          //서버에 접속된 소켓 파일 디스크립터 저장
26 27
             in = new InputStreamReader(m_socket.getInputStream());  //전송 객체 초기화
@@ -37,8 +38,6 @@ public class receive implements Runnable{
37 38
         // TODO Auto-generated method stub
38 39
         try {
39 40
             while(true) {
40
-
41
-
42 41
                 myCompleteMessage = new StringBuilder();    //StringBuilder 객체 초기화
43 42
                 buffRead = new BufferedReader(new InputStreamReader(m_socket.getInputStream()));
44 43
                 numberOfBytesRead = buffRead.read(buff, 0, buff.length);//char 배열 buff에 받아들이고