I am creating an application to scan for peripheral devices. Here is my code for starting scan:
private void startScan(){
    bleScanner = bleAdapter.getBluetoothLeScanner();
    List<ScanFilter> filters = new ArrayList<ScanFilter>();
    filters.add(new ScanFilter.Builder().build());
    ScanSettings settings = new ScanSettings.Builder()
            .setScanMode(ScanSettings.SCAN_MODE_LOW_POWER)
            .setReportDelay(1000)
            .build();
    bleScanner.startScan(filters,settings,scanCallback);
    Log.i(TAG,"Scan started");
}
And here is the scan call back:
private ScanCallback scanCallback = new ScanCallback() {
    @Override
    public void onScanResult(int callbackType, ScanResult result) {
        Log.i("scan found something");
    }
    @Override
    public void onBatchScanResults(List<ScanResult> results) {
        if(!results.isEmpty()){
            BluetoothDevice advert = results.get(0).getDevice();
            Log.i("found device: "+advert.getAddress());
            stopScan();
            startClient(advert);
        }else{
            Log.i("scanning...");
        }
    }
    @Override
    public void onScanFailed(int errorCode) {
        Log.i("Scan failed to start");
    }
};
I have two android devices on which i am testing this application, one is running on API 21 and other on 23. When i test this app on device with API 22 the call backs are working correctly, but when tested on device with API 23 I do get the "Scan started" log, but scanCallBack is not working. I have added all the required permissions:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Any help would be appreciated, Thank you!
