?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

ble 통신 시 문의 건

페이지 정보

작성자 사스케 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-06-07 16:19 조회1,637회 댓글5건

본문

안녕하세요. 바쁘신데 문의 드려요 ^^;

현재 블루투스 4.0 장비(CC41-a)와 스마트폰을 연결하여 통신을 하고 있습니다.

1. 마시멜로우 폰인 LG 넥서스 5X에서 아래와 같이 소스 코딩하면, BLE 연결이 됩니다.

   mBluetoothGatt = device.connectGatt(this, false, mGattCallback);

   삼성 노트5, 노트4에서는 아래와 같이 하면, 연결이 되거나 안되는 거나 거의 랜덤으로

   나옵니다.

   아래와 같이 AutoConnect 상태를 true로 한 경우에는 그나마 나은 편이지만, 동일한 시간으로 연결이

   되지 않고, 연결 시도할 때만 연결은 되지만, 일정한 패턴이 없습니다.

   mBluetoothGatt = device.connectGatt(this, true, mGattCallback);

   세 개의 폰이 전부 마시멜로우 6.0.1인데, 블루투스가 차이가 있는지 아래와 같은 현상이 있는데,

   어플에서 제어가 가능한지 문의 드립니다.

 

 

 

 

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

BLE 연결이 되는걸로 봐서 소스코드 문제는 아닌것 같습니다. 폰 재부팅이나 BLE 자체를 끄고 다시 연결해보세요. 혹은 BLE 모듈에서 이전 연결 세션을 기억해서 재연결 시도를 하는건 아닌지 확인해 봐야할 것 같습니다.

사스케님의 댓글

사스케 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

삼성 노트4, 노트5에서 발생되어 어플리케이션 관리자 블루투스 공유 캐쉬와 데이터를 초기화 하고
연결하면 연결은 잘되다가 좀 있으면 동일한 현상이 있어 아래 캐쉬 리프레쉬 해주는 소스를 넣고,
해도 삼성 스마트폰에서는 적용이 안되더라구여.
삼성 스마트폰에서는 블루투스를 커스텀에서 사용해서 블루투스 데이터 초기화가 제한되는 것
같습니다. 값이 false로 떨어지는군여
추가 질문입니다만, 동일 블루투스 디바이스에 재연결을 할 때 블루투스 데이터 값을 초기화 해주는
것이 어플 단에서 컨트롤 가능한지 문의 드립니다.

mBluetoothGatt = device.connectGatt(this, false, mGattCallback);
refreshDeviceCache(mBluetoothGatt);

public static boolean refreshDeviceCache(BluetoothGatt gatt) {
try {
final Method refresh = BluetoothGatt.class.getMethod("refresh");
if (refresh != null) {
final boolean success = (Boolean) refresh.invoke(gatt);
Log.i(TAG, "Refreshing result: " + success);
return success;
}
} catch (Exception e) {
Log.e(TAG, "An exception occured while refreshing device", e);
}
return false;
}

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

블루투스 데이터 값을 초기화 해준다는 의미가 무엇인지 잘 모르겠습니다. 어떤 데이터를 말씀하시는건지요?

사스케님의 댓글

사스케 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

스마트폰의 블루투스 캐쉬를 초기화 시켜주는 것을 말합니다.
연결 해제 후 재 연결 시 스마트폰에 따라 캐쉬 초기화가 필요한 것으로 알고 있습니다.

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

안드로이드 롤리팝 이후로 BLE 쪽이 효율적으로 코드가 많이 변경되었는데 여전히 관련 문제가 많은가봅니다. 그냥 봐서는 안드로이드 프레임웍이나 하위 레이어의 문제일수도 있을거 같아요.
BLE 커넥션 관련한 문제들이 다수 보고되고 있는데... 딱히 이거다라는 방법은 없는 것 같습니다. 연결 상태를 앱 자체에서 계속 관리해야 하는 것 같습니다.
http://stackoverflow.com/questions/17870189/android-4-3-bluetooth-low-energy-unstable
https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues