BluetoothLeScanner.startScan avec Android 6.0 n'est pas de découvrir des périphériques

Je suis en train d'utiliser la fonction BluatoothLeScanner.startScan au lieu de le obsolète un BluetoothAdapter.startLeScan.
Hier, j'ai mis à jour mon Nexus 5 pour Android 6.0 et depuis ce moment, mon application ne fonctionne plus.
J'ai tout d'abord ajouter les préférences nécessaire ACCESS_COARSE_LOCATION que l'on trouve ici https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id.
Ensuite, j'ai ajouté la permission, comme décrit ici: https://developer.android.com/training/permissions/requesting.html.
Mais à la fin, il ne semble pas travailler, de ne pas renvoyer le ble appareils.

C'est mon code:

manifeste

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.stm.sensitronapp">
          <uses-sdk android:maxSdkVersion="23"/>
          <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>

          <uses-permission android:name="android.permission.BLUETOOTH"/>
          <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
          <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>`

DeviceScanActivity

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
...

if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION)
            != PackageManager.PERMISSION_GRANTED){
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.ACCESS_COARSE_LOCATION)) {
        } else {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
                    MY_PERMISSIONS_REQUEST_ACCESS_COARSE);
        }
    }

//Device scan callback.
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            mScanCallback = new ScanCallback() {
                @Override
                public void onScanResult(int callbackType, ScanResult result) {
                    super.onScanResult(callbackType, result);
                    mLeDeviceListAdapter.addDevice(result.getDevice());
                    mLeDeviceListAdapter.notifyDataSetChanged();
                }
            };
        }
    } 
}
final BluetoothManager bluetoothManager =
            (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();

if (mBluetoothAdapter.getState() == BluetoothAdapter.STATE_ON) {
        mSwipeRefreshLayout.setRefreshing(true);
        mLeDeviceListAdapter.clear();
        mBluetoothLeScanner = mBluetoothAdapter.getBluetoothLeScanner();
        if(ContextCompat.checkSelfPermission(this,
                    Manifest.permission.ACCESS_COARSE_LOCATION ) == PackageManager.PERMISSION_GRANTED) {
                mBluetoothLeScanner.startScan(mScanCallback);
            }
        }

EDIT: pour résoudre ce problème, je ne me suis tourné sur le GPS. Il est facile de le faire par programmation dans de cette façon.

J'ai le même problème. Avez-vous trouvé toutes les solutions de contournement? Je pense que je vais essayer la nouvelle api d'analyse, mais c'est une douleur pour maintenir la compatibilité entre les deux puisqu'ils travaillent tellement différent.
Oui, regardez ici, il y a la solution: Bluetooth Low Energy startScan sur Android 6.0 ne pas rechercher les périphériques Cependant, la solution est la suivante: ajouter des autorisations dans le manifeste, ajouter des autorisations à l'exécution dans l'activité avec la ScanDevice, allumez le GPS. Est incroyable de penser mais mon problème est le GPS off
Je viens de tester avec le GPS allumé et cela a fonctionné (j'étais sur une tablette qui avait éteint).. C'est fou que nous devons avoir le GPS activé pour l'analyse de BLE dispositifs, ce qui si l'appareil ne dispose même pas d'une puce GPS? Un bug a besoin d'obtenir immédiatement remis. Je pense que le fitbit les gars et les autres à faire des BLE appareils pour les masses qui aurait frappé google avec ces questions déjà.
WTF, activer le GPS sur Android 6.0 rend le scanner de trouver BLE appareils. Je comprends maintenant pourquoi la permission ACCESS_COARSE_LOCATION est nécessaire. Google, WTF?!?

OriginalL'auteur Jacopo Tosi | 2015-10-08