다들 설연휴 잘 보내셧는지요
몇일내내 삽질중인 부분을 질문드립니다...ㅠ
일단 채팅기본예제에서 참고하여 소스를 수정해가고있습니다.
클래스3개가 있습니다
디바이스리스트 클래스(액티비티클래스임)에서 디바이스리스트뿌려주고 하나 선택시에
정보를 메인엑티비티로보냅니다
private AdapterView.OnItemClickListener pItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
mBtAdapter.cancelDiscovery();
String address;
PItem item = pItems.get(position);
address = item.paddress;
if (address.equals("")) {
// Toast.makeText(this, "블루투스 페어링을 해주세요", Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent();
intent.putExtra(EXTRA_DEVICE_ADDRESS, address);
setResult(Activity.RESULT_OK, intent);
finish();
}
};
그리고 메인액티비티에서
public void onActivityResult (int requestCode, int resultCode, Intent data){
switch (requestCode) {
case REQUEST_CONNECT_DEVICE:
btService.getDeviceInfo(data); (블루투스서비스클래스로 데이터전달)
}
break;
case REQUEST_ENABLE_BT:
if (resultCode == Activity.RESULT_OK) {
btService.scanDevice();
} else {
Toast.makeText(this, R.string.none_found, Toast.LENGTH_SHORT).show();
}
break;
}
}
그리고 액티비티에서 블루투스서비스로 데이터전달하여 연결시도합니다
생성자로 메인액티비티 정보받아와서 디바이스스캔과 연결을 처리합니다
public void connect(BluetoothDevice device) {
mConnectThread = new ConnectThread(device);
mConnectThread.start();
setState(STATE_CONNECTING);
}
여기서 문제가하나생겻습니다
디바이스리스트 클래스에서 버튼터치이벤트를 만들고
그것을 클릭시 연결이 해제가 되게 처리하려하는데
연결부분은 저렇게 디바이스정보받아와서 커넥트쓰레드생성해서 시작시키는데
연결해제부분은 어떻게 접근해야할지 삽질해봐도 감이안잡히네요
단순 여기서 소켓.close시키는거 메소드만들어서 접근해봣자 정보가 공유안대니 null만뜨네요
그렇다고 다시 연결쓰레드객체를 새로생성하는건 말도안대는거같고
연결쓰레드내에 구현된 socket객체에 접근해보기도햇는데 안되네요..
어떻게 해결해야할까요 ㅠㅠ
설명이 너무 조잡해서 요약해봅니다
연결의 경우 리스트뿌려주는 액티비티클래스에서 리스트클릭시
setResult로 인텐트데이터 메인액티비티로 보내서 메인엑티비티에서 onActivityResult로 서비스딴에
있는 디바이스연결처리부분에 데이터넣어 처리함
디바이스리스트에 연결해제버튼이 구현되어있는데 서비스딴에 소켓close를 접근못하고있음...ㅠㅠ