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

안드로이드 소켓 통신 소스 질문드립니다

0 추천

 

소켓통신으로 rc카 구동을 구현하고 있습니다

버튼을 눌러 rc카 구동까지는 성공했는데,

rc카(아두이노)에서 소리를 감지했을경우 핸드폰으로 특정문자(a)를 보내 주게 되면 팝업창이 뜨게 구현하고 싶은데 도저히 감이 오질 않네요

 

 

 

 

 

 

 

 

public class TCPsoketTest extends Activity {
  /** Called when the activity is first created. */

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   
  
    Button btn1 = (Button)findViewById(R.id.button1);
    Button btn2 = (Button)findViewById(R.id.button2);
    Button btn3 = (Button)findViewById(R.id.button3);
    Button btn4 = (Button)findViewById(R.id.button4);
   
  
   
    btn1.setOnTouchListener(new RepeatListener(400, 50, new OnClickListener() {
        public void onClick(View v){
         String retrun_msg="s";
         TCPclient tp = new TCPclient(retrun_msg);
         tp.run();
        }
        }));

 

}


public void processAlertDialog() {
   AlertDialog.Builder builder = new AlertDialog.Builder(this); // Builder 객체 생성
  builder.setTitle("소리를 감지했습니다");
  // null 자리에 DialogInterface.OnClickListener 객체 넣어서 버튼 눌렀을 때 작업 처리
  builder.setPositiveButton("확인", null);
  // 실제 적용
  builder.setNegativeButton("취소", null);
   builder.show(); // AlertDialog 보여주기
  }

 

여기에서 if문써서 팝업창 뜨게 하려고 아래 소스를 썼는데요

어디에 어떻게 넣어야 할지 잘 모르겠습니다

 

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String str = in.readLine();
  
  TextView tv=(TextView)findViewById(R.id.textView1);
  str="a";
   if(tv.getText().toString().equals(str))
      
      {
       processAlertDialog();    
     
      }

 

고수님들 답변 부탁드립니다

마스터c (140 포인트) 님이 2014년 10월 7일 질문
브로드캐스트리시버가 문자는 받아오고 있다는 건가요? 어디까지 되고 안되는지 모르겠습니다만
브로드캐스트 리시버가 문자를 받고, 문자를 readline으로 읽어서 원하는 str과 일치하면 handler에게 dialog를 띄우도록 요청하면 됩니다.

위치를 물으셨는데...

if(tv.getText().toString().equals(str){
 mHandler.sendEmptyMessage(0)
}

하고

public Handler mHandler = new Handler(){
 void hanleMassage(Message msg){
   processAlertDialog();
}
};

1개의 답변

0 추천
저렇게 질문하시면 누가 그걸 알겠습니까...

통신 쪽 소스도 없는데요.

 

소켓 통신하는 스레드 안에 넣으시고 핸들러를 통해서 UI를 변경해 주세요.
원조안드로이드 (58,190 포인트) 님이 2014년 10월 7일 답변
...