ListView lv = (ListView) findViewById(R.id.list_view);
lv.setAdapter(mAdapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
BluetoothAdapter.getDefaultAdapter().cancelDiscovery();
BluetoothDevice device = mAdapter.getItem(position);
// V/Test ( 1541): key : android.bluetooth.device.extra.DEVICE, value : CC:F9:E8:05:55:8B, class : class android.bluetooth.BluetoothDevice
// V/Test ( 1541): key : android.bluetooth.device.extra.PASSKEY, value : 302503, class : class java.lang.Integer
// V/Test ( 1541): key : android.bluetooth.device.extra.PAIRING_VARIANT, value : 2, class : class java.lang.Integer
//startActivity(new Intent("android.bluetooth.device.action.PAIRING_REQUEST").putExtra(BluetoothDevice.EXTRA_DEVICE, device).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK).putExtra("android.bluetooth.device.extra.PAIRING_VARIANT", 5));
try {
Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class });
socket = (BluetoothSocket) m.invoke(device, 1);
socket.connect();
} catch (Exception e){
}
ShowDialog(position);
}
});
이 소스에서 socket.connect() 로 Bluetooth 페어링하고있습니다.
startdiscovery 로 장치를 찾아서 리스트뷰에 뿌린다음에 리스트뷰에서 기기하나를 선택하면 페어링하는 코드입니다.
터치하면 자동으로 cancelDiscovery 로 서칭을 멈춘다음에 페어링을 시도 하는데요
시도는 잘 되고 목록을 누르면 페어링하겠냐는 팝업과 pair 누르면 페어링도 잘 되구요
근데 페어링하겠냐느 팝업에서 선택을 안하고 두면
Force Close / Wait 팝업이 뜹니다...
디버그를 걸어봐도 걸리는 곳이 없고.... 구글링 해보니 쓰레드 문제 일 것 같다는데
코드상에 쓰레드 돌리거나 시작하는 부분도 없구요
아시는 분 꼭 좀 알려주세요 ㅠㅠ
자답입니다
Thread 로 잡아주니 괜찮덥니다.