Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle undocumented Android 7 scan throttle #227

Closed
leof23 opened this issue Jun 20, 2017 · 11 comments
Closed

Handle undocumented Android 7 scan throttle #227

leof23 opened this issue Jun 20, 2017 · 11 comments
Assignees
Milestone

Comments

@leof23
Copy link

leof23 commented Jun 20, 2017

Summary

Hi, I'm developing an app for reading a ble device, I'm using a Switch to control the Scan event, if I pass the switch between on/off quickly, sometimes I received results but later, after some calls to the event, I don't receive more results, I'm using a Samsung Galaxy tab s2 with Android 7, and using Kotlin for my code

Minimum code snippet reproducing the issue

My Scan method

fun scanDevices(name: String) {
        Log.i("arrive", "to the method")
        if (!connected) {
            Log.i("arrive", "to the if")
            val scanSubscription = rxBleClient.scanBleDevices(
                    ScanSettings.Builder()
                            .setScanMode(ScanSettings.MATCH_MODE_AGGRESSIVE)
                            .setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES)
                            .build(),
                    ScanFilter.empty())
                    .doOnSubscribe { Log.i("arrive","do subscribe") }
                    .doOnError { throwable -> throwable.printStackTrace() }
                    .doOnUnsubscribe { Log.w("arrive", "do unSubscribe") }
                    .subscribe(
                            { rxBleScanResult ->
                                Log.i("arrive", "scan")
                                if (rxBleScanResult?.bleDevice?.name == name) {
                                    device = rxBleScanResult.bleDevice
                                    Log.i("found", "device")
                                    found()
                                }
                            }
                    ) { throwable -> throwable.printStackTrace() }
            compositeSubscriptions.add(scanSubscription)
        }
    }

Logs from the application running

06-20 11:22:38.842 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:38.898 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:38.907 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the method
06-20 11:22:38.907 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the if
06-20 11:22:38.908 21148-21148/com.cartier.croxel.cartierApp I/arrive: do subscribe
06-20 11:22:38.925 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:38.926 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:38.926 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Start Scan
06-20 11:22:38.928 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:38.929 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:38.931 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:38.932 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:39.037 21148-21162/com.cartier.croxel.cartierApp D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=6 mClientIf=0
06-20 11:22:40.499 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.499 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.500 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.500 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.500 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.506 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.510 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.510 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.511 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.573 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.573 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.573 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.584 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.585 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.585 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.611 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.611 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.612 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.650 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.651 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.651 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.670 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.670 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.671 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.711 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.711 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.712 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.758 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.758 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.759 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.767 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.767 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.768 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.816 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.816 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.816 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.832 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.832 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.833 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.854 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.854 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.855 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.920 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.920 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.921 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.943 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.943 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.944 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:40.950 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:40.950 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:40.950 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.022 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.022 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.023 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.028 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.028 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.028 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.029 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.030 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.032 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.041 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.041 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.042 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.129 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.130 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.131 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.133 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.133 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.136 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.202 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.203 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.203 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.223 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.223 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.223 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.234 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.234 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.235 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.301 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.301 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.302 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.316 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.316 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.318 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.319 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.319 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.322 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.341 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.342 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.342 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.386 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.387 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.387 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.409 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.409 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.410 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.452 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.452 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.452 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.503 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.503 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.503 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.506 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.506 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.507 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.558 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.558 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.559 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.575 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.575 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.575 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.590 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.590 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.590 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.662 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.662 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.663 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.680 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.681 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.681 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.687 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.687 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.688 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.752 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.752 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.752 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.770 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.770 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.771 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.774 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.774 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.776 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.847 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.847 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.848 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.862 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.862 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.863 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.870 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.870 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.871 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.879 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.879 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.881 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.935 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.935 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.936 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.954 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.954 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.954 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:41.980 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:41.980 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:41.980 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:42.000 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:42.047 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:42.047 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:42.047 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:42.051 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:42.051 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:42.051 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:42.087 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:42.087 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:42.088 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:42.114 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:42.114 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:42.118 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:42.121 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:42.124 21148-21148/com.cartier.croxel.cartierApp W/arrive: do unSubscribe
06-20 11:22:42.126 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@b289df3 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:42.126 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:42.127 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=80
06-20 11:22:42.127 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=84
06-20 11:22:42.172 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:42.174 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:42.175 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:42.176 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:42.176 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Stop Scan
06-20 11:22:43.348 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:43.403 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:43.417 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the method
06-20 11:22:43.418 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the if
06-20 11:22:43.418 21148-21148/com.cartier.croxel.cartierApp I/arrive: do subscribe
06-20 11:22:43.435 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:43.436 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:43.436 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Start Scan
06-20 11:22:43.437 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:43.440 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:43.441 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:43.443 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:43.548 21148-21198/com.cartier.croxel.cartierApp D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=6 mClientIf=0
06-20 11:22:44.131 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.131 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.132 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.151 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.151 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.152 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.179 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.179 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.180 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.246 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.246 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.247 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.257 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.257 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.257 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.289 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.290 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.291 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.293 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.293 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.298 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.311 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.311 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.312 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.339 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.339 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.339 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.393 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.393 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.394 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.426 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.426 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.427 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.441 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.441 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.442 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.496 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.496 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.496 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.521 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.521 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.522 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.561 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.562 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.563 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.603 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.603 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.604 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.611 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.611 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.612 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.621 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.621 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.622 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.666 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:44.678 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.678 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.679 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.705 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.705 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.705 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.710 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.710 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.710 21148-21148/com.cartier.croxel.cartierApp I/arrive: scan
06-20 11:22:44.754 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:44.770 21148-21148/com.cartier.croxel.cartierApp W/arrive: do unSubscribe
06-20 11:22:44.772 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@2a411d3 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:44.772 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:44.774 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=89
06-20 11:22:44.774 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=80
06-20 11:22:44.794 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.794 21148-21198/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.796 21148-21153/com.cartier.croxel.cartierApp I/art: Do partial code cache collection, code=59KB, data=61KB
06-20 11:22:44.796 21148-21153/com.cartier.croxel.cartierApp I/art: After code cache collection, code=59KB, data=61KB
06-20 11:22:44.796 21148-21153/com.cartier.croxel.cartierApp I/art: Increasing code cache capacity to 256KB
06-20 11:22:44.802 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.802 21148-21162/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.807 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: parseFromBytes
06-20 11:22:44.807 21148-21164/com.cartier.croxel.cartierApp D/ScanRecord: first manudata for manu ID
06-20 11:22:44.813 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:44.814 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:44.815 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:44.817 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:44.817 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Stop Scan
06-20 11:22:45.709 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:45.775 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:45.787 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@26515c3 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:45.787 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:45.788 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=84
06-20 11:22:45.788 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=89
06-20 11:22:45.890 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:45.944 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:45.953 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the method
06-20 11:22:45.953 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the if
06-20 11:22:45.954 21148-21148/com.cartier.croxel.cartierApp I/arrive: do subscribe
06-20 11:22:45.960 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@544b6b1 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:45.960 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:45.961 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=80
06-20 11:22:45.962 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=84
06-20 11:22:45.973 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:45.974 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:45.974 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Start Scan
06-20 11:22:45.974 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:45.975 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:45.977 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:45.978 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.083 21148-21164/com.cartier.croxel.cartierApp D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=6 mClientIf=0
06-20 11:22:46.090 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:46.100 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:46.107 21148-21148/com.cartier.croxel.cartierApp W/arrive: do unSubscribe
06-20 11:22:46.117 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@77fae21 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:46.117 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:46.119 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=84
06-20 11:22:46.119 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=80
06-20 11:22:46.144 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.145 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.146 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.148 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.148 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Stop Scan
06-20 11:22:46.202 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:46.256 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:46.271 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the method
06-20 11:22:46.272 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the if
06-20 11:22:46.272 21148-21148/com.cartier.croxel.cartierApp I/arrive: do subscribe
06-20 11:22:46.278 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@dfce8f6 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:46.278 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:46.280 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=80
06-20 11:22:46.280 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=84
06-20 11:22:46.289 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.290 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.290 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Start Scan
06-20 11:22:46.291 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.292 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.293 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.294 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.399 21148-21198/com.cartier.croxel.cartierApp D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=6 mClientIf=0
06-20 11:22:46.407 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:46.414 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:46.423 21148-21148/com.cartier.croxel.cartierApp W/arrive: do unSubscribe
06-20 11:22:46.428 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@a0f7ba6 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:46.428 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:46.430 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=89
06-20 11:22:46.430 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=80
06-20 11:22:46.449 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.450 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.451 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.452 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.452 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Stop Scan
06-20 11:22:46.517 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:46.573 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:46.589 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the method
06-20 11:22:46.589 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the if
06-20 11:22:46.589 21148-21148/com.cartier.croxel.cartierApp I/arrive: do subscribe
06-20 11:22:46.598 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@3499ad7 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:46.598 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:46.599 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=80
06-20 11:22:46.599 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=89
06-20 11:22:46.607 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.608 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.608 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Start Scan
06-20 11:22:46.609 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.610 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.612 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.613 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.719 21148-21164/com.cartier.croxel.cartierApp D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=6 mClientIf=0
06-20 11:22:46.873 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:46.874 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:46.874 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:46.875 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:46.880 21148-21148/com.cartier.croxel.cartierApp W/arrive: do unSubscribe
06-20 11:22:46.889 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@f87ef3a nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:46.889 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:46.891 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=84
06-20 11:22:46.892 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=80
06-20 11:22:46.893 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the method
06-20 11:22:46.894 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the if
06-20 11:22:46.894 21148-21148/com.cartier.croxel.cartierApp I/arrive: do subscribe
06-20 11:22:46.900 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@ac8c960 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:46.900 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:46.901 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=80
06-20 11:22:46.901 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=84
06-20 11:22:46.916 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.917 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.917 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Start Scan
06-20 11:22:46.918 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.920 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.921 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:46.922 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.026 21148-21198/com.cartier.croxel.cartierApp D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=7 mClientIf=0
06-20 11:22:47.034 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:47.034 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:47.037 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.037 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.038 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.040 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.040 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Stop Scan
06-20 11:22:47.049 21148-21148/com.cartier.croxel.cartierApp W/arrive: do unSubscribe
06-20 11:22:47.055 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@eae4b8e nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:47.055 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:47.058 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=89
06-20 11:22:47.058 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=80
06-20 11:22:47.069 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.070 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.071 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.072 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.072 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Stop Scan
06-20 11:22:47.133 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:47.211 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:47.222 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the method
06-20 11:22:47.222 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the if
06-20 11:22:47.223 21148-21148/com.cartier.croxel.cartierApp I/arrive: do subscribe
06-20 11:22:47.230 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@d6dd29f nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:47.231 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:47.232 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=80
06-20 11:22:47.232 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=89
06-20 11:22:47.241 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.243 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.243 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Start Scan
06-20 11:22:47.244 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.245 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.247 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.248 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.353 21148-21162/com.cartier.croxel.cartierApp D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=6 mClientIf=0
06-20 11:22:47.360 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:47.361 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:47.366 21148-21148/com.cartier.croxel.cartierApp W/arrive: do unSubscribe
06-20 11:22:47.370 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@5dee4a2 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:47.370 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:47.371 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=84
06-20 11:22:47.371 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=80
06-20 11:22:47.385 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.386 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.387 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.389 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:47.389 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Stop Scan
06-20 11:22:48.844 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 0
06-20 11:22:48.978 21148-21148/com.cartier.croxel.cartierApp D/ViewRootImpl@232e253[MainActivity]: ViewPostImeInputStage processPointer 1
06-20 11:22:48.980 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the method
06-20 11:22:48.980 21148-21148/com.cartier.croxel.cartierApp I/arrive: to the if
06-20 11:22:48.980 21148-21148/com.cartier.croxel.cartierApp I/arrive: do subscribe
06-20 11:22:48.988 21148-21148/com.cartier.croxel.cartierApp V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@1a98123 nm : com.cartier.croxel.cartierApp ic=null
06-20 11:22:48.988 21148-21148/com.cartier.croxel.cartierApp I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:22:48.990 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel constructed: fd=80
06-20 11:22:48.990 21148-21148/com.cartier.croxel.cartierApp D/InputTransport: Input channel destroyed: fd=84
06-20 11:22:49.000 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:49.002 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:49.002 21148-21148/com.cartier.croxel.cartierApp D/BluetoothLeScanner: Start Scan
06-20 11:22:49.003 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:49.004 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:49.006 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:49.008 21148-21148/com.cartier.croxel.cartierApp D/BluetoothAdapter: STATE_ON
06-20 11:22:49.113 21148-21164/com.cartier.croxel.cartierApp D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=6 mClientIf=0

Actual result

As you can see in the log, in the final part the method only reach to the doOnSubscribe, but never scan again until i turn the switch on/off again

Expected result

My spected result is whenever i activate the switch, I need to scan util I can found the device

@dariuszseweryn
Copy link
Owner

Hello @leof23
You are probably hitting this issue
If that is the case the library can do nothing to prevent this behaviour. It may be feasible to emit a new BleScanException in that case or the library would need to throttle scan requests on Android 7. I will think about possible solutions.

@dariuszseweryn dariuszseweryn self-assigned this Jun 20, 2017
@dariuszseweryn dariuszseweryn added enhancement bug Bug that is caused by the library and removed enhancement labels Jun 20, 2017
@dariuszseweryn dariuszseweryn changed the title Scanning Ble Handle undocumented Android 7 scan throttle Jun 20, 2017
@leof23
Copy link
Author

leof23 commented Jun 20, 2017

yes, that was my issue, thanks for the answer

@leof23 leof23 closed this as completed Jun 20, 2017
@dariuszseweryn
Copy link
Owner

I will keep this issue opened as a reminder for me.

@dariuszseweryn dariuszseweryn added enhancement and removed bug Bug that is caused by the library labels Jun 20, 2017
@dariuszseweryn dariuszseweryn added this to the 1.4.0 milestone Jun 23, 2017
dariuszseweryn added a commit that referenced this issue Jun 27, 2017
#227
Android API 24 (7.0) introduced an undocomented “feature” that aims on applications that try to start too many scans (5+) in a short time window (30 seconds) by silently (log error only) not starting the scan. More info available here: https://blog.classycode.com/undocumented-android-7-ble-behavior-changes-d1a9bd87d983
dariuszseweryn added a commit that referenced this issue Jun 29, 2017
#227
Android API 24 (7.0) introduced an undocumented “feature” that aims on applications that try to start too many scans (5+) in a short time window (30 seconds) by silently (log error only) not starting the scan. More info available here: https://blog.classycode.com/undocumented-android-7-ble-behavior-changes-d1a9bd87d983
@dariuszseweryn
Copy link
Owner

Is available in 1.4.0-SNAPSHOT

@darrinps
Copy link

darrinps commented Sep 11, 2018

I'm seeing something similar to this:

Failed to establish connection Undocumented scan throttle (code 2147483646), suggested retry date is Wed Jul 11 11:18:06 PDT 2018
                                                                                         com.polidea.rxandroidble2.exceptions.BleScanException: Undocumented scan throttle (code 2147483646), suggested retry date is Wed Jul 11 11:18:06 PDT 2018
                                                                                             at com.polidea.rxandroidble2.internal.scan.ScanPreconditionsVerifierApi24.verify(ScanPreconditionsVerifierApi24.java:51)
                                                                                             at com.polidea.rxandroidble2.RxBleClientImpl$1.call(RxBleClientImpl.java:118)
                                                                                             at com.polidea.rxandroidble2.RxBleClientImpl$1.call(RxBleClientImpl.java:115)
                                                                                             at io.reactivex.internal.operators.observable.ObservableDefer.subscribeActual(ObservableDefer.java:32)
                                                                                             at io.reactivex.Observable.subscribe(Observable.java:12051)
                                                                                             at io.reactivex.internal.operators.observable.ObservableDoOnEach.subscribeActual(ObservableDoOnEach.java:42)
                                                                                             at io.reactivex.Observable.subscribe(Observable.java:12051)
                                                                                             at io.reactivex.internal.operators.observable.ObservableFilter.subscribeActual(ObservableFilter.java:30)
                                                                                             at io.reactivex.Observable.subscribe(Observable.java:12051)
                                                                                             at io.reactivex.internal.operators.observable.ObservableElementAtSingle.subscribeActual(ObservableElementAtSingle.java:37)
                                                                                             at io.reactivex.Single.subscribe(Single.java:3310)
                                                                                             at io.reactivex.internal.operators.single.SingleTimeout.subscribeActual(SingleTimeout.java:53)
                                                                                             at io.reactivex.Single.subscribe(Single.java:3310)
                                                                                             at io.reactivex.internal.operators.single.SingleDoOnError.subscribeActual(SingleDoOnError.java:35)
                                                                                             at io.reactivex.Single.subscribe(Single.java:3310)
                                                                                             at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34)
                                                                                             at io.reactivex.Single.subscribe(Single.java:3310)
                                                                                             at io.reactivex.internal.operators.single.SingleDefer.subscribeActual(SingleDefer.java:43)
                                                                                             at io.reactivex.Single.subscribe(Single.java:3310)

It's happening on multiple devices running on various versions of Android up to and including those running Android Pie. What I think would be nice, is if a flag could be set for RxAndroidBle that tells it to automatically scan at the suggested retry time. That time seems like it's around 10 seconds or so into the future most of the time.

@dariuszseweryn
Copy link
Owner

Feel free to add a feature request though I think it is simple to create it without bloating the library's code base by utilising .retryWhen() operator and triggering the retry when the time will pass

@devDeejay
Copy link

Make sure you are not calling the scanBluetoothDevices() method too frequently

@vegeta2102
Copy link

@devDeejay
@dariuszseweryn
What do you mean about "too frequently" calling the scanBluetoothDevices()
I am using retryWhen() to retry scan when exception for every 5 seconds.

It's look like below

.scanBleDevices(scanSetting, scanFilters)
.retryWhen {
                                it.flatMap { error ->
                                    when (error) {
                                        is BleScanException -> {
                                            Observable.timer(5000, TimeUnit.MILLISECONDS)
                                        }

and sometimes I got same error in this issue.

@vegeta2102
Copy link

Actually , I got this error


com.polidea.rxandroidble2.exceptions.BleScanException: Scan failed because application registration failed (code 6)
com.polidea.rxandroidble2.exceptions.BleScanException: Undocumented scan throttle (code 2147483646), suggested retry date is Thu Mar 21 11:03:02 GMT+09:00 2024

@dariuszseweryn
Copy link
Owner

Hey @vegeta2102

What do you mean about "too frequently" calling the scanBluetoothDevices()

Please check the merged PR above description. It has a good description and a link to source where I learned about this behaviour.

TL;DR — one can start up to 5 scans every 30 seconds.

@vegeta2102
Copy link

@dariuszseweryn
Totally understand ! Thank you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants