Browse Source

Activity Class 객체 전달 인자 생성

june9152 5 years ago
parent
commit
df9fc1eb18

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

@@ -36,9 +36,26 @@ public class MainActivity extends AppCompatActivity implements Runnable {
36
     String data;
36
     String data;
37
     Button button_port,button_control;
37
     Button button_port,button_control;
38
     private Socket socket;  //소켓생성
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
     ImageButton imageButton01;
59
     ImageButton imageButton01;
43
     ImageButton imageButton02;
60
     ImageButton imageButton02;
44
     @Override
61
     @Override
@@ -140,25 +157,26 @@ public class MainActivity extends AppCompatActivity implements Runnable {
140
         adapter_rf_set.addItem("AGD Level","","","EDIT");
157
         adapter_rf_set.addItem("AGD Level","","","EDIT");
141
         adapter_rf_set.addItem("ISO Level","1.2Ver","","READ");
158
         adapter_rf_set.addItem("ISO Level","1.2Ver","","READ");
142
         adapter_rf_set.addItem("Temperature","1.3Ver","","READ");
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
     public void onClick(View view) {
161
     public void onClick(View view) {
156
         switch(view.getId()) {
162
         switch(view.getId()) {
157
             case R.id.button_port:
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
                 break;
180
                 break;
163
             case R.id.button_control:
181
             case R.id.button_control:
164
                 if(button_control.getText() == "Status") {
182
                 if(button_control.getText() == "Status") {
@@ -227,12 +245,13 @@ public class MainActivity extends AppCompatActivity implements Runnable {
227
 
245
 
228
     @Override
246
     @Override
229
     public void run() {
247
     public void run() {
230
-        connect con = new connect();
248
+        connect con = new connect(this);
231
         con.run();
249
         con.run();
232
         try {
250
         try {
233
             Log.d("MainActivity / Run 함수 실행", "성공");
251
             Log.d("MainActivity / Run 함수 실행", "성공");
234
         }catch(Exception e){
252
         }catch(Exception e){
235
             Log.e("MainActivity / Run 함수 실행", "실패");
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
 package com.example.repeater;
1
 package com.example.repeater;
2
 
2
 
3
+import android.content.Context;
3
 import android.util.Log;
4
 import android.util.Log;
4
 
5
 
5
 import java.net.Socket;
6
 import java.net.Socket;
@@ -10,22 +11,24 @@ public class connect implements Runnable  {
10
     private String ip = "192.168.10.4";
11
     private String ip = "192.168.10.4";
11
     private Socket socket;
12
     private Socket socket;
12
     private Timer timer = null;
13
     private Timer timer = null;
13
-
14
-    public connect() {
14
+    private Context mContext = null;
15
+    public connect(Context context) {
15
         try {
16
         try {
17
+            this.mContext = context;
16
             socket = new Socket(ip, port);    //서버에 연결
18
             socket = new Socket(ip, port);    //서버에 연결
17
             timer = new Timer();
19
             timer = new Timer();
18
             Log.d("connect.class / 소켓 연결", "성공");
20
             Log.d("connect.class / 소켓 연결", "성공");
19
         }
21
         }
20
         catch(Exception e) {
22
         catch(Exception e) {
21
             Log.e("connect.class / 소켓 연결", "실패");
23
             Log.e("connect.class / 소켓 연결", "실패");
24
+            ((MainActivity)mContext).setConnection_Status(false);
22
         }
25
         }
23
     }
26
     }
24
     @Override
27
     @Override
25
     public void run() {
28
     public void run() {
26
-        // TODO Auto-generated method stub
29
+    // TODO Auto-generated method stub
27
         send s = new send(socket);    //서버에 연결된 socket을 생성자를 통해 넘긴다
30
         send s = new send(socket);    //서버에 연결된 socket을 생성자를 통해 넘긴다
28
-        receive r = new receive(socket);  //서버에 연결된 socket을 생성자를 통해 넘긴다
31
+        receive r = new receive(socket, this.mContext);  //서버에 연결된 socket을 생성자를 통해 넘긴다
29
         timer.scheduleAtFixedRate(s, 1000, 7000);
32
         timer.scheduleAtFixedRate(s, 1000, 7000);
30
         r.run();        //스레드 실행
33
         r.run();        //스레드 실행
31
     }
34
     }

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

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