2016-02-13 7 views
8

Większość czasu to działa świetnie, ale czasami mam ten błąd, starając się odkryć ble urządzeń:Jak naprawić błąd Androida BLE SCAN_FAILED_APPLICATION_REGISTRATION_FAILED?

02-12 18:00:41.952 16178-16339/com.icrealtime.allie W/BleRpcConnectionFactory﹕ Starting discovery 
02-12 18:00:41.955 16178-16339/com.icrealtime.allie D/BluetoothAdapter﹕ STATE_ON 
02-12 18:00:41.957 24342-18813/? D/BtGatt.GattService﹕ registerClient() - UUID=c4a4c56d-1d10-4615-9c8d-44971bc3d6e6 
02-12 18:00:41.957 24342-24384/? E/bt_btif﹕ Register with GATT stack failed. 
02-12 18:00:41.957 24342-24384/? E/bt_btif﹕ Register with GATT stack failed. 
02-12 18:00:41.957 24342-24370/? D/BtGatt.GattService﹕ onClientRegistered() - UUID=c4a4c56d-1d10-4615-9c8d-44971bc3d6e6, clientIf=0 
02-12 18:00:41.958 16178-16190/com.icrealtime.allie D/BluetoothLeScanner﹕ onClientRegistered() - status=133 clientIf=0 
02-12 18:00:41.967 16178-16178/com.icrealtime.allie E/BleRpcConnectionFactory﹕ BLE SCAN FAILED: 2 

kod błędu 2 oznacza https://developer.android.com/reference/android/bluetooth/le/ScanCallback.html#SCAN_FAILED_APPLICATION_REGISTRATION_FAILED

wydaje się być wewnętrzny android problem, ale go może być pod wpływem mojego kodu, który robi coś złego. Jaki może być powód i jak go obejść?

PS. Nexus 9, Android 6.0.1

Odpowiedz

0

Możliwe obejście problemu polegające na programowym wyłączaniu/włączaniu Bluetooth. Kiedy masz błąd SCAN_FAILED_APPLICATION_REGISTRATION_FAILED należy wyłączyć BluetoothAdapter:

BluetoothAdapter.getDefaultAdapter().disable(); 

Wyłączenie BluetoothAdapter, zdarzenie STATE_TURNING_OFF jest zwolniony. Po uruchomieniu tego zdarzenia spróbuj ponownie połączyć się z BluetoothAdapter:

case BluetoothAdapter.STATE_OFF: 
    Log.d(TAG, "bluetooth adapter turned off"); 
    handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     Log.d(TAG, "bluetooth adapter try to enable"); 
     BluetoothAdapter.getDefaultAdapter().enable(); 
    }}, 500); 
    break; 
+0

Niestety to nie rozwiązuje problemu. Widzę ten sam problem na Androidzie 6.0.1 i 7.1. Moja aplikacja przeprowadzała ciągłe skanowanie przez długi czas; zdarzyło się to tylko dwa razy w ciągu około tygodnia. Włączanie i wyłączanie adaptera Bluetooth z poziomu aplikacji Ustawienia również nie rozwiązało problemu, ale interesujące jest to, że aplikacja Ustawienia nadal może wykonywać skanowanie Bluetooth dla pobliskich urządzeń peryferyjnych, ale wszystkie aplikacje innych firm, które przeprowadzają skanowanie, otrzymają ten kod błędu: 'SCAN_FAILED_APPLICATION_REGISTRATION_FAILED'. –