This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

start stop scanning in android app

Hi

How to start and stop scanning continuously in android devices ?.I found that In Nrf master control panel android app there is an option of performing scanning such that it can display the dynamic data that nrf51822 is advertising (settings->scanner->continuous scanning disabled). I couldnt find this function in the source code of nrftoolbox that nordic had provided . Am developing an app for nrf51822 such that ,it advertises dynamic data which should be display live in the app( for ex.displaying rssi value). So when will they provide the source code for master control panel ? Do anybody have the function for this ?

private void scanLeDevice(final boolean enable) {

    if (enable) {
        // Stops scanning after a pre-defined scan period.
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mScanning = false;
                mBluetoothAdapter.stopLeScan(mLeScanCallback);
                System.out.println("hello");
                invalidateOptionsMenu();
            }
        }, SCAN_PERIOD);
               mScanning = true;
        mBluetoothAdapter.startLeScan(mLeScanCallback);
    } else {
        mScanning = false;
        mBluetoothAdapter.stopLeScan(mLeScanCallback);
    }
    invalidateOptionsMenu();
}

Thankyou

Parents
  • Hi Hrg,

    Actually you can find the code that we limit the period of scanning in nRFToolbox at function startScan() in ScannerFragment.java file.

    We used a timer and defined a period SCAN_DURATION to stop scanning.

    The reason we do this is to avoid continuous scanning (that can draw lots of power of the phone) when the app is in background or when the customer forgot to stop scanning.

  • Hi hrg,

    LEScancallback() is called on every single advertising packet received when you are scanning. It's not called once on very startLeScan() you call. What you see in nRFMCP app that the data is updated every one second is that we use a 1 second timer to update the List on the screen, instead of update continuously whenever we receive a advertising packet.

    Could you explain a little bit more on "When i use the start and stop scan again and again it is neglecting the startscan calls ! so i couldnt refresh the new broadcasted data ,i have to manually stop scanning and then start it again which is a tiresome task " What is the difference between "start and stop scan again and again" and "manually stop scanning and then start it again" ?

Reply
  • Hi hrg,

    LEScancallback() is called on every single advertising packet received when you are scanning. It's not called once on very startLeScan() you call. What you see in nRFMCP app that the data is updated every one second is that we use a 1 second timer to update the List on the screen, instead of update continuously whenever we receive a advertising packet.

    Could you explain a little bit more on "When i use the start and stop scan again and again it is neglecting the startscan calls ! so i couldnt refresh the new broadcasted data ,i have to manually stop scanning and then start it again which is a tiresome task " What is the difference between "start and stop scan again and again" and "manually stop scanning and then start it again" ?

Children
No Data
Related