안녕하세요
제가 지금 블루투스 모듈이 있는 운동기구와 안드로이드 간의 연동을 하려고 하는데요 ㅠㅠ
안드로이드 어플은 유니티로 제작하기 때문에 안드로이드 스튜디오로 플러그인을 만들어서 짜고있습니다.
그런데 소켓을 생성 후 운동기구에 connect를 하면 connect가 성공적으로 되는듯 보이는데요
실제로 안드로이드에서 연동이 되지 않습니다 ㅠㅠ
try{ sock.connect() } catch 에서도 catch에 안걸리고
isConnected()함수를 사용해도 제대로 connect된것 같은데 왜 실제 핸드폰에서 블루투스 연결이 되진 않을까요..? (핸드폰에서 직접 블루투스 연결버튼을 눌러서 연결하면 잘됩니다 )
그리고 이상한것은 가장 처음 코드를 실행했을때는 한번 연결이 됐다는 것입니다 ㅠㅠ
그 뒤로 안되구요 .. 코드 첨부합니다 ㅠㅠ
private static BluetoothAdapter myBluetoothAdapter;
//상대방 UUID
private static UUID remoteUUID;
//통신용 클라이언트 소켓
private static BluetoothSocket sock;
//상대방 디바이스
private static BluetoothDevice remoteDevice;
private static void bondBluetooth(Activity activity) {
myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
//페어링 목록
List<String> pairingList = new ArrayList<>();
Toast.makeText(context, "블루투스 스타트!", Toast.LENGTH_SHORT).show();
//블루투스가 꺼져있다면 켠다
if(!myBluetoothAdapter.isEnabled())
{
//지금 꺼져 있으니 켜야 한다.
myBluetoothAdapter.enable();
}
//블루투스 켜지는 것 대기
while(true)
{
if(myBluetoothAdapter.isEnabled())
{
break;
}
}
//페어링되어 있는 기기 목록 가져오기
Set<BluetoothDevice> pairedDevices = myBluetoothAdapter.getBondedDevices();
//페어링 된 기기가 있다면
if(pairedDevices.size()>0) {
for (BluetoothDevice device : pairedDevices) {
//원하는 기기의 디바이스 정보 획득
if(device.getName().contains("TANDA"))
{
//상대 디바이스 획득
remoteDevice = device;
//UUID 획득
ParcelUuid list[] = device.getUuids();
remoteUUID = UUID.fromString(list[0].toString());
//상대 디바이스 이름체크
Toast.makeText(context, remoteDevice.getName() , Toast.LENGTH_SHORT).show();
Toast.makeText(context, remoteUUID.toString(), Toast.LENGTH_SHORT).show();
break;
}
}
}
else
{
Toast.makeText(context, "페어링 된 기기가 없습니다", Toast.LENGTH_SHORT).show();
}
}
private static void ConnectBluetooth(Activity activity)
{
Toast.makeText(context, remoteDevice.getName() + "에 연결합니다", Toast.LENGTH_SHORT).show();
try{
sock = remoteDevice.createRfcommSocketToServiceRecord(remoteUUID);
} catch (IOException e){}
Toast.makeText(context, sock.getRemoteDevice().getName() +"소켓 생성", Toast.LENGTH_SHORT).show();
myBluetoothAdapter.cancelDiscovery();
try{
sock.connect();
} catch(IOException e){}
if(sock.isConnected())
Toast.makeText(context, "연결 성공", Toast.LENGTH_SHORT).show();
}