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

Android 4.3 Bluetooth Low Energy Device Search 문제

0 추천

안녕하세요.

BLE 관련 App를 제작하고 있는데요,

안드로이드 4.3 하위 버전인 4.2.2, 4.2.1은 삼성에서 제공하는 BLE SDK를 이용하여

삼성폰에 제한적이지만 BLE를 구현하였습니다.

4.3부터는 안드로이드에서 Bluetooth 4를 지원하고 API를 제공하는데요

Development site 에서 제공하는 Sample App이나 자체적으로 제작한 Sample App이나

mBtAdapter.startLeScan(mLeScanCallback)

메소드로 BLE Device를 검색하고, 콜백으로 onLeScan으로 검색된 Device가 

들어오는데 문제는 4.2.2, 4.2.1 App에서는 검색이 잘되는데, 유독 4.3에서는 잘 검색이 되지 않습니다.

간혹 검색이 되서 connect를 시도하여도 반응이 없거나, 연결이 되지 않습니다.

( 연결은 

public boolean connect(BluetoothDevice device, boolean autoconnect)
    {
        if (mBluetoothGatt != null)
        {
            if (mBluetoothGatt.connect())
                return true;
            else
                return false;
        }
        mBluetoothGatt = device.connectGatt(this, autoconnect, mGattCallbacks);
        return true;
    }
)

Development Support에도 Issue로 등록하였으나 답변이 없는 상태이고..

혹시나 안드로이드 4.3에서 BLE를 사용해 보신분 계신가요?!

검색 / 연결 방법이 올바르지 않는건지, 플렛폼 이슈인지 갈피가 잡히지 않습니다. 도와주세요.

사체르도체 (120 포인트) 님이 2013년 9월 10일 질문

1개의 답변

0 추천

저는 샘플 코드인 BluetoothLeGatt를 이용하여 장치 검색 하는 부분은 잘 동작 하고 있습니다.

참고로 갤럭시 노트3와 갤럭시s4 둘다 테스트 했습니다.

connect 부분에서 지정한 mGattCallbacks 메소드에서 onConnectionStateChange 에서

newState 가  BluetoothProfile.STATE_CONNECTED 일때 mBluetoothGatt.discoverServices()를 호출하여

onServicesDiscovered메소드가 들어올때 정상적으로 연결이 됩니다.

 

@Override
        public void onServicesDiscovered(BluetoothGatt gatt, int status) {
            if (status == BluetoothGatt.GATT_SUCCESS) {
                broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);
            } else {
                Log.w(TAG, "onServicesDiscovered received: " + status);
            }

        }

 

 

mu8454 (220 포인트) 님이 2013년 11월 13일 답변
혹시 그 상위버전(4.4)에서도 잘 검색 되시나요???

전 min을 18버전으로 하고

target 버전을 21로 설정했는데... 그래서 안되는건지 모르겠네요... ㅠ
...