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

Oreo Version에서 BLE Scan이 되지 않는 현상에 대해 질문드립니다.

0 추천

구글링을 해보니 Oreo Version에서 Wi-FI&Bluetooth Search 부분이 강화되어 코드를 변경해야 하는데 

코드를 변경 하였음에도 Scan이 되지 않는 현상이 발생합니다. 

Permission

    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>

Scan Method

    public void startScan(){
        List<ScanFilter> filters = new ArrayList<>();
        ScanFilter.Builder filter =  new ScanFilter.Builder();
        ScanFilter scanFilter=filter.build();
        filters.add(scanFilter);

        ScanSettings settings = new ScanSettings.Builder()
                                .setReportDelay(0)
                                .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
                                .build();

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            bleScanner.startScan(filters, settings, OreoBLEScanInt);
        }else {
            bleScanner.startScan(filters, settings, scanCallback);
        }
    }

Oreo Version 이상 Scan Callback 을 받기위한 PendingInent 선언 부

  BLE_Recevice = new Intent(mContext,BleBroadcast.class);
        BLE_Recevice.setAction(BluetoothDevice.ACTION_FOUND);
        Log.e(TAG,"GET ACTION : "+BLE_Recevice.getAction());
        OreoBLEScanInt = PendingIntent.getBroadcast(mContext,BLE_SCAN_RECEVICE_CODE,BLE_Recevice,0);

Scan에대한 정보를 Callback 받는 BroadCast--> Inner Class로 정의 되어있습니다. (이유 따로 Callback을 만들어 사용하기 때문에 Callback 변수를 사용하기 위함.

private class BleBroadcast extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.e(TAG,"CALL PendingIntent");
        }
    }

이렇게 구현시에 BluetoothDevice.ActionFound에 관한 퍼미션 애러가 나네요. 퍼미션에는 블루투스에 관한 권한이 빠지지 않았는데요 

그래서 구글링 결과 BluetoothDevice.ActionFound -->를 MyappPackage.ActionFound 로 변경하여 setAction을 해본결과 아무런 반응이없었습니다. 

혹제가 잘못하고 있는것이나 Oreo 버전 Ble Scan에 관한 샘플 소스르 제공하는 곳이 있다면 알려주실수 있으신가요 부탁드립니다..ㅠ 

CJ여비 (5,730 포인트) 님이 2019년 4월 12일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...