마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

통신이 연결되면 이미지를 바꾸려고 하는데... 잘 안되네요 도움 구합니다~

0 추천
///////////////////////////////////

// main_img : 원래의 이미지

// app_main_net : 통신 연결시 바꿀 이미지

///////////////////////////////////

static Socket socket = null;

@Override
    public void onCreate(Bundle savedInstanceState) {

 

if(!result){
      Toast.makeText(getApplicationContext(), "if문", Toast.LENGTH_LONG).show();
   img = (ImageView)findViewById(R.id.cmain_img);
   default_img = getResources().getDrawable(R.drawable.app_main_net);
   img.setImageDrawable(default_img);
     }
     else {
      Toast.makeText(getApplicationContext(), "else문", Toast.LENGTH_LONG).show();
   img = (ImageView)findViewById(R.drawable.app_main_net);
   default_img = getResources().getDrawable(R.id.main_img);
   img.setImageDrawable(default_img);
     }

....

}

(생략)

...

 

 private void showConnectPiDialog() {
  
  LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  LinearLayout connectLayout = (LinearLayout)vi.inflate(R.layout.dialog_connect,  null);
  
  final EditText ipaddress = (EditText)connectLayout.findViewById(R.id.ip);
  final EditText portnum = (EditText)connectLayout.findViewById(R.id.port);
  
  new AlertDialog.Builder(this)
      .setTitle("RC카 통신 연결하기")
      .setView(connectLayout)
      .setNeutralButton("연결", new DialogInterface.OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {

    new Thread(new Runnable() {
 
     @Override
     public void run() {
      try {
       String serverIP = ipaddress.getText().toString(); // 서버ip입력
       String serverPort = portnum.getText().toString(); // Port번호 입력
       
       InetAddress serverAddr = InetAddress.getByName(serverIP);
       int nPort = Integer.parseInt(serverPort);
       
       socket = new Socket(serverAddr,nPort);
       
                
      } catch (IOException e){
       e.printStackTrace();
       }
      }
     }).start();
    }   
      }).show();
 }

 

-----------------------------------------------------------------

통신이 연결시에 이미지를 바꿔서 현재 통신이 되고있음을 보여주려는 어플을 만드는 중입니다.

통신이 불안정하여 끊긴다면 이미지를 다시 원래의 이미지로 되돌리려고도 합니다.

하지만 연결이 되자마자 튕기더군요. 구글링하면서 여러가지 다 해본 것 같습니다.

socket 에...

isConneted

connect

isClosed

toString 등...

이미지가 바뀌어도 바로 튕기더군요...

현재 OnCreate 에 넣어도 봤고,

통신 연결해주는 쓰레드가 있는 다이얼로그 안에도 넣어봤습니다만... 어렵네요...

socket 부분이 문제인 것 같은데... 조언 부탁드립니다~ 즐거운 일요일되시길^^
익명사용자 님이 2014년 12월 7일 질문

1개의 답변

0 추천
소켓이라면 onConnentChanged 가 있을겁니다..

소켓상태변경에 따라 호출되는 함수이니..

여기서 핸들링 하면 될 것 같네요.
개발자초심 (21,220 포인트) 님이 2014년 12월 7일 답변
찾아보니 onConnentChanged  함수는 없더군요 ㅠㅠ 제가 잘못하는건지;; 대략 어느식으로 함수를 불러오면 되는지 조언부탁드립니다...
...