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

버튼을 누르면 블루투스 다이얼로그가 나오는 것을 하려고 합니다.

0 추천
 

@Override
 public void onClick(View v) {

  switch (v.getId()) {
  case R.id.btButton:   //블루투스 패어링 버튼
   if (bt_connectButton.isClickable()) {
    // Attempt to disconnect from the device
    onActivityResult(REQUEST_CONNECT_DEVICE_INSECURE, Activity.RESULT_OK, null);

   } else {
    // Attempt to connect to the device

    onActivityResult(REQUEST_CONNECT_DEVICE_SECURE, Activity.RESULT_OK, null);
    
   }
   break;
    }

 }

    private final Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
         if (myProgressDialog.isShowing()) {
    myProgressDialog.dismiss();
   }
            .......
    };


public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(D) Log.d(TAG, "onActivityResult " + resultCode);
        switch (requestCode) {
        case REQUEST_CONNECT_DEVICE_SECURE:
            // When DeviceListActivity returns with a device to connect
            if (resultCode == Activity.RESULT_OK) {
             myProgressDialog = ProgressDialog.show(this, getResources()
      .getString(R.string.pleaseWait), getResources()
      .getString(R.string.makingConnectionString), true);
                connectDevice(data, true);
            }
            break;
                 .....
           }

블루투스 채팅 소스를 이용해서 버튼을 누를 시에 패어링 할 선택창이 뜨게 하려고 하는데

버튼을 누르면 오류가 납니다...logcat으로 확인을 할 수 없는 것 같고...어디가 잘 못 되었는지만

가르쳐 주신다면 제가 잘못 된 부분 생각해서 고쳐 보도록 하겠습니다.. ㅜㅜ

 

 

안왕초보 (1,390 포인트) 님이 2014년 2월 16일 질문

1개의 답변

0 추천
 
채택된 답변

일단..

bt_connectButton.isClickable() 버튼 클릭시 조건이 이상하네요?

isClickable이 뭔지 알고 쓰시는건지.... 버튼을 눌렀을 때 이벤트 발생하려고 하시는거면

온클릭에서 아래와 같이 해주면 되요.

switch (v.getId()) {

  case R.id.btButton: 

 

       // 이벤트

isClickable 은 클릭할수있는지 없는지 속성 값을 확인하는건데.. -_-

아무튼, 다음으로

액티비티를 실행하려면 일반적으로 startActivityForResult() 하셔야하는데..

onActivityResult 를 다이렉트로 호출하셨네요.. 요건 직접 시험해보진않았지만

변경하실 것을 권장합니다.

호출은 startActivityForResult

결과처리는 여기서 수행하는데 > 앞서 호출한 액티비티의 종료시

onActivityResult 함수가 자동으로 호출되는거라서 직접 호출하시면 안될 것 같네요

초보개발자ㅠ (33,870 포인트) 님이 2014년 2월 17일 답변
안왕초보님이 2014년 2월 17일 채택됨
Intent btConnect = new Intent(this, DeviceListActivity.class);
        startActivityForResult(btConnect, REQUEST_CONNECT_DEVICE_SECURE);

이렇게 하였는데 오류없이 잘됩니다. ㅎㅎ
전 직접적으로 사용해도 되는지 알고 하였는데 ㅎㅎ 감사합니다.
블루투스 채팅 오픈 소스 다시 보니깐 메뉴 이벤트 쪽에 나와 있네요. ㅎㅎ 천천히 보고 수정을 해야 되는데 그냥 무턱대고 지워버려서 ㅎㅎ 감사합니다.
...