Browse Source

Connect 에 MainActivity 상속받을 수 있도록 수정 /ListViewAdapter Log 제거 / Run Class Thread 생성 /

june9152 5 years ago
parent
commit
af5f8f4252

+ 116 - 0
.idea/codeStyles/Project.xml

@@ -0,0 +1,116 @@
1
+<component name="ProjectCodeStyleConfiguration">
2
+  <code_scheme name="Project" version="173">
3
+    <codeStyleSettings language="XML">
4
+      <indentOptions>
5
+        <option name="CONTINUATION_INDENT_SIZE" value="4" />
6
+      </indentOptions>
7
+      <arrangement>
8
+        <rules>
9
+          <section>
10
+            <rule>
11
+              <match>
12
+                <AND>
13
+                  <NAME>xmlns:android</NAME>
14
+                  <XML_ATTRIBUTE />
15
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
16
+                </AND>
17
+              </match>
18
+            </rule>
19
+          </section>
20
+          <section>
21
+            <rule>
22
+              <match>
23
+                <AND>
24
+                  <NAME>xmlns:.*</NAME>
25
+                  <XML_ATTRIBUTE />
26
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
27
+                </AND>
28
+              </match>
29
+              <order>BY_NAME</order>
30
+            </rule>
31
+          </section>
32
+          <section>
33
+            <rule>
34
+              <match>
35
+                <AND>
36
+                  <NAME>.*:id</NAME>
37
+                  <XML_ATTRIBUTE />
38
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
39
+                </AND>
40
+              </match>
41
+            </rule>
42
+          </section>
43
+          <section>
44
+            <rule>
45
+              <match>
46
+                <AND>
47
+                  <NAME>.*:name</NAME>
48
+                  <XML_ATTRIBUTE />
49
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
50
+                </AND>
51
+              </match>
52
+            </rule>
53
+          </section>
54
+          <section>
55
+            <rule>
56
+              <match>
57
+                <AND>
58
+                  <NAME>name</NAME>
59
+                  <XML_ATTRIBUTE />
60
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
61
+                </AND>
62
+              </match>
63
+            </rule>
64
+          </section>
65
+          <section>
66
+            <rule>
67
+              <match>
68
+                <AND>
69
+                  <NAME>style</NAME>
70
+                  <XML_ATTRIBUTE />
71
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
72
+                </AND>
73
+              </match>
74
+            </rule>
75
+          </section>
76
+          <section>
77
+            <rule>
78
+              <match>
79
+                <AND>
80
+                  <NAME>.*</NAME>
81
+                  <XML_ATTRIBUTE />
82
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
83
+                </AND>
84
+              </match>
85
+              <order>BY_NAME</order>
86
+            </rule>
87
+          </section>
88
+          <section>
89
+            <rule>
90
+              <match>
91
+                <AND>
92
+                  <NAME>.*</NAME>
93
+                  <XML_ATTRIBUTE />
94
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
95
+                </AND>
96
+              </match>
97
+              <order>ANDROID_ATTRIBUTE_ORDER</order>
98
+            </rule>
99
+          </section>
100
+          <section>
101
+            <rule>
102
+              <match>
103
+                <AND>
104
+                  <NAME>.*</NAME>
105
+                  <XML_ATTRIBUTE />
106
+                  <XML_NAMESPACE>.*</XML_NAMESPACE>
107
+                </AND>
108
+              </match>
109
+              <order>BY_NAME</order>
110
+            </rule>
111
+          </section>
112
+        </rules>
113
+      </arrangement>
114
+    </codeStyleSettings>
115
+  </code_scheme>
116
+</component>

+ 2 - 3
app/src/main/java/com/example/repeater/ListViewAdapter.java

@@ -62,7 +62,6 @@ public class ListViewAdapter extends BaseAdapter {
62 62
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
63 63
                 temp_str[0] = s.toString();
64 64
 //                Log.d("getView",temp_str[0] );
65
-
66 65
             }
67 66
 
68 67
             @Override
@@ -92,7 +91,7 @@ public class ListViewAdapter extends BaseAdapter {
92 91
 
93 92
             @Override
94 93
             public void afterTextChanged(Editable s) {
95
-                Log.d("EDIT TEXT POSITION1 : ", String.valueOf(pos));
94
+//                Log.d("EDIT TEXT POSITION1 : ", String.valueOf(pos));
96 95
                 filteredItemList.get(holder.ref).setVal(s.toString());
97 96
 
98 97
             }
@@ -111,7 +110,7 @@ public class ListViewAdapter extends BaseAdapter {
111 110
 
112 111
             @Override
113 112
             public void afterTextChanged(Editable s) {
114
-                Log.d("EDIT TEXT POSITION2 :  ", String.valueOf(pos));
113
+//                Log.d("EDIT TEXT POSITION2 :  ", String.valueOf(pos));
115 114
 
116 115
                 filteredItemList.get(holder.ref).setVal2(s.toString());
117 116
             }

+ 52 - 18
app/src/main/java/com/example/repeater/MainActivity.java

@@ -3,6 +3,7 @@ package com.example.repeater;
3 3
 import android.content.Context;
4 4
 import android.content.Intent;
5 5
 import android.graphics.Color;
6
+import android.os.Handler;
6 7
 import android.support.v7.app.AppCompatActivity;
7 8
 import android.os.Bundle;
8 9
 import android.util.Log;
@@ -40,27 +41,27 @@ public class MainActivity extends AppCompatActivity implements Runnable,OnClickL
40 41
     PrintWriter out;        //서버에 데이터를 전송한다.
41 42
     TextView textView_status;
42 43
     String data;
43
-    Button button_port,button_control,listView_button;
44
+    public Button button_port,button_control,listView_button;
44 45
     public Context mContext;
45 46
     private Socket socket;  //소켓생성
46
-
47
+    public boolean Connection_Status = false;
47 48
     public boolean isConnection_Status() {
48 49
         return Connection_Status;
49 50
     }
50 51
     public static int DATA_TEST = 0;
51 52
     public void setConnection_Status(boolean connection_Status) {
52 53
         Connection_Status = connection_Status;
53
-        if(connection_Status){
54
-            Log.d("Port Close", "성공");
54
+        if(Connection_Status){
55
+            Log.d("setConnection_Status", String.valueOf(Connection_Status));
55 56
             button_port.setText("Port Close");
56 57
         }else{
57
-            Log.d("Port Open", "성공");
58
+            Log.d("setConnection_Status", String.valueOf(Connection_Status));
58 59
             button_port.setText("Port Open");
59 60
         }
60 61
     }
61 62
 
62 63
     /*** WIFI END***/
63
-    private boolean Connection_Status = false;
64
+
64 65
 
65 66
     ImageButton imageButton01;
66 67
     ImageButton imageButton02;
@@ -76,7 +77,6 @@ public class MainActivity extends AppCompatActivity implements Runnable,OnClickL
76 77
         super.onCreate(savedInstanceState);
77 78
         setContentView(R.layout.activity_main);
78 79
         Log.d("MainActivity / Oncreate 실행","성공");
79
-        DATA_TEST = 33;
80 80
         //        listview_info_set.setOnItemClickListener(this);
81 81
 //        listview_rf_set.setOnItemClickListener(this);
82 82
         listView_button = findViewById(R.id.listView_button);
@@ -227,23 +227,28 @@ public class MainActivity extends AppCompatActivity implements Runnable,OnClickL
227 227
     {
228 228
         Log.d("Click Success : " + adapter_info_set.getItemId(0), "성공");
229 229
     }
230
-
231
-
230
+    Runnable start = new RunnableImplements(this);
231
+    Thread T = new Thread(start);
232 232
     public void onClick(View view) {
233 233
         switch(view.getId()) {
234 234
             case R.id.button_port:
235
+
235 236
                 if(button_port.getText() == "Port Close") {
236 237
                     setConnection_Status(false);
238
+                    T.interrupt();
237 239
                 }
238 240
                 else {
239 241
                     // 버튼을 누르는 이벤트 발생, 이벤트 제어문이기 때문에 이벤트 발생 때마다 발동된다. 시스템이 처리하는 부분이 무한루프문에
240 242
                     //있더라도 이벤트가 발생하면 자동으로 실행된다.
241 243
                     try{
242
-                        Runnable start = new MainActivity();
243
-                        Thread T = new Thread(start);
244
+                        setConnection_Status(true);
245
+
246
+                        Log.d("Mainactivity.class / run", "isConnection_Status : " + isConnection_Status());
247
+
248
+
244 249
                         T.start();
250
+                        Log.d("Mainactivity.class / run", "button_port : " + isConnection_Status());
245 251
                         Log.d("MainActivity / 쓰레드 실행","성공");
246
-                        setConnection_Status(true);
247 252
                     }catch (Exception e){
248 253
                         Log.e("MainActivity / 쓰레드 실행","실패");
249 254
                     }
@@ -319,6 +324,11 @@ public class MainActivity extends AppCompatActivity implements Runnable,OnClickL
319 324
         this.Recv_Context =context;
320 325
     }
321 326
     String Prev_RecvStr;
327
+
328
+    int sendtest = 0;
329
+    public int Send_Test(){
330
+        return ++sendtest;
331
+    }
322 332
     public void ListViewDataSet(int position, final String str){
323 333
         new Thread(new Runnable() {
324 334
             @Override
@@ -331,8 +341,11 @@ public class MainActivity extends AppCompatActivity implements Runnable,OnClickL
331 341
 //            adapter_rf.removeItem(11);
332 342
                             if(str != Prev_RecvStr) {
333 343
                                 adapter_rf.setItem("Temperature", str, "", "READ", 11);
344
+                                adapter_rf_set.setItem("Temperature", str, "", "READ", 11);
334 345
                                 Prev_RecvStr = str;
335 346
                                 adapter_rf.notifyDataSetChanged();
347
+                                adapter_rf_set.notifyDataSetChanged();
348
+                                Log.d("Mainactivity.class / runOnUiThread", "isConnection_Status : " + isConnection_Status());
336 349
                             }
337 350
 //
338 351
                         }catch (Exception e){
@@ -345,17 +358,38 @@ public class MainActivity extends AppCompatActivity implements Runnable,OnClickL
345 358
         }).start();
346 359
 
347 360
     }
361
+
348 362
     @Override
349 363
     public void run() {
350
-        connect con = new connect(this);
351
-        con.run();
364
+//        connect con = new connect(this);
365
+//        try {
366
+//            Log.d("YJ TEST ", String.valueOf(DATA_TEST));
367
+//            Log.d("MainActivity / Run 함수 실행", "성공");
368
+//        } catch (Exception e) {
369
+//            Log.e("MainActivity / Run 함수 실행", "실패");
370
+//            //  setConnection_Status(false);
371
+//        }
372
+//        con.run();
373
+    }
374
+
375
+}
376
+class RunnableImplements implements Runnable {
377
+    MainActivity mActivity = null;
378
+
379
+    public RunnableImplements(MainActivity Activity) {
380
+        this.mActivity = Activity;
381
+    }
382
+
383
+    public void run(){
384
+        connect con = new connect(this.mActivity);
352 385
         try {
353
-            Log.d("YJ TEST ", String.valueOf(DATA_TEST));
386
+//            Log.d("YJ TEST ", String.valueOf(DATA_TEST));
354 387
             Log.d("MainActivity / Run 함수 실행", "성공");
355 388
         } catch (Exception e) {
356 389
             Log.e("MainActivity / Run 함수 실행", "실패");
357
-            setConnection_Status(false);
390
+            //  setConnection_Status(false);
358 391
         }
392
+        con.run();
393
+        // 작업
359 394
     }
360
-
361
-}
395
+}

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

@@ -13,28 +13,29 @@ public class connect implements Runnable  {
13 13
     private Socket socket;
14 14
     private Timer timer = null;
15 15
     private MainActivity mAcitivity = null;
16
-    public connect(MainActivity Acitivity) {
16
+    private Context mContext = null;
17
+    public connect(MainActivity Activity) {
17 18
         try {
18 19
             socket = new Socket(ip, port);    //서버에 연결
19 20
             timer = new Timer();
20
-            this.mAcitivity=Acitivity;
21
+            this.mAcitivity=Activity;
21 22
             Log.d("connect.class / 소켓 연결", "성공");
23
+//            MainActivity t = (MainActivity)context.getApplicationContext();
24
+            Log.d("connect.class / run", "isConnection_Status " + String.valueOf(this.mAcitivity.isConnection_Status()));
22 25
         }
23 26
         catch(Exception e) {
24 27
             Log.e("connect.class / 소켓 연결", "실패");
25
-            ((MainActivity)Acitivity).setConnection_Status(false);
28
+            //    ((MainActivity)Acitivity).setConnection_Status(false);
26 29
         }
27
-        Log.e("run", String.valueOf((Acitivity).DATA_TEST));
28 30
     }
29 31
     @Override
30 32
     public void run() {
31 33
     // TODO Auto-generated method stub
32
-
33 34
         send s = new send(socket,this.mAcitivity);    //서버에 연결된 socket을 생성자를 통해 넘긴다
34 35
         receive r = new receive(socket,this.mAcitivity);  //서버에 연결된 socket을 생성자를 통해 넘긴다
35
-//        ((MainActivity)this.activity).RecvContext_set(r);
36 36
         timer.scheduleAtFixedRate(s, 1000, 7000);
37 37
         r.run();        //스레드 실행
38
+        timer.cancel();
38 39
     }
39 40
 }
40 41
 

+ 2 - 10
app/src/main/java/com/example/repeater/receive.java

@@ -37,24 +37,16 @@ public class receive implements Runnable{
37 37
         // TODO Auto-generated method stub
38 38
 
39 39
         try {
40
+
40 41
             while(true) {
41 42
                 myCompleteMessage = new StringBuilder();    //StringBuilder 객체 초기화
42 43
                 buffRead = new BufferedReader(new InputStreamReader(m_socket.getInputStream()));
43 44
                 numberOfBytesRead = buffRead.read(buff, 0, buff.length);//char 배열 buff에 받아들이고
44 45
                 myCompleteMessage.append(buff, 0, numberOfBytesRead); //buff의 데이터를 StringBuilder객체로 이동
45 46
                 temp = Integer.parseInt(myCompleteMessage.toString()) * ADC_Calc;
46
-                temp = ((temp  * 1000) -500) / 10;
47
+                temp = ((temp  * 1000) -500) / 10;/*ADC값 계산 식 */
47 48
                 this.mAcitivity.ListViewDataSet(11, String.valueOf(temp));
48 49
                 Log.d("receive.class / 데이터 수신", "성공 : DATA : " + temp +">>> LENGTH : " +numberOfBytesRead);//toString메소드를 통해
49
-                /*
50
-                myCompleteMessage = new StringBuilder();    //StringBuilder 객체 초기화
51
-                Log.d("receive1.class / 데이터 수신", "성공 : " + myCompleteMessage.toString());//toString메소드를 통해
52
-                numberOfBytesRead = buffRead.read(buff, 0, buff.length);//char 배열 buff에 받아들이고
53
-                Log.d("receive2.class / 데이터 수신", "성공 : " + myCompleteMessage.toString());//toString메소드를 통해
54
-                //받아들인 byte수를 반환
55
-                myCompleteMessage.append(buff, 2, numberOfBytesRead-2); //buff의 데이터를 StringBuilder객체로 이동
56
-                Log.d("receive.class / 데이터 수신", "성공 : " + myCompleteMessage.toString());//toString메소드를 통해
57
-                //String으로 변환*/
58 50
             }
59 51
         } catch(Exception e) {
60 52
             Log.e("receive.class / 데이터 수신", "실패" + numberOfBytesRead);

+ 6 - 4
app/src/main/java/com/example/repeater/send.java

@@ -15,10 +15,10 @@ public class send extends TimerTask {
15 15
     private Socket m_socket = null;
16 16
     private String message = "hello!";
17 17
     private byte[] b = {'d','a','t','a','1','2','\r','\n'};
18
-    private Context mContext = null;
19
-    public send(Socket socket, Context context){
18
+    private MainActivity mAcitivity = null;
19
+    public send(Socket socket,MainActivity Acitivity){
20 20
         try{
21
-            this.mContext = context;
21
+            this.mAcitivity = Acitivity;
22 22
             m_socket = socket;
23 23
             out = socket.getOutputStream();
24 24
             dos = new DataOutputStream(out);
@@ -30,7 +30,9 @@ public class send extends TimerTask {
30 30
     @Override
31 31
     public void run() {
32 32
         try {
33
-            dos.writeBytes(" data12\r\n");
33
+            String testdata = String.valueOf((this.mAcitivity).Send_Test());
34
+            Log.d("send.class / run", testdata);
35
+            dos.writeBytes(testdata);
34 36
             //dos.write(b, 0, b.length);
35 37
             Log.d("send.class / 메시지 전송", "성공");
36 38
         }catch(Exception e){

+ 1 - 1
app/src/main/res/layout/activity_main.xml

@@ -25,7 +25,7 @@
25 25
             android:layout_width="match_parent"
26 26
             android:layout_height="wrap_content"
27 27
             android:text="Port Open"
28
-            android:onClick="onClick" />
28
+            android:onClick="onClick"  />
29 29
     </LinearLayout>
30 30
 
31 31
     <LinearLayout

+ 1 - 1
build.gradle

@@ -7,7 +7,7 @@ buildscript {
7 7
         
8 8
     }
9 9
     dependencies {
10
-        classpath 'com.android.tools.build:gradle:3.4.2'
10
+        classpath 'com.android.tools.build:gradle:3.5.0'
11 11
         
12 12
         // NOTE: Do not place your application dependencies here; they belong
13 13
         // in the individual module build.gradle files

+ 2 - 2
gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
1
-#Mon Jun 24 17:30:00 KST 2019
1
+#Thu Aug 22 21:32:04 KST 2019
2 2
 distributionBase=GRADLE_USER_HOME
3 3
 distributionPath=wrapper/dists
4 4
 zipStoreBase=GRADLE_USER_HOME
5 5
 zipStorePath=wrapper/dists
6
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
6
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip