2016-11-28 1 views
0

간단히 말해, 아래의 "str"변수를보십시오. 그 출력은 PING 조작의 전체 결과입니다.Android (Java)에서 ping 결과를 라인 단위로 어떻게 표시합니까?

reader = new BufferedReader(new InputStreamReader (process.getInputStream())); 
int j; 
char[] buffer = new char[240]; 
StringBuffer output = new StringBuffer(); 
while ((j = reader.read(buffer)) > 0){ 
output.append(buffer, 0, j);} 
str = output.toString(); 
Log.d("1:STR VALUE", str); 
publishProgress(" "+str+" "); 

"str"변수는 조작의 전체 결과, 즉 IP 주소로 3 회 ping을 포함합니다. 그러나,이 비동기 작업에서 하나씩 Android 활동에 대해 한 줄씩 핑을 표시하려고합니다.

또한 누군가 내가 사용하고있는 버퍼 어레이의 길이 (예 : 240 대 120)의 성능 제한을 설명 할 수 있다면 좋을 것입니다.

EDIT -1- (주석에 응답)

11-28 18:11:17.404 10769-10815/com.example1 D/1:STR VALUE: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 
                  64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=8.83 ms 
11-28 18:11:17.600 10769-10815/com.example1 D/1:STR VALUE: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 
                  64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=8.83 ms 
                  64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=2.05 ms 
11-28 18:11:17.801 10769-10815/com.example1 D/1:STR VALUE: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 
                  64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=8.83 ms 
                  64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=2.05 ms 
                  64 bytes from 192.168.0.1: icmp_seq=3 ttl=255 time=3.38 ms 

                  --- 192.168.0.1 ping statistics --- 
                  3 packets transmitted, 3 received, 0% packet loss, time 403ms 
                  rtt min/avg/max/mdev = 2.059/4.758/8.835/2.933 ms 

는 STR 값 while 루프 내부에 발행 될 때, 출력의 반복이 발생 있습니다.

+0

전체 AsyncTask 코드를 게시 해주세요. – foxanna

+0

안녕하세요, "프로세스"는 ping 결과를 가져오고 "str"변수가 onProgressUpdate (String ... values) 메소드를 통해 기본 UI에 게시되는 런타임 프로세스입니다. 특정 이유로 전체 코드를 게시 할 수 없습니다. – Zac1

+0

신경 쓰지 마라. 왜'publ'Progress (str);을'while' 루프 내에서 ping amount만큼 사용하지 않는가? 그리고'onProgressUpdate' 핸들러 안에서 Activity에 라인을 표시하십시오. – foxanna

답변

0

이 코드를 사용하면 어떤 결과가 나옵니까?

 InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream()); 
     BufferedReader reader = new BufferedReader(inputStreamReader); 
     try { 
      String line; 
      while ((line = reader.readLine()) != null) 
      { 
       Log.d("1:STR VALUE", line); 
       publishProgress(line); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

UPDATE : 당신이 publishProgress(line); 코드를 게시 할 데이터는 사용자의 작업의 onProgressUpdate 방법에 대한 매개 변수로 전송됩니다. 이 텍스트를 TextView에 여기에 추가하십시오.

+0

이 작업을 수행 할 때 로그에 ping 결과가 나타납니다. 하지만 내 UI에는 아무것도 (안드로이드 메인의 textview는 아무것도 없다.). – Zac1

+0

@ Zac1, 대답을 업데이트했습니다 – foxanna

+0

예 제가 여기에 추가했습니다. - results1.append (line); - 그러나 응용 프로그램이 충돌하고 "java.lang.NullPointerException : throw합니다"인터페이스 메서드 'int java.lang.CharSequence.length()'null 개체 참조에 호출하려고 시도 android.widget.TextView.append "[PS : 나는 끈 줄을 바꿨다. to String line = "";] - 여전히 운이 없습니다. – Zac1

관련 문제